1616import collections
1717import datetime
1818import json
19+ import sys
1920
2021import pytest
2122from requests import adapters
@@ -148,6 +149,7 @@ def test_get_value(self, data):
148149 assert recorder [0 ].method == 'GET'
149150 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json'
150151 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
152+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
151153
152154 @pytest .mark .parametrize ('data' , valid_values )
153155 def test_order_by_query (self , data ):
@@ -233,7 +235,7 @@ def test_update_children_default(self):
233235 assert len (recorder ) is 0
234236
235237 @pytest .mark .parametrize ('update' , [
236- None , {}, {None :'foo' }, {'foo' : None }, '' , 'foo' , 0 , 1 , list (), tuple ()
238+ None , {}, {None :'foo' }, {'foo' : None }, '' , 'foo' , 0 , 1 , list (), tuple (), _Object ()
237239 ])
238240 def test_set_invalid_update (self , update ):
239241 ref = db .reference ('/test' )
@@ -253,6 +255,7 @@ def test_push(self, data):
253255 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json'
254256 assert json .loads (recorder [0 ].body .decode ()) == data
255257 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
258+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
256259
257260 def test_push_default (self ):
258261 ref = db .reference ('/test' )
@@ -263,6 +266,7 @@ def test_push_default(self):
263266 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json'
264267 assert json .loads (recorder [0 ].body .decode ()) == ''
265268 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
269+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
266270
267271 def test_push_none_value (self ):
268272 ref = db .reference ('/test' )
@@ -278,6 +282,7 @@ def test_delete(self):
278282 assert recorder [0 ].method == 'DELETE'
279283 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json'
280284 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
285+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
281286
282287 def test_get_root_reference (self ):
283288 ref = db .reference ()
@@ -344,6 +349,7 @@ def test_get_value(self):
344349 assert recorder [0 ].method == 'GET'
345350 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json?' + query_str
346351 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
352+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
347353
348354 def test_set_value (self ):
349355 ref = db .reference ('/test' )
@@ -356,6 +362,7 @@ def test_set_value(self):
356362 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json?' + query_str
357363 assert json .loads (recorder [0 ].body .decode ()) == data
358364 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
365+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
359366
360367 def test_order_by_query (self ):
361368 ref = db .reference ('/test' )
@@ -367,6 +374,7 @@ def test_order_by_query(self):
367374 assert recorder [0 ].method == 'GET'
368375 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json?' + query_str
369376 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
377+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
370378
371379 def test_range_query (self ):
372380 ref = db .reference ('/test' )
@@ -379,6 +387,7 @@ def test_range_query(self):
379387 assert recorder [0 ].method == 'GET'
380388 assert recorder [0 ].url == 'https://test.firebaseio.com/test.json?' + query_str
381389 assert recorder [0 ].headers ['Authorization' ] == 'Bearer mock-token'
390+ assert recorder [0 ].headers ['User-Agent' ] == db ._USER_AGENT
382391
383392
384393class TestDatabseInitialization (object ):
@@ -407,7 +416,7 @@ def test_valid_db_url(self, url):
407416
408417 @pytest .mark .parametrize ('url' , [
409418 None , '' , 'foo' , 'http://test.firebaseio.com' , 'https://google.com' ,
410- True , False , 1 , 0 , dict (), list (), tuple (),
419+ True , False , 1 , 0 , dict (), list (), tuple (), _Object ()
411420 ])
412421 def test_invalid_db_url (self , url ):
413422 firebase_admin .initialize_app (credentials .Base (), {'databaseURL' : url })
@@ -428,7 +437,8 @@ def test_valid_auth_override(self, override):
428437 encoded = json .dumps (override , separators = (',' , ':' ))
429438 assert ref ._client ._auth_override == 'auth_variable_override={0}' .format (encoded )
430439
431- @pytest .mark .parametrize ('override' , ['' , 'foo' , 0 , 1 , True , False , list (), tuple ()])
440+ @pytest .mark .parametrize ('override' , [
441+ '' , 'foo' , 0 , 1 , True , False , list (), tuple (), _Object ()])
432442 def test_invalid_auth_override (self , override ):
433443 firebase_admin .initialize_app (credentials .Base (), {
434444 'databaseURL' : 'https://test.firebaseio.com' ,
@@ -448,6 +458,11 @@ def test_app_delete(self):
448458 with pytest .raises (ValueError ):
449459 db .reference ()
450460
461+ def test_user_agent_format (self ):
462+ expected = 'Firebase/HTTP/{0}/{1}.{2}/AdminPython' .format (
463+ firebase_admin .__version__ , sys .version_info .major , sys .version_info .minor )
464+ assert db ._USER_AGENT == expected
465+
451466
452467@pytest .fixture (params = ['foo' , '$key' , '$value' ])
453468def initquery (request ):
@@ -472,7 +487,7 @@ class TestQuery(object):
472487 ref = db .Reference (path = 'foo' )
473488
474489 @pytest .mark .parametrize ('path' , [
475- '' , None , '/' , '/foo' , 0 , 1 , True , False , dict (), list (), tuple (),
490+ '' , None , '/' , '/foo' , 0 , 1 , True , False , dict (), list (), tuple (), _Object (),
476491 '$foo' , '.foo' , '#foo' , '[foo' , 'foo]' , '$key' , '$value' , '$priority'
477492 ])
478493 def test_invalid_path (self , path ):
@@ -519,7 +534,7 @@ def test_multiple_limits(self):
519534 with pytest .raises (ValueError ):
520535 query .limit_to_first (1 )
521536
522- @pytest .mark .parametrize ('limit' , [None , - 1 , 'foo' , 1.2 , list (), dict (), tuple ()])
537+ @pytest .mark .parametrize ('limit' , [None , - 1 , 'foo' , 1.2 , list (), dict (), tuple (), _Object () ])
523538 def test_invalid_limit (self , limit ):
524539 query = self .ref .order_by_child ('foo' )
525540 with pytest .raises (ValueError ):
0 commit comments