document_redaction / test /test_comprehend_connectivity.py
seanpedrickcase's picture
Sync: Removed some file name references
c8f17c4
Raw
History Blame Contribute Delete
1.6 kB
"""Fast-fail AWS Comprehend connectivity helpers."""
from unittest.mock import MagicMock
import botocore.exceptions
import pytest
pytest.importorskip("regex")
from tools.data_anonymise import (
_comprehend_connectivity_error_message,
_is_non_retryable_aws_error,
verify_comprehend_connectivity,
)
def test_is_non_retryable_aws_error_token_retrieval():
err = botocore.exceptions.TokenRetrievalError(
provider="sso",
error_msg="Token has expired and refresh failed",
)
assert _is_non_retryable_aws_error(err) is True
def test_is_non_retryable_aws_error_access_denied_client_error():
err = botocore.exceptions.ClientError(
{"Error": {"Code": "AccessDeniedException", "Message": "denied"}},
"DetectPiiEntities",
)
assert _is_non_retryable_aws_error(err) is True
def test_verify_comprehend_connectivity_success():
client = MagicMock()
client.detect_pii_entities.return_value = {"Entities": []}
verify_comprehend_connectivity(client, "en")
client.detect_pii_entities.assert_called_once()
def test_verify_comprehend_connectivity_expired_sso_raises_clear_message():
client = MagicMock()
client.detect_pii_entities.side_effect = botocore.exceptions.TokenRetrievalError(
provider="sso",
error_msg="Token has expired and refresh failed",
)
with pytest.raises(Exception, match="SSO token has expired"):
verify_comprehend_connectivity(client, "en")
assert "aws sso login" in _comprehend_connectivity_error_message(
client.detect_pii_entities.side_effect
)