diff --git a/moto/secretsmanager/exceptions.py b/moto/secretsmanager/exceptions.py index d4563dc4..7ef1a923 100644 --- a/moto/secretsmanager/exceptions.py +++ b/moto/secretsmanager/exceptions.py @@ -15,6 +15,7 @@ class ResourceNotFoundException(SecretsManagerClientError): ) +# Using specialised exception due to the use of a non-ASCII character class SecretNotFoundException(SecretsManagerClientError): def __init__(self): self.code = 404 @@ -24,6 +25,17 @@ class SecretNotFoundException(SecretsManagerClientError): ) +# Using specialised exception due to the use of a non-ASCII character +class SecretHasNoValueException(SecretsManagerClientError): + def __init__(self, version_stage): + self.code = 404 + super(SecretHasNoValueException, self).__init__( + "ResourceNotFoundException", + message=u"Secrets Manager can\u2019t find the specified secret " + u"value for staging label: {}".format(version_stage) + ) + + class ClientError(SecretsManagerClientError): def __init__(self, message): super(ClientError, self).__init__( diff --git a/moto/secretsmanager/models.py b/moto/secretsmanager/models.py index 1e9d6a51..e1a380c3 100644 --- a/moto/secretsmanager/models.py +++ b/moto/secretsmanager/models.py @@ -10,8 +10,8 @@ import boto3 from moto.core import BaseBackend, BaseModel from .exceptions import ( - ResourceNotFoundException, SecretNotFoundException, + SecretHasNoValueException, InvalidParameterException, ResourceExistsException, InvalidRequestException, @@ -87,10 +87,7 @@ class SecretsManagerBackend(BaseBackend): response_data["SecretBinary"] = secret_version['secret_binary'] if 'secret_string' not in secret_version and 'secret_binary' not in secret_version: - raise ResourceNotFoundException( - u"Secrets Manager can\u2019t find the specified secret value for staging label: %s" % - (version_stage or u"AWSCURRENT") - ) + raise SecretHasNoValueException(version_stage or u"AWSCURRENT") response = json.dumps(response_data)