Esempio n. 1
0
def test_get_token_data_fail(jwt_secret_key, jwt_algorithm):
    auth_application_service = AuthApplicationService(
        user_application_service=mock.Mock(spec=UserApplicationService),
        jwt_secret_key=jwt_secret_key,
        jwt_algorithm=jwt_algorithm,
    )
    input_dto = GetTokenDataInputDto(access_token="wrong jwt token")

    actual = auth_application_service.get_token_data(input_dto)
    expected = FailedOutputDto.build_unauthorized_error(message="올바른 access-token이 아닙니다.")
    assert actual == expected
 def verify_token(
     self, input_dto: VerifyTokenInputDto
 ) -> Union[VerifyTokenOutputDto, FailedOutputDto]:
     """
     현재 사용하지 않음.
     """
     try:
         decoded_jwt = jwt.decode(
             token=input_dto.access_token,
             key=self._JWT_SECRET_KEY,
             algorithms=self._JWT_ALGORITHM,
         )
         if TokenPayload(**decoded_jwt) == TokenPayload(
                 user_id=input_dto.user_id):
             return VerifyTokenOutputDto()
         return FailedOutputDto.build_unauthorized_error(
             message="access-token이 유효하지 않습니다.")
     except JWTError:
         return FailedOutputDto.build_unauthorized_error(
             message="올바른 access-token이 아닙니다.")
     except Exception as e:
         return FailedOutputDto.build_system_error(message=str(e))
 def get_token_data(
     self, input_dto: GetTokenDataInputDto
 ) -> Union[GetTokenDataOutputDto, FailedOutputDto]:
     try:
         decoded_jwt = jwt.decode(
             token=input_dto.access_token,
             key=self._JWT_SECRET_KEY,
             algorithms=self._JWT_ALGORITHM,
         )
         token_payload = TokenPayload(**decoded_jwt)
         return GetTokenDataOutputDto(user_id=token_payload.user_id)
     except JWTError:
         return FailedOutputDto.build_unauthorized_error(
             message="올바른 access-token이 아닙니다.")
Esempio n. 4
0
 def login(
         self, input_dto: LoginInputDto
 ) -> Union[LoginOutputDto, FailedOutputDto]:
     try:
         user_id = UserId(value=input_dto.user_id)
         user = self._user_repository.find_by_user_id(user_id=user_id)
         if not self._verify_password(input_dto.password, user.password):
             return FailedOutputDto.build_unauthorized_error(
                 f"잘못된 비밀번호 입니다.")
         return LoginOutputDto()
     except ResourceNotFoundError as e:
         return FailedOutputDto.build_resource_not_found_error(
             message=str(e))
     except Exception as e:
         return FailedOutputDto.build_system_error(message=str(e))
def test_login_fail_with_wrong_password(user_repository_mock, user_id,
                                        user_name, password):
    wrong_password = "******"
    user_repository_mock.find_by_user_id.return_value = User(
        id=UserId(value=user_id),
        name=UserName(value=user_name),
        password="******",
    )
    user_application_service = UserApplicationService(
        user_repository=user_repository_mock)

    input_dto = LoginInputDto(user_id=user_id, password=wrong_password)
    actual = user_application_service.login(input_dto)
    expected = FailedOutputDto.build_unauthorized_error(
        message=f"잘못된 비밀번호 입니다.")
    assert actual == expected
Esempio n. 6
0
def test_update_review(client, app):
    application_service_mock = mock.Mock(ReviewApplicationService)
    auth_service_mock = mock.Mock(AuthApplicationService)

    # unauthorized token
    auth_service_mock.get_token_data.return_value = FailedOutputDto.build_unauthorized_error(
    )
    application_service_mock.create_review.return_value = CreateReviewOutputDto(
        review_id="review_id_uuid",
        drink_id="drink_id_uuid",
        user_id="user_id_uuid",
        rating=4,
        comment="review comment",
        created_at=123.123,
        updated_at=123.123,
    )
    with app.container.review_application_service.override(
            application_service_mock):
        with app.container.auth_application_service.override(
                auth_service_mock):
            response = client.put(
                "/reviews",
                headers={
                    "access-token":
                    "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiaGV1bXNpIn0.OuFWvZ07CwSzR1j7I-wxFHweVb6sB8_U2LezYL7nz3I"
                },
                json=UpdateReviewJsonRequest(
                    review_id="review_id_uuid",
                    rating=4,
                    comment="updated review comment",
                ).dict(),
            )
        assert response.status_code == 401
        assert response.json() == {
            "error_type": "Unauthorized Error",
            "message": "",
        }

    # invalid request
    application_service_mock.create_review.return_value = FailedOutputDto.build_resource_not_found_error(
    )
    with app.container.review_application_service.override(
            application_service_mock):
        response = client.post(
            "/reviews",
            headers={
                "access-token":
                "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiaGV1bXNpIn0.OuFWvZ07CwSzR1j7I-wxFHweVb6sB8_U2LezYL7nz3I"
            },
            json=CreateReviewJsonRequest(
                drink_id="drink_id_uuid",
                rating=4,
                comment="review comment",
            ).dict(),
        )
    assert response.status_code == 404
    assert response.json() == {
        "error_type": "Resource Not Found Error",
        "message": "",
    }

    # valid request
    application_service_mock.create_review.return_value = CreateReviewOutputDto(
        review_id="review_id_uuid",
        drink_id="drink_id_uuid",
        user_id="user_id_uuid",
        rating=4,
        comment="review comment",
        created_at=123.123,
        updated_at=123.123,
    )
    with app.container.review_application_service.override(
            application_service_mock):
        response = client.post(
            "/reviews",
            headers={
                "access-token":
                "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiaGV1bXNpIn0.OuFWvZ07CwSzR1j7I-wxFHweVb6sB8_U2LezYL7nz3I"
            },
            json=CreateReviewJsonRequest(
                drink_id="drink_id_uuid",
                rating=4,
                comment="review comment",
            ).dict(),
        )
    assert response.status_code == 201
    assert response.json() == {
        "review_id": "review_id_uuid",
        "drink_id": "drink_id_uuid",
        "rating": 4,
        "comment": "review comment",
        "created_at": 123.123,
        "updated_at": 123.123,
    }