diff --git a/resend/exceptions.py b/resend/exceptions.py index 1d73491..e9c35c2 100644 --- a/resend/exceptions.py +++ b/resend/exceptions.py @@ -208,8 +208,14 @@ def __init__( "missing_required_fields": MissingRequiredFieldsError, "validation_error": ValidationError, }, - "401": {"missing_api_key": MissingApiKeyError}, - "403": {"invalid_api_key": InvalidApiKeyError}, + "401": { + "missing_api_key": MissingApiKeyError, + "validation_error": ValidationError, + }, + "403": { + "invalid_api_key": InvalidApiKeyError, + "validation_error": ValidationError, + }, "429": { "rate_limit_exceeded": RateLimitError, "daily_quota_exceeded": RateLimitError, diff --git a/tests/exceptions_test.py b/tests/exceptions_test.py index 3d88cb0..2ffaa3b 100644 --- a/tests/exceptions_test.py +++ b/tests/exceptions_test.py @@ -47,6 +47,23 @@ def test_validation_error_from_400(self) -> None: raise_for_code_and_type(400, "validation_error", "err") assert e.type is ValidationError + def test_validation_error_from_401(self) -> None: + # Sending endpoints answer an invalid API key with 401 validation_error. + with pytest.raises(ValidationError) as e: + raise_for_code_and_type(401, "validation_error", "API key is invalid") + assert e.type is ValidationError + assert e.value.code == 401 + + def test_validation_error_from_403(self) -> None: + # An unverified sending domain is a 403 validation_error. + with pytest.raises(ValidationError) as e: + raise_for_code_and_type( + 403, "validation_error", "The example.com domain is not verified." + ) + assert e.type is ValidationError + assert e.value.code == 403 + assert e.value.message == "The example.com domain is not verified." + def test_error_500(self) -> None: with pytest.raises(ApplicationError) as e: raise_for_code_and_type(500, "application_error", "err")