def test_list_users_request_invalid_filters(): filters = 5 request = ListUsersRequest(filters=filters) assert request.is_valid() is False assert request.filters == filters assert len(request.errors) == 1 error = request.errors[0] assert error.parameter == 'filters' assert error.message == 'is not iterable'
def login(): data = http_request.get_json() name = data['name'] password = data['password'] request = ListUsersRequest(filters=dict(name=name)) action = ListUsersAction(users_repository) response = action.execute(request) if not response or not response.value: message = 'Login failed. User with name {} not found.'.format(name) return jsonify(dict(message=message)), 401 user = response.value[0] if not users_repository.check_password(user, password): message = 'Login failed. Invalid password.' return jsonify(dict(message=message)), 401 user.is_active = True user.is_authenticated = True user.is_anonymous = False def get_id(): return user.name user.get_id = get_id flask_login.login_user(user) authorization_manager.user = user return json_response(response.value[0], UserEncoder)
def get_all_users(): request = ListUsersRequest() action = ListUsersAction(users_repository) action.add_before_execution_hook(authorization_manager.authorize) response = action.execute(request) status = get_status(response) return json_response(response.value, UserEncoder, status)
def test_list_users_action_without_parameters(users): repo = mock.Mock() repo.list.return_value = users request = ListUsersRequest() action = ListUsersAction(repo=repo) response = action.execute(request) assert bool(response) is True assert response.value == repo.list.return_value
def get_loggedin_user(): name = current_user.get_id() request = ListUsersRequest(filters=dict(name=name)) action = ListUsersAction(repo=users_repository) response = action.execute(request) if not response or not response.value: return None return response.value[0]
def test_list_users_action_with_parameters(users): filters = dict(name='name1') repo = mock.Mock() repo.list.return_value = [u for u in users if u.name == filters['name']] request = ListUsersRequest(filters=filters) action = ListUsersAction(repo=repo) response = action.execute(request) assert bool(response) is True assert response.value == repo.list.return_value
def test_list_handles_bad_request(): repo = mock.Mock() request = ListUsersRequest(filters=5) action = ListUsersAction(repo=repo) response = action.execute(request) assert bool(response) is False assert response.value == { 'type': ResponseFailure.PARAMETER_ERROR, 'message': 'filters: is not iterable' }
def test_list_handles_exception(): repo = mock.Mock() error_message = 'Error!!!' repo.list.side_effect = Exception(error_message) request = ListUsersRequest() action = ListUsersAction(repo=repo) response = action.execute(request) assert bool(response) is False assert response.value == { 'type': ResponseFailure.SYSTEM_ERROR, 'message': 'Exception: {}'.format(error_message) }
def test_list_users_action_with_hooks(users): repo = mock.Mock() repo.list.return_value = users request = ListUsersRequest() action = ListUsersAction(repo=repo) before = mock.MagicMock() after = mock.MagicMock() action.add_before_execution_hook(before) action.add_after_execution_hook(after) response = action.execute(request) assert before.called assert after.called assert bool(response) is True assert response.value == repo.list.return_value
def test_list_users_request_with_filters(): filters = dict(name='user') request = ListUsersRequest(filters=filters) assert request.is_valid() is True assert request.filters == filters
def test_list_users_request_without_parameters(): request = ListUsersRequest() assert request.is_valid() is True assert request.filters is None
def test_list_users_request_with_empty_filters(): filters = {} request = ListUsersRequest(filters=filters) assert request.is_valid() is True assert request.filters is None