Skip to content
Prev Previous commit
Next Next commit
add integration tests
  • Loading branch information
pragatimodi committed Dec 22, 2023
commit aeacec520c2798f177bc3b593fb85c7ba14da2a8
33 changes: 14 additions & 19 deletions integration/test_project_config_mgt.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,8 @@
from firebase_admin.multi_factor_config_mgt import MultiFactorServerConfig
from firebase_admin.multi_factor_config_mgt import ProviderConfig
from firebase_admin.multi_factor_config_mgt import TOTPProviderConfig

ADJACENT_INTERVALS = 5

@pytest.fixture(scope='module')
def sample_mfa_config():
mfa_config = {
'providerConfigs': [
{
'state': 'ENABLED',
'totpProviderConfig': {
'adjacentIntervals': ADJACENT_INTERVALS
}
}
]
}
return mfa_config

from firebase_admin.email_privacy_config_mgt import EmailPrivacyConfig
from firebase_admin.email_privacy_config_mgt import EmailPrivacyServerConfig

def test_update_project_config():
mfa_object = MultiFactorConfig(
Expand All @@ -52,14 +37,20 @@ def test_update_project_config():
)
]
)
project_config = update_project_config(multi_factor_config=mfa_object)
email_privacy_object = EmailPrivacyConfig(
enable_improved_email_privacy=True
)
project_config = update_project_config(
multi_factor_config=mfa_object, email_privacy_config=email_privacy_object)
_assert_multi_factor_config(project_config.multi_factor_config)
_assert_email_privacy_config(project_config.email_privacy_config)


def test_get_project():
project_config = get_project_config()
assert isinstance(project_config, ProjectConfig)
_assert_multi_factor_config(project_config.multi_factor_config)
_assert_email_privacy_config(project_config.email_privacy_config)

def _assert_multi_factor_config(multi_factor_config):
assert isinstance(multi_factor_config, MultiFactorServerConfig)
Expand All @@ -72,4 +63,8 @@ def _assert_multi_factor_config(multi_factor_config):
assert isinstance(provider_config.totp_provider_config,
MultiFactorServerConfig.ProviderServerConfig
.TOTPProviderServerConfig)
assert provider_config.totp_provider_config.adjacent_intervals == ADJACENT_INTERVALS
assert provider_config.totp_provider_config.adjacent_intervals == 5

def _assert_email_privacy_config(email_privacy_config):
assert isinstance(email_privacy_config, EmailPrivacyServerConfig)
assert email_privacy_config.enable_improved_email_privacy is True
47 changes: 33 additions & 14 deletions integration/test_tenant_mgt.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,12 @@

from firebase_admin import auth
from firebase_admin import tenant_mgt
from firebase_admin import multi_factor_config_mgt
from firebase_admin.multi_factor_config_mgt import MultiFactorConfig
from firebase_admin.multi_factor_config_mgt import MultiFactorServerConfig
from firebase_admin.multi_factor_config_mgt import ProviderConfig
from firebase_admin.multi_factor_config_mgt import TOTPProviderConfig
from firebase_admin.email_privacy_config_mgt import EmailPrivacyConfig
from firebase_admin.email_privacy_config_mgt import EmailPrivacyServerConfig
from integration import test_auth


Expand All @@ -36,35 +41,44 @@

