Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,30 @@
# Change Log (v2.8.1+)

## v4.1.1 [2025-03-05]

__What's New:__

* None

__Enhancements:__

* None

__Bug Fixes:__

* Added missing `409 Conflict` to `exceptions.allowed_exceptions`
* Added missing zero in the `PP-` errors in `exceptions.badrequest`
* Raise specific `InvalidTenantError` when DNS resolution fails in `helpers.utils.parse_tenant`.
* Updated type hint typo, from `list` to `dict`, in `[my_access|my_resources].list`.

__Dependencies:__

* `jmespath >= 1.0.1`

__Other:__

* None

## v4.1.0 [2025-02-28]

__What's New:__
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ classifiers = [
license = {file = "LICENSE"}
requires-python = ">=3.9"
dependencies = [
"requests>=2.32.0"
"requests>=2.32.0",
"jmespath>=1.0.1"
]
dynamic = ["version"]
keywords = ["britive", "cpam", "identity", "jit"]
Expand Down
2 changes: 1 addition & 1 deletion src/britive/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '4.1.0'
__version__ = '4.1.1'
5 changes: 5 additions & 0 deletions src/britive/exceptions/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ class ApprovalWorkflowTimedOut(BritiveException):
pass


class Conflict(BritiveException):
pass


class ForbiddenRequest(BritiveException):
pass

Expand Down Expand Up @@ -165,6 +169,7 @@ class UserNotAssociatedWithDefaultIdentityProvider(BritiveException):
403: ForbiddenRequest,
404: NotFound,
405: MethodNotAllowed,
409: Conflict,
500: InternalServerError,
503: ServiceUnavailable,
}
12 changes: 6 additions & 6 deletions src/britive/exceptions/badrequest.py
Original file line number Diff line number Diff line change
Expand Up @@ -473,12 +473,12 @@ class GenericError(BritiveBadRequestException):
'PF-0002': ProfileFavoriteDeleteError,
'PF-0003': ProfileFavoriteReadError,
# Profile Policy related
'PP-001': ProfilePolicyPermissionsError,
'PP-002': ProfilePolicyInvalidTokenError,
'PP-003': ProfilePolicyCreationError,
'PP-004': ProfilePolicyUpdateError,
'PP-005': ProfilePolicyGenericError,
'PP-006': ProfilePolicyCreationUpdateError,
'PP-0001': ProfilePolicyPermissionsError,
'PP-0002': ProfilePolicyInvalidTokenError,
'PP-0003': ProfilePolicyCreationError,
'PP-0004': ProfilePolicyUpdateError,
'PP-0005': ProfilePolicyGenericError,
'PP-0006': ProfilePolicyCreationUpdateError,
# Profile request related
'PR-0001': ProfileRequestError,
# Access Broker related
Expand Down
4 changes: 2 additions & 2 deletions src/britive/helpers/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from britive.exceptions import BritiveException, InvalidFederationProvider, allowed_exceptions
from britive.exceptions.badrequest import bad_request_code_map
from britive.exceptions.generic import generic_code_map
from britive.exceptions.unauthorized import unauthorized_code_map
from britive.exceptions.unauthorized import InvalidTenantError, unauthorized_code_map
from britive.federation_providers import (
AwsFederationProvider,
AzureSystemAssignedManagedIdentityFederationProvider,
Expand Down Expand Up @@ -69,7 +69,7 @@ def parse_tenant(tenant: str) -> str:
socket.getaddrinfo(host=resolved_domain, port=443) # validate the hostname is real
return resolved_domain # and if so set the tenant accordingly
except socket.gaierror as e:
raise Exception(f'Invalid tenant provided: {tenant}. DNS resolution failed.') from e
raise InvalidTenantError(f'Invalid tenant provided: {tenant}. DNS resolution failed.') from e


def response_has_no_content(response) -> bool:
Expand Down
4 changes: 2 additions & 2 deletions src/britive/my_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,14 @@ def __init__(self, britive) -> None:
self.withdraw_approval_request = __my_requests.withdraw_approval_request
self.withdraw_approval_request_by_name = __my_requests.withdraw_approval_request_by_name

def list(self, filter_text: str = None, search_text: str = None, size: int = None) -> list:
def list(self, filter_text: str = None, search_text: str = None, size: int = None) -> dict:
"""
List the access details for the current user.

:param filter_text: filter details by key, using eq|co|sw operators, e.g. `filter_text='key co text'`
:param search_text: filter details by search text.
:param size: reduce the size of the response to the specified limit.
:return: List of profiles.
:return: Dict of access details.
"""

params = {'type': 'sdk'}
Expand Down
4 changes: 2 additions & 2 deletions src/britive/my_resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ def __init__(self, britive) -> None:
self.withdraw_approval_request_by_name = __my_requests.withdraw_approval_request_by_name

# Let's just mimic my_access.list functionality for now.
def list(self, filter_text: str = None, list_type: str = None, search_text: str = None, size: int = None) -> list:
def list(self, filter_text: str = None, list_type: str = None, search_text: str = None, size: int = None) -> dict:
"""
List the resource details for the current user.

:param filter_text: filter resource by key, e.g. `filter_text='key eq env'`
:param list_type: filter resources by type, e.g. `list_type='frequently-used'`
:param search_text: filter resources by search text.
:param size: reduce the size of the response to the specified limit.
:return: List of profiles.
:return: Dict of resource details.
"""

params = {}
Expand Down