Skip to content

Commit fc8b8d4

Browse files
committed
Refactor and add unit test
1 parent a96edc8 commit fc8b8d4

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

firebase_admin/__init__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,12 @@ def __init__(self, name, credential, options):
210210
self._name = name
211211

212212
if isinstance(credential, GoogleAuthCredentials):
213-
credential = credentials._ExternalCredentials(credential)
214-
if not isinstance(credential, credentials.Base):
213+
self._credential = credentials._ExternalCredentials(credential) # pylint: disable=protected-access
214+
elif isinstance(credential, credentials.Base):
215+
self._credential = credential
216+
else:
215217
raise ValueError('Illegal Firebase credential provided. App must be initialized '
216218
'with a valid credential instance.')
217-
self._credential = credential
218219
self._options = _AppOptions(options)
219220
self._lock = threading.RLock()
220221
self._services = {}

tests/test_app.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,16 @@ def test_non_default_app_init(self, app_credential):
246246
with pytest.raises(ValueError):
247247
firebase_admin.initialize_app(app_credential, name='myApp')
248248

249+
def test_app_init_with_google_auth_cred(self):
250+
cred = testutils.MockGoogleCredential()
251+
assert isinstance(cred, credentials.GoogleAuthCredentials)
252+
app = firebase_admin.initialize_app(cred)
253+
assert cred is app.credential.get_credential()
254+
assert isinstance(app.credential, credentials.Base)
255+
assert isinstance(app.credential, credentials._ExternalCredentials)
256+
with pytest.raises(ValueError):
257+
firebase_admin.initialize_app(app_credential)
258+
249259
@pytest.mark.parametrize('cred', invalid_credentials)
250260
def test_app_init_with_invalid_credential(self, cred):
251261
with pytest.raises(ValueError):

0 commit comments

Comments
 (0)