@pytest.fixture(scope='module')
def sample_tenant():
mfa_object = multi_factor_config_mgt.MultiFactorConfig(
provider_configs=[multi_factor_config_mgt.ProviderConfig(
state=multi_factor_config_mgt.ProviderConfig.State.ENABLED,
totp_provider_config=multi_factor_config_mgt.TOTPProviderConfig(
mfa_object = MultiFactorConfig(
provider_configs=[ProviderConfig(
state=ProviderConfig.State.ENABLED,
totp_provider_config=TOTPProviderConfig(
adjacent_intervals=5
)
)]
)
email_privacy_object = EmailPrivacyConfig(
enable_improved_email_privacy=True
)
tenant = tenant_mgt.create_tenant(
display_name='admin-python-tenant',
allow_password_sign_up=True,
enable_email_link_sign_in=True,
multi_factor_config=mfa_object)
multi_factor_config=mfa_object,
email_privacy_config=email_privacy_object)
yield tenant
tenant_mgt.delete_tenant(tenant.tenant_id)

def _assert_multi_factor_config(mfa_config):
assert isinstance(mfa_config, multi_factor_config_mgt.MultiFactorServerConfig)
assert isinstance(mfa_config, MultiFactorServerConfig)
assert len(mfa_config.provider_configs) == 1
assert isinstance(mfa_config.provider_configs, list)
for provider_config in mfa_config.provider_configs:
assert isinstance(provider_config, multi_factor_config_mgt.MultiFactorServerConfig.\
assert isinstance(provider_config, MultiFactorServerConfig.\
ProviderServerConfig)
assert provider_config.state == 'ENABLED'
assert isinstance(provider_config.totp_provider_config,
multi_factor_config_mgt.MultiFactorServerConfig.ProviderServerConfig
MultiFactorServerConfig.ProviderServerConfig
.TOTPProviderServerConfig)
assert provider_config.totp_provider_config.adjacent_intervals == 5


def _assert_email_privacy_config(email_privacy_config):
assert isinstance(email_privacy_config, EmailPrivacyServerConfig)
assert email_privacy_config.enable_improved_email_privacy is True

@pytest.fixture(scope='module')
def tenant_user(sample_tenant):
client = tenant_mgt.auth_for_tenant(sample_tenant.tenant_id)
Expand All @@ -82,6 +96,7 @@ def test_get_tenant(sample_tenant):
assert tenant.allow_password_sign_up is True
assert tenant.enable_email_link_sign_in is True
_assert_multi_factor_config(tenant.multi_factor_config)
_assert_email_privacy_config(tenant.email_privacy_config)


def test_list_tenants(sample_tenant):
Expand All @@ -99,17 +114,20 @@ def test_list_tenants(sample_tenant):


def test_update_tenant():
mfa_object = multi_factor_config_mgt.MultiFactorConfig(
provider_configs=[multi_factor_config_mgt.ProviderConfig(
state=multi_factor_config_mgt.ProviderConfig.State.ENABLED,
totp_provider_config=multi_factor_config_mgt.TOTPProviderConfig(
mfa_object = MultiFactorConfig(
provider_configs=[ProviderConfig(
state=ProviderConfig.State.ENABLED,
totp_provider_config=TOTPProviderConfig(
adjacent_intervals=5
)
)]
)
email_privacy_object = EmailPrivacyConfig(
enable_improved_email_privacy=True
)
tenant = tenant_mgt.create_tenant(
display_name='py-update-test', allow_password_sign_up=True, enable_email_link_sign_in=True,
multi_factor_config=mfa_object)
multi_factor_config=mfa_object, email_privacy_config=email_privacy_object)
try:
tenant = tenant_mgt.update_tenant(
tenant.tenant_id, display_name='updated-py-tenant', allow_password_sign_up=False,
Expand All @@ -120,6 +138,7 @@ def test_update_tenant():
assert tenant.allow_password_sign_up is False
assert tenant.enable_email_link_sign_in is False
_assert_multi_factor_config(tenant.multi_factor_config)
_assert_email_privacy_config(tenant.email_privacy_config)
finally:
tenant_mgt.delete_tenant(tenant.tenant_id)

Expand Down
2 changes: 2 additions & 0 deletions tests/test_project_config_mgt.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,3 +210,5 @@ def _assert_email_privacy_config(email_privacy_config):
def _assert_project_config(project_config):
if project_config.multi_factor_config is not None:
_assert_multi_factor_config(project_config.multi_factor_config)
if project_config.email_privacy_config is not None:
_assert_email_privacy_config(project_config.email_privacy_config)