mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-24 04:51:51 +00:00
79 lines
2.9 KiB
Python
79 lines
2.9 KiB
Python
import pytest
|
|
|
|
from prowler.providers.okta.exceptions.exceptions import (
|
|
OktaBaseException,
|
|
OktaCredentialsError,
|
|
OktaEnvironmentVariableError,
|
|
OktaInsufficientPermissionsError,
|
|
OktaInvalidCredentialsError,
|
|
OktaInvalidOrgDomainError,
|
|
OktaInvalidProviderIdError,
|
|
OktaPrivateKeyFileError,
|
|
OktaSetUpIdentityError,
|
|
OktaSetUpSessionError,
|
|
)
|
|
|
|
EXPECTED_CODES = {
|
|
OktaEnvironmentVariableError: 14000,
|
|
OktaSetUpSessionError: 14001,
|
|
OktaSetUpIdentityError: 14002,
|
|
OktaInvalidCredentialsError: 14003,
|
|
OktaInvalidOrgDomainError: 14004,
|
|
OktaPrivateKeyFileError: 14005,
|
|
OktaInsufficientPermissionsError: 14006,
|
|
OktaInvalidProviderIdError: 14007,
|
|
}
|
|
|
|
|
|
class Test_OktaExceptions:
|
|
def test_all_codes_in_reserved_range(self):
|
|
codes = [c for c, _ in OktaBaseException.OKTA_ERROR_CODES.keys()]
|
|
assert all(14000 <= c <= 14999 for c in codes)
|
|
assert len(codes) == len(set(codes)) # unique
|
|
|
|
def test_all_subclasses_inherit_from_credentials_error(self):
|
|
for exc_cls in EXPECTED_CODES:
|
|
assert issubclass(exc_cls, OktaCredentialsError)
|
|
assert issubclass(exc_cls, OktaBaseException)
|
|
|
|
@pytest.mark.parametrize("exc_cls,code", list(EXPECTED_CODES.items()))
|
|
def test_each_exception_carries_its_code(self, exc_cls, code):
|
|
exc = exc_cls()
|
|
assert exc.code == code
|
|
assert exc.source == "Okta"
|
|
assert exc.message # populated from OKTA_ERROR_CODES
|
|
assert exc.remediation # populated from OKTA_ERROR_CODES
|
|
|
|
@pytest.mark.parametrize("exc_cls", list(EXPECTED_CODES.keys()))
|
|
def test_custom_message_overrides_default(self, exc_cls):
|
|
custom = "specific error context"
|
|
exc = exc_cls(message=custom)
|
|
assert exc.message == custom
|
|
|
|
def test_str_format_includes_class_code_and_message(self):
|
|
exc = OktaInvalidOrgDomainError(message="bad url")
|
|
rendered = str(exc)
|
|
assert "OktaInvalidOrgDomainError" in rendered
|
|
assert "[14004]" in rendered
|
|
assert "bad url" in rendered
|
|
|
|
def test_original_exception_appended_to_str(self):
|
|
original = ValueError("network down")
|
|
exc = OktaSetUpIdentityError(original_exception=original)
|
|
rendered = str(exc)
|
|
assert "network down" in rendered
|
|
|
|
def test_can_be_raised_and_caught(self):
|
|
with pytest.raises(OktaInvalidCredentialsError) as info:
|
|
raise OktaInvalidCredentialsError(message="bad token")
|
|
assert info.value.code == 14003
|
|
assert "bad token" in str(info.value)
|
|
|
|
def test_caught_as_credentials_error_base(self):
|
|
with pytest.raises(OktaCredentialsError):
|
|
raise OktaPrivateKeyFileError(message="empty")
|
|
|
|
def test_caught_as_okta_base_exception(self):
|
|
with pytest.raises(OktaBaseException):
|
|
raise OktaEnvironmentVariableError(message="missing org url")
|