def get_all_products(response: Response, authorization: str = Header(None)): try: auth_user = cognito_auth.verify_token(authorization) products: [] = products_service.get_products(auth_user.id) for product in products: del product.user_id return products except ApiException as exception: return __handle_rest_api_exception(response, exception) except Exception as exception: return __handle_unexpected_exception(response)
def delete_product(product_id: str, response: Response, authorization: str = Header(None)): try: auth_user = cognito_auth.verify_token(authorization) validate_product_id(product_id) products_service.delete_product(auth_user.id, product_id) return {} except ApiException as exception: return __handle_rest_api_exception(response, exception) except Exception as exception: return __handle_unexpected_exception(response)
def create_product(product_dto: ProductCreateDto, response: Response, authorization: str = Header(None)): try: auth_user = cognito_auth.verify_token(authorization) product_dto.validate_model() product: Product = product_dto.parse_to_product() product.user_id = auth_user.id products_service.create_product(product) response.headers.append("Location", "/produtos/{}".format(product.id)) return {} except ApiException as exception: return __handle_rest_api_exception(response, exception) except Exception as exception: return __handle_unexpected_exception(response)
def patch_product(product_id: str, product_dto: ProductPatchDto, response: Response, authorization: str = Header(None)): try: auth_user = cognito_auth.verify_token(authorization) validate_product_id(product_id) product_dto.validate_model() product: Product = product_dto.parse_to_product() product.id = product_id product.user_id = auth_user.id products_service.update_product(product, UPDATE_ONLY_FILLED_FIELDS) return {} except ApiException as exception: return __handle_rest_api_exception(response, exception) except Exception as exception: return __handle_unexpected_exception(response)
def test_should_raise_authentication_exception_when_token_is_invalid(self): expected_exception = exceptions.get( exceptions.USER_NOT_AUTHORIZED_EXCEPTION) with self.assertRaises(ApiException) as context: cognito_auth.verify_token(self.DEFAULT_NONE_TOKEN) self.assertEqual(expected_exception.code, context.exception.code) with self.assertRaises(ApiException) as context: cognito_auth.verify_token(self.DEFAULT_WITHOUT_BEARER_TOKEN) self.assertEqual(expected_exception.code, context.exception.code) with self.assertRaises(ApiException) as context: cognito_auth.verify_token(self.DEFAULT_WITH_EMPTY_TOKEN) self.assertEqual(expected_exception.code, context.exception.code)