37
37
}
38
38
}
39
39
]
40
- }
40
+ }
41
41
}"""
42
42
43
43
MOCK_GET_USER_RESPONSE = testutils .resource ('get_user.json' )
49
49
@pytest .fixture (scope = 'module' )
50
50
def project_config_mgt_app ():
51
51
app = firebase_admin .initialize_app (
52
- testutils .MockCredential (), name = 'projectMgt' ,options = {'projectId' : 'project-id' })
52
+ testutils .MockCredential (), name = 'projectMgt' , options = {'projectId' : 'project-id' })
53
53
yield app
54
54
firebase_admin .delete_app (app )
55
55
@@ -87,7 +87,7 @@ def test_project(self):
87
87
}
88
88
}
89
89
project = project_config_mgt .Project (data )
90
- _assert_project (project )
90
+ _assert_project (project )
91
91
92
92
def test_project_optional_params (self ):
93
93
data = {
@@ -100,7 +100,8 @@ def test_project_optional_params(self):
100
100
class TestGetProject :
101
101
102
102
def test_get_project (self , project_config_mgt_app ):
103
- _ , recorder = _instrument_project_config_mgt (project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
103
+ _ , recorder = _instrument_project_config_mgt (
104
+ project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
104
105
project = project_config_mgt .get_project (app = project_config_mgt_app )
105
106
106
107
_assert_project (project )
@@ -121,7 +122,8 @@ def test_update_project_no_args(self, project_config_mgt_app):
121
122
def test_update_project_invalid_mfa_config_type (self , mfa_config , project_config_mgt_app ):
122
123
with pytest .raises (ValueError ) as excinfo :
123
124
project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
124
- assert str (excinfo .value ).startswith ('multiFactorConfig should be of valid type MultiFactorConfig' )
125
+ assert str (excinfo .value ).startswith (
126
+ 'multiFactorConfig should be of valid type MultiFactorConfig' )
125
127
126
128
def test_invalid_multi_factor_config_params (self , project_config_mgt_app ):
127
129
with pytest .raises (ValueError ) as excinfo :
@@ -136,41 +138,44 @@ def test_update_project_undefined_mfa_config_state(self, project_config_mgt_app)
136
138
with pytest .raises (ValueError ) as excinfo :
137
139
project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
138
140
assert str (excinfo .value ).startswith ('multiFactorConfig.state should be defined' )
139
-
140
141
@pytest .mark .parametrize ('state' , ['' , 1 , True , False , [], (), {}, "foo" ])
141
142
def test_update_project_invalid_mfa_config_state (self , project_config_mgt_app , state ):
142
143
mfa_config = {'state' : state }
143
144
with pytest .raises (ValueError ) as excinfo :
144
145
project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
145
- assert str (excinfo .value ).startswith ('multiFactorConfig.state must be either "ENABLED" or "DISABLED"' )
146
+ assert str (excinfo .value ).startswith (
147
+ 'multiFactorConfig.state must be either "ENABLED" or "DISABLED"' )
146
148
147
149
@pytest .mark .parametrize ('factor_ids' , [True , False , 1 , 0 , 'foo' , {}, dict (), tuple (), list ()])
148
150
def test_invalid_mfa_config_factor_ids_type (self , factor_ids , project_config_mgt_app ):
149
151
mfa_config = {'state' :
3420
39;ENABLED' , 'factorIds' : factor_ids }
150
152
with pytest .raises (ValueError ) as excinfo :
151
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
152
- assert str (excinfo .value ).startswith ('multiFactorConfig.factorIds must be a defined list of AuthFactor type strings' )
153
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
154
+ assert str (excinfo .value ).startswith (
155
+ 'multiFactorConfig.factorIds must be a defined list of AuthFactor type strings' )
153
156
154
157
@pytest .mark .parametrize ('factor_ids' , [[1 , 2 , 3 ], [True , False ], ['foo' , 'bar' , {}]])
155
158
def test_invalid_mfa_config_factor_ids (self , project_config_mgt_app , factor_ids ):
156
159
mfa_config = {'state' : 'ENABLED' , 'factorIds' : factor_ids }
157
160
with pytest .raises (ValueError ) as excinfo :
158
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
161
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
159
162
assert str (excinfo .value ).startswith ('factorId must be a valid AuthFactor type string' )
160
-
161
163
@pytest .mark .parametrize ('provider_configs' , [True , False , 1 , 0 , list (), tuple (), dict ()])
162
- def test_invalid_mfa_config_provider_configs_type (self , project_config_mgt_app , provider_configs ):
164
+ def test_invalid_mfa_config_provider_configs_type (
165
+ self , project_config_mgt_app , provider_configs ):
163
166
mfa_config = {'state' : 'DISABLED' , 'providerConfigs' : provider_configs }
164
167
with pytest .raises (ValueError ) as excinfo :
165
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
166
- assert str (excinfo .value ).startswith ('multiFactorConfig.providerConfigs must be a valid list of providerConfig types' )
167
-
168
- @pytest .mark .parametrize ('provider_configs' , [[True ], [{}], [1 ,2 ], [{'state' : 'DISABLED' , 'totpProviderConfig' : {}}, "foo" ]])
168
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
169
+ assert str (excinfo .value ).startswith (
170
+ 'multiFactorConfig.providerConfigs must be a valid list of providerConfig types' )
171
+ @pytest .mark .parametrize ('provider_configs' , [[True ], [{}], [1 , 2 ],
172
+ [{'state' : 'DISABLED' , 'totpProviderConfig' : {}}, "foo" ]])
169
173
def test_invalid_mfa_config_provider_config (self , project_config_mgt_app , provider_configs ):
170
174
mfa_config = {'state' : 'DISABLED' , 'providerConfigs' : provider_configs }
171
175
with pytest .raises (ValueError ) as excinfo :
172
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
173
- assert str (excinfo .value ).startswith ('multiFactorConfigs.providerConfigs must be a valid array of type providerConfig' )
176
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
177
+ assert str (excinfo .value ).startswith (
178
+ 'multiFactorConfigs.providerConfigs must be a valid array of type providerConfig' )
174
179
175
180
def test_invalid_provider_config_params (self , project_config_mgt_app ):
176
181
with pytest .raises (ValueError ) as excinfo :
@@ -188,30 +193,33 @@ def test_invalid_provider_config_params(self, project_config_mgt_app):
188
193
def test_undefined_provider_config_state (self , project_config_mgt_app ):
189
194
mfa_config = {'state' : 'DISABLED' , 'providerConfigs' : [{'totpProviderConfig' :{}}]}
190
195
with pytest .raises (ValueError ) as excinfo :
191
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
196
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
192
197
assert str (excinfo .value ).startswith ('providerConfig.state should be defined' )
193
-
194
198
@pytest .mark .parametrize ('state' , ['' , 1 , True , False , [], (), {}, "foo" ])
195
199
def test_invalid_provider_config_state (self , project_config_mgt_app , state ):
196
- mfa_config = {'state' : 'DISABLED' , 'providerConfigs' : [{'state' :state , 'totpProviderConfig' :{}}]}
200
+ mfa_config = {'state' : 'DISABLED' ,
201
+ 'providerConfigs' : [{'state' :state , 'totpProviderConfig' :{}}]}
197
202
with pytest .raises (ValueError ) as excinfo :
198
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
199
- assert str (excinfo .value ).startswith ('providerConfig.state must be either "ENABLED" or "DISABLED"' )
203
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
204
+ assert str (excinfo .value ).startswith (
205
+ 'providerConfig.state must be either "ENABLED" or "DISABLED"' )
200
206
201
- @pytest .mark .parametrize ('state' , ['ENABLED' ,'DISABLED' ])
207
+ @pytest .mark .parametrize ('state' , ['ENABLED' , 'DISABLED' ])
202
208
def test_undefined_totp_provider_config (self , project_config_mgt_app , state ):
203
209
mfa_config = {'state' : 'DISABLED' , 'providerConfigs' : [{'state' :state }]}
204
210
with pytest .raises (ValueError ) as excinfo :
205
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
206
- assert str (excinfo .value ).startswith ('providerConfig.totpProviderConfig must be instantiated' )
211
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
212
+ assert str (excinfo .value ).startswith (
213
+ 'providerConfig.totpProviderConfig must be instantiated' )
207
214
208
215
@pytest .mark .parametrize ('totp_provider_config' , [True , False , 1 , 0 , list (), tuple ()])
209
216
def test_invalid_totp_provider_config_type (self , project_config_mgt_app , totp_provider_config ):
210
- mfa_config = {'state' : 'DISABLED' , 'providerConfigs' : [{'state' :'ENABLED' , 'totpProviderConfig' :totp_provider_config }]}
217
+ mfa_config = {'state' : 'DISABLED' ,
218
+ 'providerConfigs' : [{'state' :'ENABLED' , 'totpProviderConfig' :totp_provider_config }]}
211
219
with pytest .raises (ValueError ) as excinfo :
212
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
213
- assert str (excinfo .value ).startswith ('providerConfig.totpProviderConfig must be of valid type TotpProviderConfig' )
214
-
220
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
221
+ assert str (excinfo .value ).startswith (
222
+ 'providerConfig.totpProviderConfig must be of valid type TotpProviderConfig' )
215
223
def test_invalid_totp_provider_config_params (self , project_config_mgt_app ):
216
224
with pytest .raises (ValueError ) as excinfo :
217
225
project_config_mgt .update_project (mfa = {
@@ -227,16 +235,18 @@ def test_invalid_totp_provider_config_params(self, project_config_mgt_app):
227
235
],
228
236
}, app = project_config_mgt_app )
229
237
assert str (excinfo .value ).startswith ('invalid is not a valid TotpProviderConfig paramter' )
230
-
231
238
@pytest .mark .parametrize ('adjacent_intervals' , ['' , - 1 , True , False , [], (), {}, "foo" , None ])
232
239
def test_invalid_adjacent_intervals_type (self , project_config_mgt_app , adjacent_intervals ):
233
- mfa_config = {'state' : 'DISABLED' , 'providerConfigs' : [{'state' :'ENABLED' , 'totpProviderConfig' :{'adjacentIntervals' :adjacent_intervals }}]}
240
+ mfa_config = {'state' : 'DISABLED' , 'providerConfigs' :
241
+ [{'state' :'ENABLED' , 'totpProviderConfig' :{'adjacentIntervals' :adjacent_intervals }}]}
234
242
with pytest .raises (ValueError ) as excinfo :
235
- project_config_mgt .update_project ( mfa = mfa_config , app = project_config_mgt_app )
236
- assert str (excinfo .value ).startswith ('totpProviderConfig.adjacentIntervals must be a valid positive integer' )
243
+ project_config_mgt .update_project (mfa = mfa_config , app = project_config_mgt_app )
244
+ assert str (excinfo .value ).startswith (
245
+ 'totpProviderConfig.adjacentIntervals must be a valid positive integer' )
237
246
238
247
def test_update_project (self , project_config_mgt_app ):
239
- _ , recorder = _instrument_project_config_mgt (project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
248
+ _ , recorder = _instrument_project_config_mgt (
249
+ project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
240
250
mfa_config_data = {
241
251
'state' : 'ENABLED' ,
242
252
'factorIds' :["PHONE_SMS" ],
@@ -250,9 +260,9 @@ def test_update_project(self, project_config_mgt_app):
250
260
]
251
261
}
252
262
project = project_config_mgt .update_project (
253
- mfa = mfa_config_data ,app = project_config_mgt_app )
263
+ mfa = mfa_config_data , app = project_config_mgt_app )
254
264
255
- mask = ['mfa.enabledProviders' ,'mfa.providerConfigs' ,'mfa.state' ]
265
+ mask = ['mfa.enabledProviders' , 'mfa.providerConfigs' , 'mfa.state' ]
256
266
257
267
_assert_project (project )
258
268
self ._assert_request (recorder , {
@@ -285,7 +295,8 @@ def test_update_project_valid_mfa_configs(self, project_config_mgt_app):
285
295
}
286
296
287
297
#multiFactorConfig.state is disabled
288
- _ , recorder = _instrument_project_config_mgt (project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
298
+ _ , recorder = _instrument_project_config_mgt (
299
+ project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
289
300
mfa_config_state_disabled = copy (mfa_config_data )
290
301
mfa_config_state_disabled ['state' ] = 'DISABLED'
291
302
project = project_config_mgt .update_project (
@@ -295,13 +306,14 @@ def test_update_project_valid_mfa_configs(self, project_config_mgt_app):
295
306
_assert_project (project )
296
307
mfa_config_state_disabled ['enabledProviders' ] = mfa_config_state_disabled ['factorIds' ]
297
308
mfa_config_state_disabled .pop ('factorIds' )
298
- mask = ['mfa.enabledProviders' ,'mfa.providerConfigs' ,'mfa.state' ]
309
+ mask = ['mfa.enabledProviders' , 'mfa.providerConfigs' , 'mfa.state' ]
299
310
self ._assert_request (recorder , {
300
311
'mfa' : mfa_config_state_disabled
301
312
}, mask )
302
313
303
314
#multiFactorConfig.state enabled and providerConfig.state disabled
304
- _ , recorder = _instrument_project_config_mgt (project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
315
+ _ , recorder = _instrument_project_config_mgt (
316
+ project_config_mgt_app , 200 , GET_PROJECT_RESPONSE )
305
317
mfa_config_state_enabled_totp_disabled = copy (mfa_config_data )
306
318
mfa_config_state_enabled_totp_disabled ['providerConfigs' ][0 ]['state' ] = 'DISABLED'
307
319
project = project_config_mgt .update_project (
@@ -311,10 +323,10 @@ def test_update_project_valid_mfa_configs(self, project_config_mgt_app):
311
323
_assert_project (project )
312
324
mfa_config_state_enabled_totp_disabled ['enabledProviders' ] = mfa_config_state_enabled_totp_disabled ['factorIds' ]
313
325
mfa_config_state_enabled_totp_disabled .pop ('factorIds' )
314
- mask = ['mfa.enabledProviders' ,'mfa.providerConfigs' ,'mfa.state' ]
326
+ mask = ['mfa.enabledProviders' , 'mfa.providerConfigs' , 'mfa.state' ]
315
327
self ._assert_request (recorder , {
316
328
'mfa' : mfa_config_state_enabled_totp_disabled
317
- },mask )
329
+ }, mask )
318
330
319
331
def _assert_request (self , recorder , body , mask ):
320
332
assert len (recorder ) == 1
@@ -331,4 +343,4 @@ def _assert_project(project):
331
343
assert project .mfa .enabled_providers == ['PHONE_SMS' ]
332
344
assert len (project .mfa .provider_configs ) == 1
333
345
assert project .mfa .provider_configs [0 ].state == 'ENABLED'
334
- assert project .mfa .provider_configs [0 ].totp_provider_config .adjacent_intervals == 5
346
+ assert project .mfa .provider_configs [0 ].totp_provider_config .adjacent_intervals == 5
0 commit comments