示例#1
0
def test_should_return_204_if_load_surveys_returns_empty(
    mock_load: MagicMock, sut: LoadSurveysController
):
    mock_load.return_value = []
    http_response = sut.handle(HttpRequest())
    assert http_response.status_code == 204
    assert not http_response.body
示例#2
0
def test_return_204_on_success(sut: AddSurveyController):
    http_request = HttpRequest(body=dict(
        question="any_question",
        answers=[dict(image="any_image", answer="any_answer")],
    ))
    respose = sut.handle(http_request)
    assert respose.status_code == 204
    assert not respose.body
示例#3
0
def test_should_401_if_invalid_credentials_are_provided(
    mock_auth: MagicMock, sut: LoginController
):
    mock_auth.return_value = None
    request = HttpRequest(body=dict(email="*****@*****.**", password="******"))
    response = sut.handle(request)
    assert response.status_code == 401
    assert response.body["message"] == "Unauthorized"
示例#4
0
def test_should_call_add_survey_correct_values(mock_add: MagicMock,
                                               sut: AddSurveyController):
    http_request = HttpRequest(body=dict(
        question="any_question",
        answers=[dict(image="any_image", answer="any_answer")],
    ))
    sut.handle(http_request)
    mock_add.assert_called_with(AddSurveyModel(**http_request.body))
示例#5
0
def test_should_calls_load_survey_by_id_with_values(
        mock_load_by_id: MagicMock, sut: SaveSurveyResultController):
    sut.handle(
        HttpRequest(
            params=dict(survey_id="any_id"),
            body=dict(answer="any_answer"),
            account_id="any_account_id",
        ))
    mock_load_by_id.assert_called_with("any_id")
示例#6
0
def test_should_500_if_authentication__raise_exception(
    mock_auth: MagicMock, mock_get_collection: MagicMock, sut: LoginController
):
    mock_auth.side_effect = Exception("Error on matrix")
    mock_get_collection.return_value = mongomock.MongoClient().db.collection
    request = HttpRequest(body=dict(email="*****@*****.**", password="******"))
    response = sut.handle(request)
    assert response.status_code == 500
    assert response.body["message"] == "Internal server error"
def test_should_return_500_if_load_account_by_id_raise_exception(
        mock_load: MagicMock, mock_get_collection: MagicMock,
        sut: AuthMiddleware):
    mock_load.side_effect = Exception("Error on matrix")
    mock_get_collection.return_value = mongomock.MongoClient().db.collection
    http_response = sut.handle(
        HttpRequest(headers={"x-access-token": "any_token"}, body=None))
    assert http_response.status_code == 500
    assert http_response.body["message"] == "Internal server error"
def test_should_return_401_if_load_account_by_id_raise_jwt_exception(
        mock_load: MagicMock, mock_get_collection: MagicMock,
        sut: AuthMiddleware):
    mock_load.side_effect = InvalidTokenError()
    mock_get_collection.return_value = mongomock.MongoClient().db.collection
    http_response = sut.handle(
        HttpRequest(headers={"x-access-token": "any_token"}, body=None))
    assert http_response.status_code == 401
    assert http_response.body["message"] == "Unauthorized"
示例#9
0
def test_should_403_if_an_invalid_answer_is_provided(
        sut: SaveSurveyResultController):
    http_response = sut.handle(
        HttpRequest(
            params=dict(survey_id="any_id"),
            body=dict(answer="invalid_answer"),
            account_id="any_account_id",
        ))
    assert http_response.status_code == 403
    assert http_response.body["message"] == "Invalid param: answer"
示例#10
0
def test_return_400_if_validation_fails(mock_validate: MagicMock,
                                        sut: AddSurveyController):
    mock_validate.return_value = Exception("Error on matrix")
    http_request = HttpRequest(body=dict(
        question="any_question",
        answers=[dict(image="any_image", answer="any_answer")],
    ))
    respose = sut.handle(http_request)
    assert respose.status_code == 400
    assert respose.body == {"message": "Error on matrix"}
示例#11
0
def test_should_403_if_load_survey_by_id_returns_none(
        mock_load_by_id: MagicMock, sut: SaveSurveyResultController):
    mock_load_by_id.return_value = None
    http_response = sut.handle(
        HttpRequest(
            params=dict(survey_id="any_id"),
            body=dict(answer="any_answer"),
            account_id="any_account_id",
        ))
    assert http_response.status_code == 403
    assert http_response.body["message"] == "Invalid param: survey_id"
