class TestFirebaseApp(object): """Test cases for App initialization and life cycle.""" invalid_credentials = [ '', 'foo', 0, 1, dict(), list(), tuple(), True, False ] invalid_options = ['', 0, 1, list(), tuple(), True, False] invalid_names = [None, '', 0, 1, dict(), list(), tuple(), True, False] invalid_apps = [ None, '', 0, 1, dict(), list(), tuple(), True, False, firebase_admin.App('uninitialized', CREDENTIAL, {}) ] def teardown_method(self): testutils.cleanup_apps() def test_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential) assert firebase_admin._DEFAULT_APP_NAME == app.name if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential) def test_non_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential, name='myApp') assert app.name == 'myApp' if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential, name='myApp') @pytest.mark.parametrize('cred', invalid_credentials) def test_app_init_with_invalid_credential(self, cred): with pytest.raises(ValueError): firebase_admin.initialize_app(cred) @pytest.mark.parametrize('options', invalid_options) def test_app_init_with_invalid_options(self, options): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, options=options) @pytest.mark.parametrize('name', invalid_names) def test_app_init_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, name=name) def test_app_get(self, init_app): assert init_app is firebase_admin.get_app(init_app.name) @pytest.mark.parametrize('args', [(), ('myApp', )], ids=['DefaultApp', 'CustomApp']) def test_non_existing_app_get(self, args): with pytest.raises(ValueError): firebase_admin.get_app(*args) @pytest.mark.parametrize('name', invalid_names) def test_app_get_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.get_app(name) @pytest.mark.parametrize('app', invalid_apps) def test_invalid_app_delete(self, app): with pytest.raises(ValueError): firebase_admin.delete_app(app) def test_app_delete(self, init_app): assert firebase_admin.get_app(init_app.name) is init_app firebase_admin.delete_app(init_app) with pytest.raises(ValueError): firebase_admin.get_app(init_app.name) with pytest.raises(ValueError): firebase_admin.delete_app(init_app) def test_get_token(self, init_app): mock_response = { 'access_token': 'mock_access_token_1', 'expires_in': 3600 } credentials._request = testutils.MockRequest(200, json.dumps(mock_response)) assert init_app._get_token() == 'mock_access_token_1' mock_response = { 'access_token': 'mock_access_token_2', 'expires_in': 3600 } credentials._request = testutils.MockRequest(200, json.dumps(mock_response)) expiry = init_app._token.expiry # should return same token from cache firebase_admin._clock = lambda: expiry - datetime.timedelta( seconds=firebase_admin._CLOCK_SKEW_SECONDS + 1) assert init_app._get_token() == 'mock_access_token_1' # should return new token from RPC call firebase_admin._clock = lambda: expiry - datetime.timedelta( seconds=firebase_admin._CLOCK_SKEW_SECONDS) assert init_app._get_token() == 'mock_access_token_2'
class TestFirebaseApp(object): """Test cases for App initialization and life cycle.""" invalid_credentials = ['', 'foo', 0, 1, dict(), list(), tuple(), True, False] invalid_options = ['', 0, 1, list(), tuple(), True, False] invalid_names = [None, '', 0, 1, dict(), list(), tuple(), True, False] invalid_apps = [ None, '', 0, 1, dict(), list(), tuple(), True, False, firebase_admin.App('uninitialized', CREDENTIAL, {}) ] def teardown_method(self): testutils.cleanup_apps() def test_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential) assert firebase_admin._DEFAULT_APP_NAME == app.name if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential) def test_non_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential, name='myApp') assert app.name == 'myApp' if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential, name='myApp') @pytest.mark.parametrize('cred', invalid_credentials) def test_app_init_with_invalid_credential(self, cred): with pytest.raises(ValueError): firebase_admin.initialize_app(cred) @pytest.mark.parametrize('options', invalid_options) def test_app_init_with_invalid_options(self, options): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, options=options) @pytest.mark.parametrize('name', invalid_names) def test_app_init_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, name=name) def test_app_get(self, init_app): assert init_app is firebase_admin.get_app(init_app.name) @pytest.mark.parametrize('args', [(), ('myApp',)], ids=['DefaultApp', 'CustomApp']) def test_non_existing_app_get(self, args): with pytest.raises(ValueError): firebase_admin.get_app(*args) @pytest.mark.parametrize('name', invalid_names) def test_app_get_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.get_app(name) @pytest.mark.parametrize('app', invalid_apps) def test_invalid_app_delete(self, app): with pytest.raises(ValueError): firebase_admin.delete_app(app) def test_app_delete(self, init_app): assert firebase_admin.get_app(init_app.name) is init_app firebase_admin.delete_app(init_app) with pytest.raises(ValueError): firebase_admin.get_app(init_app.name) with pytest.raises(ValueError): firebase_admin.delete_app(init_app) def test_app_services(self, init_app): service = utils.get_app_service(init_app, 'test.service', AppService) assert isinstance(service, AppService) service2 = utils.get_app_service(init_app, 'test.service', AppService) assert service is service2 firebase_admin.delete_app(init_app) with pytest.raises(ValueError): utils.get_app_service(init_app, 'test.service', AppService)
class TestFirebaseApp(object): """Test cases for App initialization and life cycle.""" invalid_credentials = [ '', 'foo', 0, 1, dict(), list(), tuple(), True, False ] invalid_options = ['', 0, 1, list(), tuple(), True, False] invalid_names = [None, '', 0, 1, dict(), list(), tuple(), True, False] invalid_apps = [ None, '', 0, 1, dict(), list(), tuple(), True, False, firebase_admin.App('uninitialized', CREDENTIAL, {}) ] def teardown_method(self): testutils.cleanup_apps() def test_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential) assert firebase_admin._DEFAULT_APP_NAME == app.name if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential) def test_non_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential, name='myApp') assert app.name == 'myApp' if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential, name='myApp') @pytest.mark.parametrize('cred', invalid_credentials) def test_app_init_with_invalid_credential(self, cred): with pytest.raises(ValueError): firebase_admin.initialize_app(cred) @pytest.mark.parametrize('options', invalid_options) def test_app_init_with_invalid_options(self, options): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, options=options) @pytest.mark.parametrize('name', invalid_names) def test_app_init_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, name=name) def test_project_id_from_options(self, app_credential): app = firebase_admin.initialize_app( app_credential, options={'projectId': 'test-project'}, name='myApp') assert app.project_id == 'test-project' def test_project_id_from_credentials(self): app = firebase_admin.initialize_app(CREDENTIAL, name='myApp') assert app.project_id == 'mock-project-id' def test_project_id_from_environment(self): project_id = os.environ.get(GCLOUD_PROJECT) os.environ[GCLOUD_PROJECT] = 'env-project' try: app = firebase_admin.initialize_app(testutils.MockCredential(), name='myApp') assert app.project_id == 'env-project' finally: if project_id: os.environ[GCLOUD_PROJECT] = project_id else: del os.environ[GCLOUD_PROJECT] def test_no_project_id(self): project_id = os.environ.get(GCLOUD_PROJECT) if project_id: del os.environ[GCLOUD_PROJECT] try: app = firebase_admin.initialize_app(testutils.MockCredential(), name='myApp') assert app.project_id is None finally: if project_id: os.environ[GCLOUD_PROJECT] = project_id def test_app_get(self, init_app): assert init_app is firebase_admin.get_app(init_app.name) @pytest.mark.parametrize('args', [(), ('myApp', )], ids=['DefaultApp', 'CustomApp']) def test_non_existing_app_get(self, args): with pytest.raises(ValueError): firebase_admin.get_app(*args) @pytest.mark.parametrize('name', invalid_names) def test_app_get_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.get_app(name) @pytest.mark.parametrize('app', invalid_apps) def test_invalid_app_delete(self, app): with pytest.raises(ValueError): firebase_admin.delete_app(app) def test_app_delete(self, init_app): assert firebase_admin.get_app(init_app.name) is init_app firebase_admin.delete_app(init_app) with pytest.raises(ValueError): firebase_admin.get_app(init_app.name) with pytest.raises(ValueError): firebase_admin.delete_app(init_app) def test_app_services(self, init_app): service = _utils.get_app_service(init_app, 'test.service', AppService) assert isinstance(service, AppService) service2 = _utils.get_app_service(init_app, 'test.service', AppService) assert service is service2 firebase_admin.delete_app(init_app) with pytest.raises(ValueError): _utils.get_app_service(init_app, 'test.service', AppService) @pytest.mark.parametrize( 'arg', [0, 1, True, False, 'str', list(), dict(), tuple()]) def test_app_services_invalid_arg(self, arg): with pytest.raises(ValueError): _utils.get_app_service(arg, 'test.service', AppService) def test_app_services_invalid_app(self, init_app): app = firebase_admin.App(init_app.name, init_app.credential, {}) with pytest.raises(ValueError): _utils.get_app_service(app, 'test.service', AppService)
def test_app_services_invalid_app(self, init_app): app = firebase_admin.App(init_app.name, init_app.credential, {}) with pytest.raises(ValueError): _utils.get_app_service(app, 'test.service', AppService)
class TestFirebaseApp(object): """Test cases for App initialization and life cycle.""" invalid_credentials = [ '', 'foo', 0, 1, dict(), list(), tuple(), True, False ] invalid_options = ['', 0, 1, list(), tuple(), True, False] invalid_names = [None, '', 0, 1, dict(), list(), tuple(), True, False] invalid_apps = [ None, '', 0, 1, dict(), list(), tuple(), True, False, firebase_admin.App('uninitialized', CREDENTIAL, {}) ] def teardown_method(self): testutils.cleanup_apps() def test_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential) assert firebase_admin._DEFAULT_APP_NAME == app.name if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential) def test_non_default_app_init(self, app_credential): app = firebase_admin.initialize_app(app_credential, name='myApp') assert app.name == 'myApp' if app_credential: assert app_credential is app.credential else: assert isinstance(app.credential, credentials.ApplicationDefault) with pytest.raises(ValueError): firebase_admin.initialize_app(app_credential, name='myApp') @pytest.mark.parametrize('cred', invalid_credentials) def test_app_init_with_invalid_credential(self, cred): with pytest.raises(ValueError): firebase_admin.initialize_app(cred) @pytest.mark.parametrize('options', invalid_options) def test_app_init_with_invalid_options(self, options): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, options=options) @pytest.mark.parametrize('name', invalid_names) def test_app_init_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, name=name) @pytest.mark.parametrize('bad_file_name', [ 'firebase_config_empty.json', 'firebase_config_invalid.json', 'no_such_file' ]) def test_app_init_with_invalid_config_file(self, bad_file_name): config_old = set_config_env(bad_file_name) with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL) revert_config_env(config_old) def test_app_init_with_invalid_config_string(self): config_old = set_config_env('{,,') with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL) revert_config_env(config_old) @pytest.mark.parametrize('env_test_case', env_options_test_cases, ids=[x.name for x in env_options_test_cases], indirect=['env_test_case']) def test_app_init_with_default_config(self, env_test_case): app = firebase_admin.initialize_app(CREDENTIAL, options=env_test_case.init_options) assert app.options._options == env_test_case.want_options def test_project_id_from_options(self, app_credential): app = firebase_admin.initialize_app( app_credential, options={'projectId': 'test-project'}, name='myApp') assert app.project_id == 'test-project' def test_project_id_from_credentials(self): app = firebase_admin.initialize_app(CREDENTIAL, name='myApp') assert app.project_id == 'mock-project-id' def test_project_id_from_environment(self): variables = ['GOOGLE_CLOUD_PROJECT', 'GCLOUD_PROJECT'] for idx, var in enumerate(variables): old_project_id = os.environ.get(var) new_project_id = 'env-project-{0}'.format(idx) os.environ[var] = new_project_id try: app = firebase_admin.initialize_app( testutils.MockCredential(), name='myApp{0}'.format(var)) assert app.project_id == new_project_id finally: if old_project_id: os.environ[var] = old_project_id else: del os.environ[var] def test_no_project_id(self): def evaluate(): app = firebase_admin.initialize_app(testutils.MockCredential(), name='myApp') assert app.project_id is None testutils.run_without_project_id(evaluate) def test_non_string_project_id(self): options = {'projectId': {'key': 'not a string'}} with pytest.raises(ValueError): firebase_admin.initialize_app(CREDENTIAL, options=options) def test_app_get(self, init_app): assert init_app is firebase_admin.get_app(init_app.name) @pytest.mark.parametrize('args', [(), ('myApp', )], ids=['DefaultApp', 'CustomApp']) def test_non_existing_app_get(self, args): with pytest.raises(ValueError): firebase_admin.get_app(*args) @pytest.mark.parametrize('name', invalid_names) def test_app_get_with_invalid_name(self, name): with pytest.raises(ValueError): firebase_admin.get_app(name) @pytest.mark.parametrize('app', invalid_apps) def test_invalid_app_delete(self, app): with pytest.raises(ValueError): firebase_admin.delete_app(app) def test_app_delete(self, init_app): assert firebase_admin.get_app(init_app.name) is init_app firebase_admin.delete_app(init_app) with pytest.raises(ValueError): firebase_admin.get_app(init_app.name) with pytest.raises(ValueError): firebase_admin.delete_app(init_app) def test_app_services(self, init_app): service = _utils.get_app_service(init_app, 'test.service', AppService) assert isinstance(service, AppService) service2 = _utils.get_app_service(init_app, 'test.service', AppService) assert service is service2 firebase_admin.delete_app(init_app) with pytest.raises(ValueError): _utils.get_app_service(init_app, 'test.service', AppService) @pytest.mark.parametrize( 'arg', [0, 1, True, False, 'str', list(), dict(), tuple()]) def test_app_services_invalid_arg(self, arg): with pytest.raises(ValueError): _utils.get_app_service(arg, 'test.service', AppService) def test_app_services_invalid_app(self, init_app): app = firebase_admin.App(init_app.name, init_app.credential, {}) with pytest.raises(ValueError): _utils.get_app_service(app, 'test.service', AppService)