def test_resolve_posts_to_expected_url(self, mock_session, user_context, mock_get_all_cases_response_empty): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response_empty client.resolve("*****@*****.**") assert mock_session.post.call_args[0][ 0] == "/svc/api/v1/departingemployee/resolve"
def test_update_posts_expected_data(self, mock_session, user_context, mock_get_case_details_function, mock_py42_response): client = DepartingEmployeeClient(mock_session, user_context) client.get_by_id.return_value = mock_py42_response mock_session.post.return_value = mock_get_case_details_function client.update( "697", None, "Display Name", "These are notes", 24642747257, False, "EXFILTRATION_24_HOURS", ["*****@*****.**"], ) # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert (posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["caseId"] == "697" and posted_data["displayName"] == "Display Name" and posted_data["notes"] == "These are notes" and posted_data["departureDate"] == "2750-11-24T23:34:17.000Z" and posted_data["alertsEnabled"] == False and posted_data["status"] == "EXFILTRATION_24_HOURS" and posted_data["cloudUsernames"] == ["*****@*****.**"])
def test_create_posts_expected_data(self, mock_session, user_context, mock_get_all_cases_response): client = DepartingEmployeeClient(mock_session, user_context) # Return value should have been set based on the arguments passed # in create, here however as we are mocking it, it doesn't matter. Can be refactored mock_session.post.return_value = mock_get_all_cases_response client.create( "*****@*****.**", None, "These are notes", 2352463246, True, ["*****@*****.**"], ) # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert (posted_data["userName"] == "*****@*****.**" and posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["notes"] == "These are notes" and posted_data["departureDate"] == "2044-07-18T14:00:46.000Z" and posted_data["alertsEnabled"] == True and posted_data["cloudUsernames"] == ["*****@*****.**"])
def test_add_posts_expected_data_and_to_expected_url( self, mock_session, user_context, mock_get_all_cases_response, mock_detection_list_user_client, ): client = DepartingEmployeeClient( mock_session, user_context, mock_detection_list_user_client ) user_context.get_current_tenant_id.return_value = _TENANT_ID_PARAM # Return value should have been set based on the arguments passed # in add, here however as we are mocking it, it doesn't matter. Can be refactored mock_session.post.return_value = mock_get_all_cases_response client.add(_USER_ID, "2022-12-20") # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert ( posted_data["userId"] == _USER_ID and posted_data["tenantId"] == _TENANT_ID_PARAM and posted_data["departureDate"] == "2022-12-20" ) assert mock_session.post.call_args[0][0] == "/svc/api/v2/departingemployee/add" assert mock_session.post.call_count == 2
def test_get_by_username_posts_to_expected_url( self, mock_session, user_context, mock_get_all_cases_response): mock_session.post.return_value = mock_get_all_cases_response client = DepartingEmployeeClient(mock_session, user_context) client.get_by_username("*****@*****.**") assert mock_session.post.call_args[0][ 0] == "/svc/api/v1/departingemployee/details"
def test_get_by_id_uses_given_tenant_id_over_current_id( self, mock_session, user_context, mock_get_all_cases_response): mock_session.post.return_value = mock_get_all_cases_response client = DepartingEmployeeClient(mock_session, user_context) client.get_by_id("999", _TENANT_ID_PARAM) post_call_args = json.loads(mock_session.post.call_args[1]["data"]) assert post_call_args["tenantId"] == _TENANT_ID_PARAM
def test_get_page_posts_data_to_expected_url( self, mock_session, user_context, mock_get_all_cases_response, mock_detection_list_user_client, ): client = DepartingEmployeeClient( mock_session, user_context, mock_detection_list_user_client ) client.get_page( filter_type="OPEN", sort_key="CREATED_AT", sort_direction="DESC", page_num=1, page_size=100, ) mock_session.post.return_value = mock_get_all_cases_response first_call = mock_session.post.call_args_list[0] posted_data = json.loads(first_call[1]["data"]) assert ( posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["pgSize"] == 100 and posted_data["pgNum"] == 1 and posted_data["filterType"] == "OPEN" and posted_data["srtKey"] == "CREATED_AT" and posted_data["srtDirection"] == "DESC" ) assert ( mock_session.post.call_args[0][0] == "/svc/api/v2/departingemployee/search" ) assert mock_session.post.call_count == 1
def test_update_posts_to_expected_url(self, mock_session, user_context, mock_detection_list_user_client): client = DepartingEmployeeClient(mock_session, user_context, mock_detection_list_user_client) client.update_departure_date(_USER_ID, "2022-12-20") assert mock_session.post.call_args[0][ 0] == "/svc/api/v2/departingemployee/update"
def test_get_by_id_posts_to_expected_url( self, mock_session, user_context, mock_get_all_cases_response_empty): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response_empty client.get_by_id("999") assert mock_session.post.call_args[0][ 0] == "/svc/api/v1/departingemployee/details"
def test_toggle_alerts_posts_to_expected_url( self, mock_session, user_context, mock_get_all_cases_response_empty): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response_empty client.toggle_alerts() assert mock_session.post.call_args[0][ 0] == "/svc/api/v1/departingemployee/togglealerts"
def test_toggle_alerts_uses_given_tenant_id_over_current_id( self, mock_session, user_context, mock_get_all_cases_response_empty): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response_empty client.toggle_alerts(_TENANT_ID_PARAM) post_call_args = json.loads(mock_session.post.call_args[1]["data"]) assert post_call_args["tenantId"] == _TENANT_ID_PARAM
def test_get_all_posts_to_expected_url(self, mock_session, user_context, mock_get_all_cases_response): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response for _ in client.get_all(): break assert mock_session.post.call_args[0][ 0] == "/svc/api/v1/departingemployee/search"
def test_update_uses_given_tenant_id_over_current_id( self, mock_session, user_context, mock_get_case_details_function, mock_py42_response): client = DepartingEmployeeClient(mock_session, user_context) client.get_by_id.return_value = mock_py42_response mock_session.post.return_value = mock_get_case_details_function client.update("697", _TENANT_ID_PARAM) post_call_args = json.loads(mock_session.post.call_args[1]["data"]) assert post_call_args["tenantId"] == _TENANT_ID_PARAM
def test_get_by_username_uses_given_tenant_id_over_current_id( self, mock_session, user_context, mock_get_all_cases_response): mock_session.post.return_value = mock_get_all_cases_response client = DepartingEmployeeClient(mock_session, user_context) mock_session.get.return_value = mock_get_all_cases_response client.get_by_username("*****@*****.**", _TENANT_ID_PARAM) first_call = mock_session.post.call_args_list[0] post_call_args = json.loads(first_call[1]["data"]) assert post_call_args["tenantId"] == _TENANT_ID_PARAM
def test_update_posts_to_expected_url(self, mock_session, user_context, mock_get_case_details_function, mock_py42_response): client = DepartingEmployeeClient(mock_session, user_context) client.get_by_id.return_value = mock_py42_response mock_session.post.return_value = mock_get_case_details_function client.update("697") assert mock_session.post.call_args[0][ 0] == "/svc/api/v1/departingemployee/update"
def test_get_all_uses_given_tenant_id_over_current_id( self, mock_session, user_context, mock_get_all_cases_response): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response for _ in client.get_all(_TENANT_ID_PARAM): break first_call = mock_session.post.call_args_list[0] post_call_args = json.loads(first_call[1]["data"]) assert post_call_args["tenantId"] == _TENANT_ID_PARAM
def test_resolve_posts_expected_data(self, mock_session, user_context, mock_get_all_cases_response_empty): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response_empty client.resolve("999") # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert posted_data["caseId"] == "999" and posted_data[ "tenantId"] == TENANT_ID_FROM_RESPONSE
def test_get_posts_to_expected_url( self, mock_session, user_context, mock_get_all_cases_response_empty, mock_detection_list_user_client, ): client = DepartingEmployeeClient( mock_session, user_context, mock_detection_list_user_client ) mock_session.post.return_value = mock_get_all_cases_response_empty client.get("999") assert mock_session.post.call_args[0][0] == "/svc/api/v2/departingemployee/get"
def test_set_alerts_enabled_posts_expected_data( self, mock_session, user_context, mock_get_all_cases_response_empty, mock_detection_list_user_client, ): client = DepartingEmployeeClient(mock_session, user_context, mock_detection_list_user_client) mock_session.post.return_value = mock_get_all_cases_response_empty client.set_alerts_enabled() posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert (posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["alertsEnabled"] is True)
def get_departing_employee_client(self): if not self._departing_employee_client: self._departing_employee_client = DepartingEmployeeClient( self._get_ecm_session(), self._user_context, self.get_detection_list_user_client(), ) return self._departing_employee_client
def test_get_all_calls_post_expected_number_of_times( self, mock_session, user_context, mock_get_all_cases_response, mock_get_all_cases_response_empty, ): mock_session.post.side_effect = [ mock_get_all_cases_response, mock_get_all_cases_response, mock_get_all_cases_response_empty, ] client = DepartingEmployeeClient(mock_session, user_context) mock_session.get.return_value = mock_get_all_cases_response_empty for _ in client.get_all(): pass assert mock_session.post.call_count == 1
def test_get_all_posts_expected_data(self, mock_session, user_context, mock_get_all_cases_response): client = DepartingEmployeeClient(mock_session, user_context) mock_session.post.return_value = mock_get_all_cases_response for _ in client.get_all(None, 235234626, "USERNAME", "ASC"): break # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. first_call = mock_session.post.call_args_list[0] posted_data = json.loads(first_call[1]["data"]) assert (posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["pgSize"] == 100 and posted_data["pgNum"] == 1 and posted_data["departingOnOrAfter"] == "1977-06-15T14:57:06.000Z" and posted_data["srtKey"] == "USERNAME" and posted_data["srtDirection"] == "ASC")
def test_update_posts_expected_data( self, mock_session, user_context, mock_get_all_cases_response, mock_detection_list_user_client, ): client = DepartingEmployeeClient(mock_session, user_context, mock_detection_list_user_client) mock_session.post.return_value = mock_get_all_cases_response client.update_departure_date(_USER_ID, "2020-12-20") # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert (posted_data["userId"] == _USER_ID and posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["departureDate"] == "2020-12-20")
def test_add_when_user_already_on_list_raises_user_already_added_error( self, mocker, mock_session, user_context, mock_detection_list_user_client ): def side_effect(url, data): if "add" in url: base_err = mocker.MagicMock(spec=HTTPError) base_err.response = mocker.MagicMock(spec=Response) base_err.response.text = "User already on list" raise Py42BadRequestError(base_err) mock_session.post.side_effect = side_effect client = DepartingEmployeeClient( mock_session, user_context, mock_detection_list_user_client ) with pytest.raises(Py42UserAlreadyAddedError) as err: client.add("user_id") expected = "User with ID user_id is already on the departing-employee list." assert str(err.value) == expected
def test_remove_posts_expected_data_and_to_expected_url( self, mock_session, user_context, mock_get_all_cases_response_empty, mock_detection_list_user_client, ): client = DepartingEmployeeClient(mock_session, user_context, mock_detection_list_user_client) mock_session.post.return_value = mock_get_all_cases_response_empty client.remove("999") # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert posted_data["userId"] == "999" and posted_data[ "tenantId"] == TENANT_ID_FROM_RESPONSE assert mock_session.post.call_args[0][ 0] == "/svc/api/v2/departingemployee/remove"
def get_departing_employee_client(self, user_client): if not self._departing_employee_client: if not self._ecm_session: self._ecm_session = self._get_jwt_session( u"employeecasemanagement-API_URL") self._departing_employee_client = DepartingEmployeeClient( self._ecm_session, self._user_context, self.get_detection_list_user_client(user_client), ) return self._departing_employee_client
def test_update_uses_current_data_when_not_provided( self, mock_session, user_context, mock_get_case_details_function, mock_py42_response): client = DepartingEmployeeClient(mock_session, user_context) client.get_by_id.return_value = mock_py42_response mock_session.post.return_value = mock_get_case_details_function client.update("20") # Have to convert the request data to a dict because # older versions of Python don't have deterministic order. posted_data = json.loads(mock_session.post.call_args[1]["data"]) assert (posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["caseId"] == "20" and posted_data["displayName"] == "Test Testerson" and posted_data["notes"] == "notes notes notes" and posted_data["departureDate"] == "2020-02-13" and posted_data["alertsEnabled"] == True and posted_data["status"] == "OPEN" and posted_data["cloudUsernames"] == ["*****@*****.**", "*****@*****.**"])
def test_get_all_uses_given_tenant_id_over_current_id( self, mock_session, user_context, mock_get_all_cases_response, mock_detection_list_user_client, ): client = DepartingEmployeeClient(mock_session, user_context, mock_detection_list_user_client) mock_session.post.return_value = mock_get_all_cases_response for _ in client.get_all(): break first_call = mock_session.post.call_args_list[0] posted_data = json.loads(first_call[1]["data"]) assert (posted_data["tenantId"] == TENANT_ID_FROM_RESPONSE and posted_data["pgSize"] == 100 and posted_data["pgNum"] == 1 and posted_data["filterType"] == "OPEN" and posted_data["srtKey"] == "CREATED_AT" and posted_data["srtDirection"] == "DESC") assert mock_session.post.call_args[0][ 0] == "/svc/api/v2/departingemployee/search" assert mock_session.post.call_count == 1
def get_departing_employee_client(self): if not self._departing_employee_client: session = self._get_jwt_session(u"employeecasemanagement-API_URL") self._departing_employee_client = DepartingEmployeeClient(session, self._user_context) return self._departing_employee_client