Skip to content

Commit 31c1aa0

Browse files
committed
Use non-global app for db tests.
1 parent d376e2f commit 31c1aa0

1 file changed

Lines changed: 24 additions & 17 deletions

File tree

integration/test_db.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,27 @@ def integration_conf(request):
3434
return conftest.integration_conf(request)
3535

3636

37-
@pytest.fixture(autouse=True, scope='module')
38-
def default_app(request):
37+
@pytest.fixture(scope='module')
38+
def app(request):
3939
cred, project_id = integration_conf(request)
4040
ops = {
4141
'databaseURL' : 'https://{0}.firebaseio.com'.format(project_id),
4242
}
43-
return firebase_admin.initialize_app(cred, ops)
43+
return firebase_admin.initialize_app(cred, ops, name='integration-db')
44+
45+
46+
@pytest.fixture(scope='module', autouse=True)
47+
def default_app(request):
48+
# Overwrites the default_app fixture in conftest.py.
49+
# This test suite should not use the default app. Use the app fixture instead.
50+
pass
4451

4552

4653
@pytest.fixture(scope='module')
47-
def update_rules():
54+
def update_rules(app):
4855
with open(testutils.resource_filename('dinosaurs_index.json')) as rules_file:
4956
new_rules = json.load(rules_file)
50-
client = db.reference()._client
57+
client = db.reference('', app)._client
5158
rules = client.body('get', '/.settings/rules.json')
5259
existing = rules.get('rules')
5360
if existing != new_rules:
@@ -60,7 +67,7 @@ def testdata():
6067
return json.load(dino_file)
6168

6269
@pytest.fixture(scope='module')
63-
def testref(update_rules, testdata):
70+
def testref(update_rules, testdata, app):
6471
"""Adds the necessary DB indices, and sets the initial values.
6572
6673
This fixture is attached to the module scope, and therefore is guaranteed to run only once
@@ -70,7 +77,7 @@ def testref(update_rules, testdata):
7077
Reference: A reference to the test dinosaur database.
7178
"""
7279
del update_rules
73-
ref = db.reference('_adminsdk/python/dinodb')
80+
ref = db.reference('_adminsdk/python/dinodb', app)
7481
ref.set(testdata)
7582
return ref
7683

@@ -347,18 +354,18 @@ def none_override_app(request, update_rules):
347354
class TestAuthVariableOverride(object):
348355
"""Test cases for database auth variable overrides."""
349356

350-
def init_ref(self, path):
351-
admin_ref = db.reference(path)
357+
def init_ref(self, path, app):
358+
admin_ref = db.reference(path, app)
352359
admin_ref.set('test')
353360
assert admin_ref.get() == 'test'
354361

355362
def check_permission_error(self, excinfo):
356363
assert isinstance(excinfo.value, db.ApiCallError)
357364
assert 'Reason: Permission denied' in str(excinfo.value)
358365

359-
def test_no_access(self, override_app):
366+
def test_no_access(self, app, override_app):
360367
path = '_adminsdk/python/admin'
361-
self.init_ref(path)
368+
self.init_ref(path, app)
362369
user_ref = db.reference(path, override_app)
363370
with pytest.raises(db.ApiCallError) as excinfo:
364371
assert user_ref.get()
@@ -368,18 +375,18 @@ def test_no_access(self, override_app):
368375
user_ref.set('test2')
369376
self.check_permission_error(excinfo)
370377

371-
def test_read(self, override_app):
378+
def test_read(self, app, override_app):
372379
path = '_adminsdk/python/protected/user2'
373-
self.init_ref(path)
380+
self.init_ref(path, app)
374381
user_ref = db.reference(path, override_app)
375382
assert user_ref.get() == 'test'
376383
with pytest.raises(db.ApiCallError) as excinfo:
377384
user_ref.set('test2')
378385
self.check_permission_error(excinfo)
379386

380-
def test_read_write(self, override_app):
387+
def test_read_write(self, app, override_app):
381388
path = '_adminsdk/python/protected/user1'
382-
self.init_ref(path)
389+
self.init_ref(path, app)
383390
user_ref = db.reference(path, override_app)
384391
assert user_ref.get() == 'test'
385392
user_ref.set('test2')
@@ -391,9 +398,9 @@ def test_query(self, override_app):
391398
user_ref.order_by_key().limit_to_first(2).get()
392399
self.check_permission_error(excinfo)
393400

394-
def test_none_auth_override(self, none_override_app):
401+
def test_none_auth_override(self, app, none_override_app):
395402
path = '_adminsdk/python/public'
396-
self.init_ref(path)
403+
self.init_ref(path, app)
397404
public_ref = db.reference(path, none_override_app)
398405
assert public_ref.get() == 'test'
399406

0 commit comments

Comments
 (0)