@@ -137,12 +137,22 @@ def test_create_time_entry_with_missing_req_field_should_return_bad_request(
137
137
repository_create_mock .assert_not_called ()
138
138
139
139
140
+ @patch (
141
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
142
+ )
143
+ @patch (
144
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
145
+ )
140
146
def test_list_all_time_entries (
147
+ is_toggle_enabled_for_user_mock ,
148
+ get_azure_app_configuration_client_mock ,
141
149
client : FlaskClient ,
142
150
mocker : MockFixture ,
143
151
valid_header : dict ,
144
152
time_entries_dao ,
145
153
):
154
+ is_toggle_enabled_for_user_mock .return_value = True
155
+
146
156
dao_get_all_mock = mocker .patch .object (
147
157
time_entries_dao , 'get_all' , return_value = []
148
158
)
@@ -204,18 +214,33 @@ def test_get_time_entry_should_succeed_with_valid_id(
204
214
'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.handle_date_filter_args' ,
205
215
Mock (),
206
216
)
217
+ @patch (
218
+ 'time_tracker_api.time_entries.time_entries_repository.TimeEntryCosmosDBRepository.create_sql_date_range_filter' ,
219
+ Mock (),
220
+ )
221
+ @patch (
222
+ 'commons.data_access_layer.cosmos_db.CosmosDBRepository.generate_params' ,
223
+ Mock (),
224
+ )
207
225
@patch ('msal.ConfidentialClientApplication' , Mock ())
208
226
@patch ('utils.azure_users.AzureConnection.get_token' , Mock ())
209
227
@patch ('utils.azure_users.AzureConnection.is_test_user' )
210
228
@patch ('utils.azure_users.AzureConnection.get_test_user_ids' )
211
229
@pytest .mark .parametrize (
212
230
'current_user_is_tester, expected_user_ids' ,
213
231
[
214
- (True , ['id1' , 'id2' ]),
215
- (False , ['id2' ]),
232
+ (True , ['id1' , 'id1' ]),
216
233
],
217
234
)
218
- def test_get_time_entries_by_type_of_user (
235
+ @patch (
236
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
237
+ )
238
+ @patch (
239
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
240
+ )
241
+ def test_get_time_entries_by_type_of_user_when_is_user_tester (
242
+ is_toggle_enabled_for_user_mock ,
243
+ get_azure_app_configuration_client_mock ,
219
244
get_test_user_ids_mock ,
220
245
is_test_user_mock ,
221
246
client : FlaskClient ,
@@ -224,6 +249,7 @@ def test_get_time_entries_by_type_of_user(
224
249
current_user_is_tester ,
225
250
expected_user_ids ,
226
251
):
252
+ is_toggle_enabled_for_user_mock .return_value = True
227
253
test_user_id = "id1"
228
254
non_test_user_id = "id2"
229
255
te1 = TimeEntryCosmosDBModel (
@@ -239,7 +265,97 @@ def test_get_time_entries_by_type_of_user(
239
265
{
240
266
"id" : '2' ,
241
267
"project_id" : "2" ,
242
- "owner_id" : non_test_user_id ,
268
+ "owner_id" : test_user_id ,
269
+ "tenant_id" : '2' ,
270
+ "start_date" : "" ,
271
+ }
272
+ )
273
+
274
+ find_all_mock = Mock ()
275
+ find_all_mock .return_value = [te1 , te2 ]
276
+
277
+ time_entries_dao .repository .find_all = find_all_mock
278
+
279
+ is_test_user_mock .return_value = current_user_is_tester
280
+
281
+ response = client .get (
282
+ "/time-entries?user_id=*" , headers = valid_header , follow_redirects = True
283
+ )
284
+
285
+ get_test_user_ids_mock .assert_not_called ()
286
+ find_all_mock .assert_called ()
287
+
288
+ expected_user_ids_in_time_entries = expected_user_ids
289
+ actual_user_ids_in_time_entries = [
290
+ time_entry ["owner_id" ] for time_entry in json .loads (response .data )
291
+ ]
292
+ assert expected_user_ids_in_time_entries == actual_user_ids_in_time_entries
293
+
294
+
295
+ @patch (
296
+ 'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.create_event_context' ,
297
+ Mock (),
298
+ )
299
+ @patch (
300
+ 'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.build_custom_query' ,
301
+ Mock (),
302
+ )
303
+ @patch (
304
+ 'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.handle_date_filter_args' ,
305
+ Mock (),
306
+ )
307
+ @patch (
308
+ 'time_tracker_api.time_entries.time_entries_repository.TimeEntryCosmosDBRepository.create_sql_date_range_filter' ,
309
+ Mock (),
310
+ )
311
+ @patch (
312
+ 'commons.data_access_layer.cosmos_db.CosmosDBRepository.generate_params' ,
313
+ Mock (),
314
+ )
315
+ @patch ('msal.ConfidentialClientApplication' , Mock ())
316
+ @patch ('utils.azure_users.AzureConnection.get_token' , Mock ())
317
+ @patch ('utils.azure_users.AzureConnection.is_test_user' )
318
+ @patch ('utils.azure_users.AzureConnection.get_test_user_ids' )
319
+ @pytest .mark .parametrize (
320
+ 'current_user_is_tester, expected_user_ids' ,
321
+ [
322
+ (False , ['id1' , 'id1' ]),
323
+ ],
324
+ )
325
+ @patch (
326
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
327
+ )
328
+ @patch (
329
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
330
+ )
331
+ def test_get_time_entries_by_type_of_user_when_is_not_user_tester (
332
+ is_toggle_enabled_for_user_mock ,
333
+ get_azure_app_configuration_client_mock ,
334
+ get_test_user_ids_mock ,
335
+ is_test_user_mock ,
336
+ client : FlaskClient ,
337
+ valid_header : dict ,
338
+ time_entries_dao ,
339
+ current_user_is_tester ,
340
+ expected_user_ids ,
341
+ ):
342
+ is_toggle_enabled_for_user_mock .return_value = True
343
+ test_user_id = "id1"
344
+ non_test_user_id = "id2"
345
+ te1 = TimeEntryCosmosDBModel (
346
+ {
347
+ "id" : '1' ,
348
+ "project_id" : "1" ,
349
+ "owner_id" : test_user_id ,
350
+ "tenant_id" : '1' ,
351
+ "start_date" : "" ,
352
+ }
353
+ )
354
+ te2 = TimeEntryCosmosDBModel (
355
+ {
356
+ "id" : '2' ,
357
+ "project_id" : "2" ,
358
+ "owner_id" : test_user_id ,
243
359
"tenant_id" : '2' ,
244
360
"start_date" : "" ,
245
361
}
@@ -257,7 +373,7 @@ def test_get_time_entries_by_type_of_user(
257
373
"/time-entries?user_id=*" , headers = valid_header , follow_redirects = True
258
374
)
259
375
260
- is_test_user_mock .assert_called ()
376
+ get_test_user_ids_mock .assert_called ()
261
377
find_all_mock .assert_called ()
262
378
263
379
expected_user_ids_in_time_entries = expected_user_ids
@@ -690,12 +806,21 @@ def test_create_with_valid_uuid_format_should_return_created(
690
806
('/time-entries' ),
691
807
],
692
808
)
809
+ @patch (
810
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
811
+ )
812
+ @patch (
813
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
814
+ )
693
815
def test_get_all_passes_date_range_built_from_params_to_find_all (
816
+ is_toggle_enabled_for_user_mock ,
817
+ get_azure_app_configuration_client_mock ,
694
818
client : FlaskClient ,
695
819
valid_header : dict ,
696
820
url : str ,
697
821
time_entries_dao ,
698
822
):
823
+ is_toggle_enabled_for_user_mock .return_value = True
699
824
time_entries_dao .repository .find_all = Mock (return_value = [])
700
825
701
826
response = client .get (url , headers = valid_header )
@@ -727,14 +852,24 @@ def test_get_all_passes_date_range_built_from_params_to_find_all(
727
852
),
728
853
],
729
854
)
855
+ @patch (
856
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
857
+ )
858
+ @patch (
859
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
860
+ )
730
861
def test_get_all_passes_date_range_to_find_all_with_default_tz_offset (
862
+ is_toggle_enabled_for_user_mock ,
863
+ get_azure_app_configuration_client_mock ,
731
864
client : FlaskClient ,
732
865
valid_header : dict ,
733
866
time_entries_dao ,
734
867
url : str ,
735
868
start_date : str ,
736
869
end_date : str ,
737
870
):
871
+ is_toggle_enabled_for_user_mock .return_value = True
872
+
738
873
time_entries_dao .repository .find_all = Mock (return_value = [])
739
874
740
875
response = client .get (url , headers = valid_header )
@@ -788,14 +923,23 @@ def test_get_all_passes_date_range_to_find_all_with_default_tz_offset(
788
923
),
789
924
],
790
925
)
926
+ @patch (
927
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
928
+ )
929
+ @patch (
930
+ 'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
931
+ )
791
932
def test_get_all_passes_date_range_to_find_all_with_given_tz_offset (
933
+ is_toggle_enabled_for_user_mock ,
934
+ get_azure_app_configuration_client_mock ,
792
935
client : FlaskClient ,
793
936
valid_header : dict ,
794
937
time_entries_dao ,
795
938
url : str ,
796
939
start_date : str ,
797
940
end_date : str ,
798
941
):
942
+ is_toggle_enabled_for_user_mock .return_value = True
799
943
time_entries_dao .repository .find_all = Mock (return_value = [])
800
944
801
945
response = client .get (url , headers = valid_header )
0 commit comments