示例#12
0
async def adpter_middleware(request: Request, call_next,
                            middleware: Middleware):
    headers = request.headers
    http_response = middleware.handle(HttpRequest(headers=headers))
    if http_response.status_code == 200:
        request.state.account_id = http_response.body
        response = await call_next(request)
        return response
    else:
        return JSONResponse(status_code=http_response.status_code,
                            content=http_response.body)
示例#13
0
def test_should_call_validation_correct_value(mock_validate: MagicMock,
                                              sut: SignUpController):
    request = HttpRequest(
        body={
            "name": "John Doe",
            "email": "*****@*****.**",
            "password": "******",
            "password_confirmation": "test",
        })
    sut.handle(request)
    mock_validate.assert_called_with(request.body)
示例#14
0
def test_should_204_if_data_is_valid(sut: SignUpController):
    request = HttpRequest(
        body={
            "name": "John Doe",
            "email": "*****@*****.**",
            "password": "******",
            "password_confirmation": "test",
        })

    response = sut.handle(request)
    assert response.status_code == 204
示例#15
0
def test_should_500_if_add_survey_raise_exception(
        mock_add: MagicMock, mock_get_collection: MagicMock,
        sut: AddSurveyController):
    mock_add.side_effect = Exception("Error on matrix")
    mock_get_collection.return_value = mongomock.MongoClient().db.collection
    http_request = HttpRequest(body=dict(
        question="any_question",
        answers=[dict(image="any_image", answer="any_answer")],
    ))
    response = sut.handle(http_request)
    assert response.status_code == 500
    assert response.body["message"] == "Internal server error"
def test_should_200_on_success(sut: LoadSurveyResultController):
    http_response = sut.handle(HttpRequest(params=dict(survey_id="any_id")))
    assert http_response.status_code == 200
    assert http_response.body == dict(
        survey_id="any_id",
        question="any_question",
        answers=[
            dict(answer="any_answer", count=1, percent=40, image="any_image"),
            dict(answer="other_answer", count=2, percent=60,
                 image="any_image"),
        ],
        date=datetime.utcnow(),
    )
示例#17
0
def test_should_400_if_validation_returns_error(mock_validate: MagicMock,
                                                sut: SignUpController):
    mock_validate.return_value = MissingParamError("any_field")
    request = HttpRequest(
        body={
            "name": "John Doe",
            "email": "*****@*****.**",
            "password": "******",
            "password_confirmation": "test",
        })
    response = sut.handle(request)
    assert response.status_code == 400
    assert response.body == dict(message="Missing param: any_field")
示例#18
0
def test_should_500_if_add_account_raise_exception(
        mock_add: MagicMock, mock_get_collection: MagicMock,
        sut: SignUpController):
    mock_add.side_effect = Exception("Error on matrix")
    mock_get_collection.return_value = mongomock.MongoClient().db.collection
    request = HttpRequest(
        body={
            "name": "John Doe",
            "email": "*****@*****.**",
            "password": "******",
            "password_confirmation": "test",
        })
    response = sut.handle(request)
    assert response.status_code == 500
    assert response.body["message"] == "Internal server error"
示例#19
0
def test_should_500_if_load_survey_by_id_raise_exception(
    mock_load_by_id: MagicMock,
    mock_get_collection: MagicMock,
    sut: SaveSurveyResultController,
):
    mock_load_by_id.side_effect = Exception("Error on matrix")
    mock_get_collection.return_value = mongomock.MongoClient().db.collection
    http_response = sut.handle(
        HttpRequest(
            params=dict(survey_id="any_id"),
            body=dict(answer="any_answer"),
            account_id="any_account_id",
        ))
    assert http_response.status_code == 500
    assert http_response.body["message"] == "Internal server error"
示例#20
0
def test_should_200_on_success(sut: SaveSurveyResultController, ):
    http_response = sut.handle(
        HttpRequest(
            params=dict(survey_id="any_survey_id"),
            body=dict(answer="any_answer"),
            account_id="any_account_id",
        ))
    assert http_response.status_code == 200
    assert http_response.body == dict(
        survey_id="any_survey_id",
        question="any_question",
        answers=[
            dict(answer="any_answer", count=1, percent=100, image="any_image")
        ],
        date=datetime.utcnow(),
    )
