# -*- coding: utf-8 -*- """ Tests for exceptions module. """ import pytest from apollo_utils.service.exceptions import APIError, BadGateway, BadRequest, ServiceUnavailable, TooManyRequests, \ Unauthorized, UnsupportedMediaType @pytest.mark.parametrize( "detail,code,status_code,extra", ( (None, None, None, None), ("Bad Request.", "bad_request", 400, {"foo": "bar"}), ("Bad Request.", "bad_request", 400, {"foo": "bar"}), ("Not Found.", "not_found", 404, {"url": "example.com"}), ("Bad Gateway.", "bad_gateway", None, None), ), ) def test_api_error(detail, status_code, code, extra): obj = APIError() obj.detail = detail obj.code = code obj.extra = extra result = {"code": code, "detail": detail} if status_code: obj.status_code = status_code if obj.extra: obj.extra = extra result.update({"extra": extra}) assert obj.to_dict() == result @pytest.mark.parametrize( "error_class,result_dict", ( (BadRequest, {"code": "bad_request", "detail": "Bad Request."}), (Unauthorized, {"code": "unauthorized", "detail": "Unauthorized."}), (UnsupportedMediaType, {"code": "unsupported_media_type", "detail": "Unsupported Media Type."}), (TooManyRequests, {"code": "too_many_requests", "detail": "Too Many Requests."}), (BadGateway, {"code": "bad_gateway", "detail": "Bad Gateway."}), (ServiceUnavailable, {"code": "service_unavailable", "detail": "Service Unavailable."}), ), ) def test_subclasses(error_class, result_dict): error_obj = error_class() assert error_obj.to_dict() == result_dict