2525
2626from firebase_admin import auth
2727from firebase_admin import tenant_mgt
28+ from firebase_admin import multi_factor_config_mgt
2829from integration import test_auth
2930
3031
3536
3637@pytest .fixture (scope = 'module' )
3738def sample_tenant ():
39+ mfa_object = multi_factor_config_mgt .MultiFactorConfig (
40+ provider_configs = [multi_factor_config_mgt .ProviderConfig (
41+ state = multi_factor_config_mgt .ProviderConfig .State .ENABLED ,
42+ totp_provider_config = multi_factor_config_mgt .TOTPProviderConfig (
43+ adjacent_intervals = 5
44+ )
45+ )]
46+ )
3847 tenant = tenant_mgt .create_tenant (
3948 display_name = 'admin-python-tenant' ,
4049 allow_password_sign_up = True ,
41- enable_email_link_sign_in = True )
50+ enable_email_link_sign_in = True ,
51+ multi_factor_config = mfa_object )
4252 yield tenant
4353 tenant_mgt .delete_tenant (tenant .tenant_id )
4454
55+ def _assert_multi_factor_config (mfa_config ):
56+ assert isinstance (mfa_config , multi_factor_config_mgt .MultiFactorServerConfig )
57+ assert len (mfa_config .provider_configs ) == 1
58+ assert isinstance (mfa_config .provider_configs , list )
59+ for provider_config in mfa_config .provider_configs :
60+ assert isinstance (provider_config , multi_factor_config_mgt .MultiFactorServerConfig .\
61+ ProviderConfigServerConfig )
62+ assert provider_config .state == 'ENABLED'
63+ assert isinstance (provider_config .totp_provider_config ,
64+ multi_factor_config_mgt .MultiFactorServerConfig .ProviderConfigServerConfig
65+ .TOTPProviderServerConfig )
66+ assert provider_config .totp_provider_config .adjacent_intervals == 5
4567
4668@pytest .fixture (scope = 'module' )
4769def tenant_user (sample_tenant ):
@@ -59,6 +81,7 @@ def test_get_tenant(sample_tenant):
5981 assert tenant .display_name == 'admin-python-tenant'
6082 assert tenant .allow_password_sign_up is True
6183 assert tenant .enable_email_link_sign_in is True
84+ _assert_multi_factor_config (tenant .multi_factor_config )
6285
6386
6487def test_list_tenants (sample_tenant ):
@@ -76,8 +99,17 @@ def test_list_tenants(sample_tenant):
7699
77100
78101def test_update_tenant ():
102+ mfa_object = multi_factor_config_mgt .MultiFactorConfig (
103+ provider_configs = [multi_factor_config_mgt .ProviderConfig (
104+ state = multi_factor_config_mgt .ProviderConfig .State .ENABLED ,
105+ totp_provider_config = multi_factor_config_mgt .TOTPProviderConfig (
106+ adjacent_intervals = 5
107+ )
108+ )]
109+ )
79110 tenant = tenant_mgt .create_tenant (
80- display_name = 'py-update-test' , allow_password_sign_up = True , enable_email_link_sign_in = True )
111+ display_name = 'py-update-test' , allow_password_sign_up = True , enable_email_link_sign_in = True ,
112+ multi_factor_config = mfa_object )
81113 try :
82114 tenant = tenant_mgt .update_tenant (
83115 tenant .tenant_id , display_name = 'updated-py-tenant' , allow_password_sign_up = False ,
@@ -87,6 +119,7 @@ def test_update_tenant():
87119 assert tenant .display_name == 'updated-py-tenant'
88120 assert tenant .allow_password_sign_up is False
89121 assert tenant .enable_email_link_sign_in is False
122+ _assert_multi_factor_config (tenant .multi_factor_config )
90123 finally :
91124 tenant_mgt .delete_tenant (tenant .tenant_id )
92125
0 commit comments