From fbc5769b745ed9be4b77a64f2159ed0140b29330 Mon Sep 17 00:00:00 2001 From: Kristopher Chun Date: Wed, 10 Jun 2020 00:54:03 -0700 Subject: [PATCH] =?UTF-8?q?Fix:=20SecretsManager=20-=20Added=20missing=20p?= =?UTF-8?q?op()=20override=20to=20get=5Fsecret=5Fname=E2=80=A6=20(#3057)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: SecretsManager - Added missing pop() override to get_secret_name_from_arn (#3056) * Added test case for delete_secret_force_with_arn (#3057) * Fixed lint for test_delete_secret_force_with_arn (#3057) --- moto/secretsmanager/models.py | 4 ++++ .../test_secretsmanager/test_secretsmanager.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/moto/secretsmanager/models.py b/moto/secretsmanager/models.py index 01acf2db..8641916a 100644 --- a/moto/secretsmanager/models.py +++ b/moto/secretsmanager/models.py @@ -38,6 +38,10 @@ class SecretsStore(dict): new_key = get_secret_name_from_arn(key) return dict.__contains__(self, new_key) + def pop(self, key, *args, **kwargs): + new_key = get_secret_name_from_arn(key) + return super(SecretsStore, self).pop(new_key, *args, **kwargs) + class SecretsManagerBackend(BaseBackend): def __init__(self, region_name=None, **kwargs): diff --git a/tests/test_secretsmanager/test_secretsmanager.py b/tests/test_secretsmanager/test_secretsmanager.py index 0fe23fd7..59992e09 100644 --- a/tests/test_secretsmanager/test_secretsmanager.py +++ b/tests/test_secretsmanager/test_secretsmanager.py @@ -211,6 +211,24 @@ def test_delete_secret_force(): result = conn.get_secret_value(SecretId="test-secret") +@mock_secretsmanager +def test_delete_secret_force_with_arn(): + conn = boto3.client("secretsmanager", region_name="us-west-2") + + create_secret = conn.create_secret(Name="test-secret", SecretString="foosecret") + + result = conn.delete_secret( + SecretId=create_secret["ARN"], ForceDeleteWithoutRecovery=True + ) + + assert result["ARN"] + assert result["DeletionDate"] > datetime.fromtimestamp(1, pytz.utc) + assert result["Name"] == "test-secret" + + with assert_raises(ClientError): + result = conn.get_secret_value(SecretId="test-secret") + + @mock_secretsmanager def test_delete_secret_that_does_not_exist(): conn = boto3.client("secretsmanager", region_name="us-west-2")