def test_given_invalid_comment_id_then_raise_exception(self, storage_mock, presenter_mock): comment_id = 1 reply_user_id = 1 reply_text = "Nice Comment" interactor = CommentInteractor(storage=storage_mock) from fb_post_clean_arch_v2.exceptions.custom_exceptions import \ InvalidCommentId storage_mock.validate_comment_id.side_effect = InvalidCommentId from django_swagger_utils.drf_server.exceptions import NotFound from fb_post_clean_arch_v2.constants.exception_messages import \ INVALID_COMMENT_ID presenter_mock.raise_exception_for_invalid_comment_id.side_effect = \ NotFound(*INVALID_COMMENT_ID) exception_message = INVALID_COMMENT_ID[0] response_status_code = INVALID_COMMENT_ID[1] import pytest with pytest.raises(NotFound) as exception: interactor.create_reply_for_comment_wrapper( comment_id=comment_id, user_id=reply_user_id, reply_text=reply_text, presenter=presenter_mock) assert exception_message == exception.value.message assert response_status_code == exception.value.res_status storage_mock.validate_comment_id.assert_called_once_with( comment_id=comment_id) presenter_mock.raise_exception_for_invalid_comment_id. \ assert_called_once()
def test_get_states_for_task_with_invalid_project_id(self): #arrange from .raw_inputs import task_state_data from django_swagger_utils.drf_server.exceptions\ import NotFound from project_management_portal.constants.exception_messages\ import INVALID_PROJECT project_id = task_state_data['project_id'] task_storage = create_autospec(TaskStorageInterface) project_storage = create_autospec(ProjectStorageInterface) task_presenter = create_autospec(TaskPresenterInterface) project_presenter = create_autospec(ProjectPresenterInterface) interactor = GetStatesForTaskInteractor( task_storage=task_storage, project_storage=project_storage) project_storage.validate_project_id.return_value = None project_presenter.raise_invalid_project_id_exception\ .side_effect = NotFound(*INVALID_PROJECT) expected_error_msg = "Invalid project_id, try with valid project_id" #act with pytest.raises(NotFound) as error: interactor.get_states_for_task_based_on_current_state_wrapper( task_state_data, project_presenter=project_presenter, task_presenter=task_presenter) #assert assert str(error.value) == expected_error_msg project_storage.validate_project_id.assert_called_once_with(project_id) project_presenter.raise_invalid_project_id_exception\ .assert_called_once()
def test_update_task_state_invalid_project(self): #arrange from .raw_inputs import update_task_state_input_data from project_management_portal.constants.exception_messages\ import INVALID_PROJECT project_id = update_task_state_input_data.get('project_id') task_storage = create_autospec(TaskStorageInterface) project_storage = create_autospec(ProjectStorageInterface) task_presenter = create_autospec(TaskPresenterInterface) project_presenter = create_autospec(ProjectPresenterInterface) interactor = TaskStateTransitionInteractor( task_storage=task_storage, project_storage=project_storage) project_storage.validate_project_id.return_value = False project_presenter.raise_invalid_project_id_exception\ .side_effect = NotFound(*INVALID_PROJECT) expected_error_message\ = "Invalid project_id, try with valid project_id" #act with pytest.raises(NotFound) as error: interactor.update_task_state_wrapper(update_task_state_input_data, project_presenter, task_presenter) #assert assert error.value.message == expected_error_message project_storage.validate_project_id.assert_called_once_with( project_id=project_id) project_presenter.raise_invalid_project_id_exception\ .assert_called_once()
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- user = kwargs['user'] request_data = kwargs['request_data'] mandal_id = request_data['mandal_id'] date = request_data['date'] total_confirmed = request_data['total_confirmed'] total_deaths = request_data['total_deaths'] total_recovered = request_data['total_recovered'] storage = MandalStorageImplementation() presenter = PresenterImplementation() interactor = UpdateStatistics(storage=storage, presenter=presenter) try: interactor.update_statistics(mandal_id=mandal_id, user=user, date=date, total_confirmed=total_confirmed, total_deaths=total_deaths, total_recovered=total_recovered) except InvalidMandalId: raise NotFound(*INVALID_MANDAL_ID) except InvalidDetailsForTotalConfirmed: raise BadRequest(*INVALID_TOTAL_CONFIRMED) except InvalidDetailsForTotalDeaths: raise BadRequest(*INVALID_TOTAL_DEATHS) except InvalidDetailsForTotalRecovered: raise BadRequest(*INVALID_TOTAL_RECOVERED) except StatNotFound: raise BadRequest(*DETAILS_NOT_FOUND) except UserNotAdmin: raise Forbidden(*USER_NOT_ADMIN) return HttpResponse(status=200)
def test_create_task_with_invalid_project_id(self): #arrange user_id = 1 task_storage = create_autospec(TaskStorageInterface) project_storage = create_autospec(ProjectStorageInterface) task_presenter = create_autospec(TaskPresenterInterface) project_presenter = create_autospec(ProjectPresenterInterface) interactor = CreateTaskInteractor( task_storage=task_storage, project_storage=project_storage ) project_storage.validate_project_id.return_value = False project_presenter.raise_invalid_project_id_exception\ .side_effect = NotFound(*INVALID_PROJECT) expected_error_msg = "Invalid project_id, try with valid project_id" #act with pytest.raises(NotFound) as error: interactor.create_task_wrapper( user_id=user_id, task_data=task_data, project_presenter=project_presenter, task_presenter=task_presenter ) #assert assert str(error.value) == expected_error_msg project_storage.validate_project_id.assert_called_once_with( project_id=task_data.get('project_id')) project_presenter.raise_invalid_project_id_exception.assert_called_once()
def test_get_states_transition_details_invalid_project_id(self): #arrange from .raw_inputs\ import transition_details_query_dict task_storage = create_autospec(TaskStorageInterface) project_storage = create_autospec(ProjectStorageInterface) task_presenter = create_autospec(TaskPresenterInterface) project_presenter = create_autospec(ProjectPresenterInterface) interactor = GetStatesTransitionDetailsInteractor( task_storage=task_storage, project_storage=project_storage) project_storage.validate_project_id.return_value = None project_presenter.raise_invalid_project_id_exception\ .side_effect = NotFound(*INVALID_PROJECT) expected_error_msg = "Invalid project_id, try with valid project_id" #act with pytest.raises(NotFound) as error: interactor.get_states_transition_details_wrapper( transition_details_query_dict, project_presenter=project_presenter, task_presenter=task_presenter) #assert assert error.value.message == expected_error_msg project_storage.validate_project_id.assert_called_once_with( transition_details_query_dict['project_id']) project_presenter.raise_invalid_project_id_exception\ .assert_called_once()
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- comment_id = kwargs['comment_id'] try: comment_replies = get_replies_for_comment(comment_id=comment_id) except InvalidCommentException: raise NotFound(*INVALID_COMMENT_ID) else: data = json.dumps(comment_replies) response = HttpResponse(data, status=200) return response """
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- storage = DistrictStorageImplementation() presenter = PresenterImplementation() interactor = GetDistrictReportOfSpecificDay(storage=storage, presenter=presenter) request_data = kwargs['request_data'] district_id = kwargs['district_id'] query = kwargs['request_query_params'] date = query['date'] try: response = interactor.get_district_report_of_specific_day( date=date, district_id=district_id) except InvalidDistrictId: raise NotFound(*INVALID_DISTRICT_ID) except InvalidDate: raise NotFound(*INVALID_DATE) data = json.dumps(response) return HttpResponse(data, status=200)
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- post_id = kwargs['post_id'] try: user_reaction = get_reactions_to_post(post_id=post_id) except InvalidPostException: raise NotFound(*INVALID_POST_ID) else: data = json.dumps(user_reaction) response = HttpResponse(data, status=200) return response """
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- post_id = kwargs['post_id'] try: post_details = get_post( post_id=post_id ) except InvalidPostException: raise NotFound(*INVALID_POST_ID) else: data = json.dumps(post_details) return HttpResponse(data, status=200) """
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- request_data = kwargs['request_data'] username = request_data['username'] password = request_data['password'] storage = UserStorageImplementation() presenter = PresenterImplementation() oauth_storage = OAuth2SQLStorage() interactor = LoginUserInteractor(storage=storage, presenter=presenter, oauth_storage=oauth_storage) try: access_token_response = interactor.login_user(username=username, password=password) except InvalidUserName: raise NotFound(*INVALID_USERNAME) except InvalidPassword: raise NotFound(*INVALID_PASSWORD) data = json.dumps(access_token_response) return HttpResponse(data, 200)
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- storage = StateStorageImplementation() presenter = PresenterImplementation() interactor = GetReportOFStateForDate(storage=storage, presenter=presenter) request_data = kwargs['request_data'] query = kwargs['request_query_params'] date = query['date'] try: response = interactor.get_report_of_state_for_date(date=date) except InvalidDate: raise NotFound(*INVALID_DATE) data = json.dumps(response) return HttpResponse(data, status=200)
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- comment_id = kwargs['comment_id'] user = kwargs['user'] request_data = kwargs['request_data'] reaction_type = request_data['reaction_type'] try: react_to_comment(user_id=user.id, comment_id=comment_id, reaction_type=reaction_type) except InvalidCommentException: raise NotFound(*INVALID_COMMENT_ID) except InvalidReactionTypeException: raise BadRequest(*INVALID_REACTION_TYPE) return HttpResponse(status=200) """
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- mandal_id = kwargs['mandal_id'] user = kwargs['user'] storage = MandalStorageImplementation() presenter = PresenterImplementation() interactor = GetStatistics(storage=storage, presenter=presenter) try: response = interactor.get_statistics(mandal_id=mandal_id, user=user) except UserNotAdmin: raise Forbidden(*USER_NOT_ADMIN) except InvalidMandalId: raise NotFound(*INVALID_MANDAL_ID) data = json.dumps(response) return HttpResponse(data, status=200)
def test_get_states_transition_details_invalid_state_transition(self): #arrange from .raw_inputs\ import project_dto, task_dto, transition_details_query_dict task_storage = create_autospec(TaskStorageInterface) project_storage = create_autospec(ProjectStorageInterface) task_presenter = create_autospec(TaskPresenterInterface) project_presenter = create_autospec(ProjectPresenterInterface) interactor = GetStatesTransitionDetailsInteractor( task_storage=task_storage, project_storage=project_storage) project_storage.validate_project_id.return_value = project_dto task_storage.validate_task_id.return_value = task_dto project_storage\ .validate_state_transition\ .return_value = False project_presenter\ .raise_invalid_transition_exception\ .side_effect = NotFound(*INVALID_TRANSITION) expected_error_msg = "Invalid Transition, try with valid transition" #act with pytest.raises(NotFound) as error: interactor.get_states_transition_details_wrapper( transition_details_query_dict, project_presenter=project_presenter, task_presenter=task_presenter) #assert assert error.value.message == expected_error_msg project_storage.validate_project_id.assert_called_once_with( transition_details_query_dict['project_id']) task_storage.validate_task_id.assert_called_once_with( transition_details_query_dict['task_id']) project_storage\ .validate_state_transition.assert_called_once_with( project_dto.workflow_id, task_dto.state_id, transition_details_query_dict['to_state_id']) project_presenter.raise_invalid_transition_exception\ .assert_called_once()
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- post_id = kwargs['post_id'] user = kwargs['user'] try: delete_post( user_id=user.id, post_id=post_id, ) except InvalidPostException: raise NotFound(*INVALID_POST_ID) except UserCannotDeletePostException: raise Forbidden(*UNAUTHORISED_USER_TYPE) return HttpResponse(status=200) """
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- storage = DistrictStorageImplementation() presenter = PresenterImplementation() interactor = GetDayWiseMandalDetails(storage=storage, presenter=presenter) request_data = kwargs['request_data'] district_id = kwargs['district_id'] try: response = interactor.get_day_wise_mandal_details( district_id=district_id) except InvalidDistrictId: raise NotFound(*INVALID_DISTRICT_ID) data = json.dumps(response) response = HttpResponse(data, status=200) return response
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- storage = DistrictStorageImplementation() presenter = PresenterImplementation() interactor = GetDailyCumulativeReportOfMandalsForDistrict( storage=storage, presenter=presenter) request_data = kwargs['request_data'] district_id = kwargs['district_id'] try: response = interactor.get_daily_cumulative_report_of_mandals_for_district( district_id=district_id) except InvalidDistrictId: raise NotFound(*INVALID_DISTRICT_ID) data = json.dumps(response) response = HttpResponse(data, status=200) return response
def test_get_states_for_task_with_unauthorized_developer(self): #arrange from .raw_inputs import task_state_data from django_swagger_utils.drf_server.exceptions\ import NotFound from project_management_portal.constants.exception_messages\ import UN_AUTHORIZED_DEVELOPER project_id = task_state_data['project_id'] user_id = task_state_data['user_id'] task_storage = create_autospec(TaskStorageInterface) project_storage = create_autospec(ProjectStorageInterface) task_presenter = create_autospec(TaskPresenterInterface) project_presenter = create_autospec(ProjectPresenterInterface) interactor = GetStatesForTaskInteractor( task_storage=task_storage, project_storage=project_storage) project_storage\ .validate_developer_for_project.return_value = False project_presenter.raise_unauthorized_developer_exception\ .side_effect = NotFound(*UN_AUTHORIZED_DEVELOPER) expected_error_msg = "Developer not allowed to access this resource" #act with pytest.raises(NotFound) as error: interactor.get_states_for_task_based_on_current_state_wrapper( task_state_data, project_presenter=project_presenter, task_presenter=task_presenter) #assert assert str(error.value) == expected_error_msg project_storage\ .validate_developer_for_project.assert_called_once_with( user_id, project_id) project_presenter.raise_unauthorized_developer_exception\ .assert_called_once()
def test_get_tasks_with_invalid_project(self): #arrange from project_management_portal.constants.exception_messages\ import INVALID_PROJECT project_id = 1 user_id = 1 task_storage = create_autospec(TaskStorageInterface) project_storage = create_autospec(ProjectStorageInterface) task_presenter = create_autospec(TaskPresenterInterface) project_presenter = create_autospec(ProjectPresenterInterface) interactor = GetTasksInteractor(task_storage=task_storage, project_storage=project_storage ) project_storage.validate_project_id.return_value = False task_storage.get_tasks.return_value = tasks_details_dtos project_presenter.raise_invalid_project_id_exception\ .side_effect = NotFound(*INVALID_PROJECT) expection_error_msg = "Invalid project_id, try with valid project_id" #act with pytest.raises(NotFound) as error: interactor.get_tasks_wrapper(user_id=user_id, project_id=project_id, project_presenter=project_presenter, task_presenter=task_presenter ) #assert assert error.value.message == expection_error_msg project_storage.validate_project_id.assert_called_once_with( project_id=project_id ) project_presenter.raise_invalid_project_id_exception\ .assert_called_once()
def api_wrapper(*args, **kwargs): # ---------MOCK IMPLEMENTATION--------- comment_id = kwargs['comment_id'] user = kwargs['user'] request_data = kwargs['request_data'] comment_content=request_data['content'] try: reply_comment_id = reply_to_comment( user_id=user.id, comment_id=comment_id, reply_content=comment_content ) except InvalidCommentException: raise NotFound(*INVALID_COMMENT_ID) except InvalidReplyContent: raise BadRequest(*INVALID_REPLY_CONTENT) else: data = json.dumps({"comment_id": reply_comment_id}) response = HttpResponse(data, status=201) return response """
def raise_exception_for_invalid_post(self): raise NotFound(*INVALID_POST_ID)
def raise_invalid_username_exception(self): raise NotFound(*INVALID_USERNAME)
def raise_invalid_transition_exception(self): raise NotFound(*INVALID_TRANSITION)
def raise_invalid_project_id_exception(self): raise NotFound(*INVALID_PROJECT)
def raise_invalid_workflow_id_exception(self): raise NotFound(*INVALID_WORKFLOW)
def raise_invalid_password_exception(self): raise NotFound(*INVALID_PASSWORD)
def raise_exception_for_invalid_user_id(self, user_id: int): raise NotFound(*USERISNOTVALID)
def raise_invalid_testcase_for_question_exception(self): raise NotFound(*INVALID_TESTCASE_FOR_QUESTION)
def raise_invalid_testcase_exception(self): raise NotFound(*INVALID_TESTCASE_ID)