|  | 
| 17 | 17 | import os | 
| 18 | 18 | 
 | 
| 19 | 19 | import pytest | 
|  | 20 | +from google.auth.exceptions import DefaultCredentialsError | 
| 20 | 21 | 
 | 
| 21 | 22 | import firebase_admin | 
| 22 | 23 | from firebase_admin import credentials | 
| @@ -315,6 +316,27 @@ def evaluate(): | 
| 315 | 316 |             assert app.project_id is None | 
| 316 | 317 |         testutils.run_without_project_id(evaluate) | 
| 317 | 318 | 
 | 
|  | 319 | +    def test_no_project_id_from_environment(self, app_credential): | 
|  | 320 | +        default_env = 'GOOGLE_APPLICATION_CREDENTIALS' | 
|  | 321 | +        gcloud_env = 'CLOUDSDK_CONFIG' | 
|  | 322 | +        def evaluate(): | 
|  | 323 | +            app = firebase_admin.initialize_app(app_credential, name='myApp') | 
|  | 324 | +            app._credential._g_credential = None | 
|  | 325 | +            old_gcloud_var = os.environ.get(gcloud_env) | 
|  | 326 | +            os.environ[gcloud_env] = '' | 
|  | 327 | +            old_default_var = os.environ.get(default_env) | 
|  | 328 | +            if old_default_var: | 
|  | 329 | +                del os.environ[default_env] | 
|  | 330 | +            with pytest.raises((AttributeError, DefaultCredentialsError)): | 
|  | 331 | +                project_id = app._credential.project_id | 
|  | 332 | +            project_id = app.project_id | 
|  | 333 | +            if old_default_var: | 
|  | 334 | +                os.environ[default_env] = old_default_var | 
|  | 335 | +            if old_gcloud_var: | 
|  | 336 | +                os.environ[gcloud_env] = old_gcloud_var | 
|  | 337 | +            assert project_id is None | 
|  | 338 | +        testutils.run_without_project_id(evaluate) | 
|  | 339 | + | 
| 318 | 340 |     def test_non_string_project_id(self): | 
| 319 | 341 |         options = {'projectId': {'key': 'not a string'}} | 
| 320 | 342 |         with pytest.raises(ValueError): | 
|  | 
0 commit comments