Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AWS] Fix: Handle NoneType response in is_access_denied_exception #1046

Merged
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions integrations/aws/tests/test_sample.py

This file was deleted.

27 changes: 27 additions & 0 deletions integrations/aws/tests/test_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from utils.misc import is_access_denied_exception
from typing import Optional, Dict, Any


class MockException(Exception):
def __init__(self, response: Optional[Dict[str, Any]]) -> None:
self.response = response


def test_access_denied_exception_with_response() -> None:
e = MockException(response={"Error": {"Code": "AccessDenied"}})
assert is_access_denied_exception(e) is True
phalbert marked this conversation as resolved.
Show resolved Hide resolved


def test_access_denied_exception_without_response() -> None:
e = MockException(response=None)
assert is_access_denied_exception(e) is False
phalbert marked this conversation as resolved.
Show resolved Hide resolved


def test_access_denied_exception_with_other_error() -> None:
e = MockException(response={"Error": {"Code": "SomeOtherError"}})
assert is_access_denied_exception(e) is False
phalbert marked this conversation as resolved.
Show resolved Hide resolved


def test_access_denied_exception_no_response_attribute() -> None:
e = Exception("Test exception")
assert is_access_denied_exception(e) is False
phalbert marked this conversation as resolved.
Show resolved Hide resolved
2 changes: 1 addition & 1 deletion integrations/aws/utils/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def is_access_denied_exception(e: Exception) -> bool:
"UnauthorizedOperation",
]

if hasattr(e, "response"):
if hasattr(e, "response") and e.response is not None:
error_code = e.response.get("Error", {}).get("Code")
return error_code in access_denied_error_codes

Expand Down