10000 fix: Deferred credential loading until emulator URL is determined · firebase/firebase-admin-python@a8259ac · GitHub
[go: up one dir, main page]

Skip to content

Commit a8259ac

Browse files
committed
fix: Deferred credential loading until emulator URL is determined
1 parent 31e8186 commit a8259ac

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

firebase_admin/db.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -806,15 +806,17 @@ def get_client(self, db_url=None):
806806
'Invalid database URL: "{0}". Database URL must be a wellformed '
807807
'URL string.'.format(db_url))
808808

809-
base_url = 'https://{0}'.format(parsed_url.netloc)
810-
params = {}
811-
credential = self._credential.get_credential()
812-
813809
emulator_config = self._get_emulator_config(parsed_url)
814810
if emulator_config:
815-
base_url = emulator_config.base_url
816-
params['ns'] = emulator_config.namespace
817811
credential = _EmulatorAdminCredentials()
812+
base_url = emulator_config.base_url
813+
params = {'ns': emulator_config.namespace}
814+
else:
815+
# Defer credential lookup until we are certain it's going to be prod connection.
816+
credential = self._credential.get_credential()
817+
base_url = 'https://{0}'.format(parsed_url.netloc)
818+
params = {}
819+
818820

819821
if self._auth_override:
820822
params['auth_variable_override'] = self._auth_override

tests/test_db.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,10 @@ def test_parse_db_url(self, url, emulator_host, expected_base_url, expected_name
729729
ref = db.reference()
730730
assert ref._client._base_url == expected_base_url
731731
assert ref._client.params.get('ns') == expected_namespace
732+
if expected_base_url.startswith('http://localhost'):
733+
assert isinstance(ref._client.credential, db._EmulatorAdminCredentials)
734+
else:
735+
assert isinstance(ref._client.credential, testutils.MockGoogleCredential)
732736
finally:
733737
if _EMULATOR_HOST_ENV_VAR in os.environ:
734738
del os.environ[_EMULATOR_HOST_ENV_VAR]

0 commit comments

Comments
 (0)
0