@@ -878,3 +878,102 @@ def test_get_termination_status_5(mocker):
878878 workspace_helper .check_if_workspace_needs_to_be_terminated .return_value = 'Yes - Dry Run'
879879 result = workspace_helper .get_termination_status (workspace_id , billable_time , tags )
880880 assert result == ''
881+
882+
883+ def test_get_workspaces_for_directory_use_next_token ():
884+ settings = {
885+ 'region' : 'us-east-1' ,
886+ 'hourlyLimits' : 10 ,
887+ 'testEndOfMonth' : 'yes' ,
888+ 'isDryRun' : True ,
889+ 'startTime' : 1 ,
890+ 'endTime' : 2 ,
891+ 'TerminateUnusedWorkspaces' : 'Dry Run'
892+ }
893+ directory_id = "123qwe123qwe"
894+ workspace_helper = WorkspacesHelper (settings )
895+ client_stubber = Stubber (workspace_helper .workspaces_client )
896+
897+ expected_params_1 = {
898+ 'DirectoryId' : directory_id
899+ }
900+
901+ response_1 = {
902+ 'Workspaces' : [{'WorkspaceId' :'id_1' }],
903+ 'NextToken' : 's223123jj32'
904+ }
905+
906+ expected_params_2 = {
907+ 'DirectoryId' : directory_id ,
908+ 'NextToken' : 's223123jj32'
909+ }
910+
911+ response_2 = {
912+ 'Workspaces' : [{'WorkspaceId' :'id_2' }]
913+ }
914+
915+ client_stubber .add_response ('describe_workspaces' , response_1 , expected_params_1 )
916+ client_stubber .add_response ('describe_workspaces' , response_2 , expected_params_2 )
917+ client_stubber .activate ()
918+ response = workspace_helper .get_workspaces_for_directory (directory_id )
919+ client_stubber .activate ()
920+ assert response == [{'WorkspaceId' : 'id_1' }, {'WorkspaceId' : 'id_2' }]
921+
922+
923+ def test_get_workspaces_for_directory_no_next_token ():
924+ settings = {
925+ 'region' : 'us-east-1' ,
926+ 'hourlyLimits' : 10 ,
927+ 'testEndOfMonth' : 'yes' ,
928+ 'isDryRun' : True ,
929+ 'startTime' : 1 ,
930+ 'endTime' : 2 ,
931+ 'TerminateUnusedWorkspaces' : 'Dry Run'
932+ }
933+ directory_id = "123qwe123qwe"
934+ workspace_helper = WorkspacesHelper (settings )
935+ client_stubber = Stubber (workspace_helper .workspaces_client )
936+
937+ expected_params_1 = {
938+ 'DirectoryId' : directory_id
939+ }
940+
941+ response_1 = {
942+ 'Workspaces' : [{'WorkspaceId' :'id_1' }]
943+ }
944+
945+ expected_params_2 = {
946+ 'DirectoryId' : directory_id ,
947+ 'NextToken' : 's223123jj32'
948+ }
949+
950+ response_2 = {
951+ 'Workspaces' : [{'WorkspaceId' :'id_2' }]
952+ }
953+
954+ client_stubber .add_response ('describe_workspaces' , response_1 , expected_params_1 )
955+ client_stubber .add_response ('describe_workspaces' , response_2 , expected_params_2 )
956+ client_stubber .activate ()
957+ response = workspace_helper .get_workspaces_for_directory (directory_id )
958+ client_stubber .activate ()
959+ assert response == [{'WorkspaceId' : 'id_1' }]
960+
961+
962+ def test_get_workspaces_for_directory_return_exception ():
963+ settings = {
964+ 'region' : 'us-east-1' ,
965+ 'hourlyLimits' : 10 ,
966+ 'testEndOfMonth' : 'yes' ,
967+ 'isDryRun' : True ,
968+ 'startTime' : 1 ,
969+ 'endTime' : 2 ,
970+ 'TerminateUnusedWorkspaces' : 'Dry Run'
971+ }
972+ directory_id = "123qwe123qwe"
973+ workspace_helper = WorkspacesHelper (settings )
974+ client_stubber = Stubber (workspace_helper .workspaces_client )
975+ client_stubber .add_client_error ('describe_workspaces' , "Invalid_request" )
976+ client_stubber .activate ()
977+ response = workspace_helper .get_workspaces_for_directory (directory_id )
978+ client_stubber .activate ()
979+ assert response == []
0 commit comments