Skip to content

Commit

Permalink
Add new exception types
Browse files Browse the repository at this point in the history
* Fix hvac#1093 by adding PreconditionFailed exception for status code 412
* Add UnsupportedOperation exception for status code 405
  • Loading branch information
mweigel committed Apr 4, 2024
1 parent 48027db commit fc6c8e5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 13 deletions.
10 changes: 10 additions & 0 deletions hvac/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ def from_status(cls, status_code: int, *args, **kwargs):
401: Unauthorized,
403: Forbidden,
404: InvalidPath,
405: UnsupportedOperation,
412: PreconditionFailed,
429: RateLimitExceeded,
500: InternalServerError,
501: VaultNotInitialized,
Expand All @@ -49,6 +51,14 @@ class InvalidPath(VaultError):
pass


class UnsupportedOperation(VaultError):
pass


class PreconditionFailed(VaultError):
pass


class RateLimitExceeded(VaultError):
pass

Expand Down
2 changes: 1 addition & 1 deletion tests/integration_tests/api/auth_methods/test_gcp.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ def test_read_config(self, label):
param(
"no existing config",
write_config_first=False,
raises=exceptions.UnexpectedError,
raises=exceptions.UnsupportedOperation,
),
]
)
Expand Down
30 changes: 18 additions & 12 deletions tests/unit_tests/api/secrets_engines/test_gcp.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
ParamValidationError,
InvalidRequest,
InvalidPath,
UnexpectedError,
UnsupportedOperation,
InternalServerError,
)

Expand Down Expand Up @@ -268,7 +268,7 @@ def test_create_or_update_roleset(
[
param(method="POST", expected_status_code=204),
param(method="POST", expected_status_code=400, raises=InvalidRequest),
param(method="POST", expected_status_code=405, raises=UnexpectedError),
param(method="POST", expected_status_code=405, raises=UnsupportedOperation),
]
)
def test_rotate_roleset_account(
Expand Down Expand Up @@ -309,7 +309,7 @@ def test_rotate_roleset_account(
[
param(method="POST", expected_status_code=204),
param(method="POST", expected_status_code=400, raises=InvalidRequest),
param(method="POST", expected_status_code=405, raises=UnexpectedError),
param(method="POST", expected_status_code=405, raises=UnsupportedOperation),
]
)
def test_rotate_roleset_account_key(
Expand Down Expand Up @@ -382,7 +382,7 @@ def test_rotate_roleset_account_key(
method="GET",
expected_status_code=405,
secret_type="service_account_key",
raises=UnexpectedError,
raises=UnsupportedOperation,
),
]
)
Expand Down Expand Up @@ -435,7 +435,7 @@ def test_read_roleset(
expected_response={"data": {"keys": ["roleset-01", "roleset-02"]}},
),
param(method="LIST", expected_status_code=404, raises=InvalidPath),
param(method="LIST", expected_status_code=405, raises=UnexpectedError),
param(method="LIST", expected_status_code=405, raises=UnsupportedOperation),
]
)
def test_list_rolesets(
Expand Down Expand Up @@ -471,7 +471,9 @@ def test_list_rolesets(
[
param(method="DELETE", expected_status_code=204),
param(method="DELETE", expected_status_code=404, raises=InvalidPath),
param(method="DELETE", expected_status_code=405, raises=UnexpectedError),
param(
method="DELETE", expected_status_code=405, raises=UnsupportedOperation
),
]
)
def test_delete_roleset(
Expand Down Expand Up @@ -712,7 +714,7 @@ def test_create_or_update_static_account(
param(
method="POST",
expected_status_code=405,
raises=UnexpectedError,
raises=UnsupportedOperation,
expected_response={
"errors": ["cannot rotate key for non-access-token static account"]
},
Expand Down Expand Up @@ -789,7 +791,7 @@ def test_rotate_static_account_key(
method="GET",
expected_status_code=405,
secret_type="service_account_key",
raises=UnexpectedError,
raises=UnsupportedOperation,
),
]
)
Expand Down Expand Up @@ -846,7 +848,7 @@ def test_read_static_account(
},
),
param(method="LIST", expected_status_code=404, raises=InvalidPath),
param(method="LIST", expected_status_code=405, raises=UnexpectedError),
param(method="LIST", expected_status_code=405, raises=UnsupportedOperation),
]
)
def test_list_static_accounts(
Expand Down Expand Up @@ -883,7 +885,9 @@ def test_list_static_accounts(
[
param(method="DELETE", expected_status_code=204),
param(method="DELETE", expected_status_code=404, raises=InvalidPath),
param(method="DELETE", expected_status_code=405, raises=UnexpectedError),
param(
method="DELETE", expected_status_code=405, raises=UnsupportedOperation
),
]
)
def test_delete_static_account(
Expand Down Expand Up @@ -1186,7 +1190,7 @@ def test_read_impersonated_account(
},
),
param(method="LIST", expected_status_code=404, raises=InvalidPath),
param(method="LIST", expected_status_code=405, raises=UnexpectedError),
param(method="LIST", expected_status_code=405, raises=UnsupportedOperation),
]
)
def test_list_impersonated_accounts(
Expand Down Expand Up @@ -1225,7 +1229,9 @@ def test_list_impersonated_accounts(
[
param(method="DELETE", expected_status_code=204),
param(method="DELETE", expected_status_code=404, raises=InvalidPath),
param(method="DELETE", expected_status_code=405, raises=UnexpectedError),
param(
method="DELETE", expected_status_code=405, raises=UnsupportedOperation
),
]
)
def test_delete_impersonated_account(
Expand Down

0 comments on commit fc6c8e5

Please sign in to comment.