示例#21
0
def test_should_calls_save_survey_result_with_values(
    mock_save: MagicMock,
    mock_get_collection: MagicMock,
    sut: SaveSurveyResultController,
):
    mock_get_collection.return_value = mongomock.MongoClient().db.collection
    sut.handle(
        HttpRequest(
            params=dict(survey_id="any_id"),
            body=dict(answer="any_answer"),
            account_id="any_account_id",
        ))
    mock_save.assert_called_with(
        SaveSurveyResultModel(survey_id="any_id",
                              account_id="any_account_id",
                              answer="any_answer"))
示例#22
0
async def adpter_route(request: Request, response: Response,
                       controller: Controller):
    body = await request.body()
    headers = request.headers
    params = request.path_params
    account_id = getattr(request.state, "account_id", None)
    http_response = controller.handle(
        HttpRequest(
            headers=headers,
            params=params,
            account_id=account_id,
            body=json.loads(body or "{}"),
        ))
    response.status_code = http_response.status_code
    if http_response.status_code == 204:
        return Response(status_code=204)
    return http_response.body
示例#23
0
def test_should_return_200_on_success(sut: LoadSurveysController):
    http_response = sut.handle(HttpRequest())
    expected = [
        dict(
            id="any_id",
            question="any_question",
            answers=[dict(image="any_image", answer="any_answer")],
            date=datetime.utcnow(),
        ),
        dict(
            id="other_id",
            question="other_question",
            answers=[dict(image="other_image", answer="other_answer")],
            date=datetime.utcnow(),
        ),
    ]
    assert http_response.status_code == 200
    assert http_response.body == expected
示例#24
0
def test_should_call_add_account_correct_values(mock_add: MagicMock,
                                                sut: SignUpController):
    mock_add.return_value = AccountModel(
        id="valid_id",
        name="valid_name",
        email="*****@*****.**",
        hashed_password="******",
    )

    request = HttpRequest(
        body={
            "name": "John Doe",
            "email": "*****@*****.**",
            "password": "******",
            "password_confirmation": "test",
        })
    sut.handle(request)
    expected = AddAccountModel(
        name="John Doe",
        email="*****@*****.**",
        password="******",
    )
    mock_add.assert_called_with(expected)
def test_should_500_if_load_survey_result_raise_exception(
        mock_load: MagicMock, sut: LoadSurveyResultController):
    mock_load.side_effect = Exception("Error on matrix")
    http_response = sut.handle(HttpRequest(params=dict(survey_id="any_id")))
    assert http_response.status_code == 500
    assert http_response.body["message"] == "Internal server error"
def test_should_return_200_if_load_account_by_id_returns_an_account(
    sut: AuthMiddleware, ):
    http_response = sut.handle(
        HttpRequest(headers={"x-access-token": "any_token"}, body=None))
    assert http_response.status_code == 200
    assert http_response.body
def test_should_return_403_if_load_account_by_id_returns_none(
        mock_load: MagicMock, sut: AuthMiddleware):
    mock_load.return_value = None
    http_response = sut.handle(
        HttpRequest(headers={"x-access-token": "any_token"}, body=None))
    assert http_response.status_code == 403
def test_should_calls_load_account_by_id_correct_values(
        mock_load: MagicMock, sut: AuthMiddleware):
    sut.handle(HttpRequest(headers={"x-access-token": "any_token"}, body=None))
    mock_load.assert_called_with(access_token="any_token", role=None)
def test_should_return_403_if_no_access_token_exists_in_headers(
        sut: AuthMiddleware):
    http_response = sut.handle(HttpRequest(headers=None, body=None))
    assert http_response.status_code == 403
    assert http_response.body["message"] == "Access danied"
def test_should_call_load_survey_result_with_correct_value(
        mock_load: MagicMock, sut: LoadSurveyResultController):
    mock_load.side_effect = Exception("Error on matrix")
    sut.handle(HttpRequest(params=dict(survey_id="any_id")))
    mock_load.assert_called_with("any_id")