@@ -137,12 +137,22 @@ def test_create_time_entry_with_missing_req_field_should_return_bad_request(
137137 repository_create_mock .assert_not_called ()
138138
139139
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+ )
140146def test_list_all_time_entries (
147+ is_toggle_enabled_for_user_mock ,
148+ get_azure_app_configuration_client_mock ,
141149 client : FlaskClient ,
142150 mocker : MockFixture ,
143151 valid_header : dict ,
144152 time_entries_dao ,
145153):
154+ is_toggle_enabled_for_user_mock .return_value = True
155+
146156 dao_get_all_mock = mocker .patch .object (
147157 time_entries_dao , 'get_all' , return_value = []
148158 )
@@ -204,18 +214,33 @@ def test_get_time_entry_should_succeed_with_valid_id(
204214 'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.handle_date_filter_args' ,
205215 Mock (),
206216)
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+ )
207225@patch ('msal.ConfidentialClientApplication' , Mock ())
208226@patch ('utils.azure_users.AzureConnection.get_token' , Mock ())
209227@patch ('utils.azure_users.AzureConnection.is_test_user' )
210228@patch ('utils.azure_users.AzureConnection.get_test_user_ids' )
211229@pytest .mark .parametrize (
212230 'current_user_is_tester, expected_user_ids' ,
213231 [
214- (True , ['id1' , 'id2' ]),
215- (False , ['id2' ]),
232+ (True , ['id1' , 'id1' ]),
216233 ],
217234)
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 ,
219244 get_test_user_ids_mock ,
220245 is_test_user_mock ,
221246 client : FlaskClient ,
@@ -224,6 +249,7 @@ def test_get_time_entries_by_type_of_user(
224249 current_user_is_tester ,
225250 expected_user_ids ,
226251):
252+ is_toggle_enabled_for_user_mock .return_value = True
227253 test_user_id = "id1"
228254 non_test_user_id = "id2"
229255 te1 = TimeEntryCosmosDBModel (
@@ -239,7 +265,97 @@ def test_get_time_entries_by_type_of_user(
239265 {
240266 "id" : '2' ,
241267 "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 ,
243359 "tenant_id" : '2' ,
244360 "start_date" : "" ,
245361 }
@@ -257,7 +373,7 @@ def test_get_time_entries_by_type_of_user(
257373 "/time-entries?user_id=*" , headers = valid_header , follow_redirects = True
258374 )
259375
260- is_test_user_mock .assert_called ()
376+ get_test_user_ids_mock .assert_called ()
261377 find_all_mock .assert_called ()
262378
263379 expected_user_ids_in_time_entries = expected_user_ids
@@ -690,12 +806,21 @@ def test_create_with_valid_uuid_format_should_return_created(
690806 ('/time-entries' ),
691807 ],
692808)
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+ )
693815def 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 ,
694818 client : FlaskClient ,
695819 valid_header : dict ,
696820 url : str ,
697821 time_entries_dao ,
698822):
823+ is_toggle_enabled_for_user_mock .return_value = True
699824 time_entries_dao .repository .find_all = Mock (return_value = [])
700825
701826 response = client .get (url , headers = valid_header )
@@ -727,14 +852,24 @@ def test_get_all_passes_date_range_built_from_params_to_find_all(
727852 ),
728853 ],
729854)
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+ )
730861def 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 ,
731864 client : FlaskClient ,
732865 valid_header : dict ,
733866 time_entries_dao ,
734867 url : str ,
735868 start_date : str ,
736869 end_date : str ,
737870):
871+ is_toggle_enabled_for_user_mock .return_value = True
872+
738873 time_entries_dao .repository .find_all = Mock (return_value = [])
739874
740875 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(
788923 ),
789924 ],
790925)
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+ )
791932def 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 ,
792935 client : FlaskClient ,
793936 valid_header : dict ,
794937 time_entries_dao ,
795938 url : str ,
796939 start_date : str ,
797940 end_date : str ,
798941):
942+ is_toggle_enabled_for_user_mock .return_value = True
799943 time_entries_dao .repository .find_all = Mock (return_value = [])
800944
801945 response = client .get (url , headers = valid_header )
0 commit comments