FIX:Add secrets Manager Tag resource Funtionality (#3392)

* FIX:Add secrets Manager Tag resoruce Funtionality

* Fixed review comments

Co-authored-by: usmankb <usman@krazybee.com>
This commit is contained in:
usmangani1 2020-10-22 15:44:32 +05:30 committed by GitHub
parent 9eb58eea41
commit 14980371d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 0 deletions

View File

@ -565,6 +565,19 @@ class SecretsManagerBackend(BaseBackend):
return secret.arn, secret.name
def tag_resource(self, secret_id, tags):
if secret_id not in self.secrets.keys():
raise SecretNotFoundException()
secret = self.secrets[secret_id]
old_tags = secret.tags
for tag in tags:
old_tags.append(tag)
return secret_id
@staticmethod
def get_resource_policy(secret_id):
resource_policy = {

View File

@ -157,3 +157,8 @@ class SecretsManagerResponse(BaseResponse):
return secretsmanager_backends[self.region].get_resource_policy(
secret_id=secret_id
)
def tag_resource(self):
secret_id = self._get_param("SecretId")
tags = self._get_param("Tags", if_none=[])
return secretsmanager_backends[self.region].tag_resource(secret_id, tags)

View File

@ -912,3 +912,33 @@ def test_update_secret_marked_as_deleted_after_restoring():
assert updated_secret["ARN"]
assert updated_secret["Name"] == "test-secret"
assert updated_secret["VersionId"] != ""
@mock_secretsmanager
def test_tag_resource():
conn = boto3.client("secretsmanager", region_name="us-west-2")
conn.create_secret(Name="test-secret", SecretString="foosecret")
conn.tag_resource(
SecretId="test-secret", Tags=[{"Key": "FirstTag", "Value": "SomeValue"},],
)
conn.tag_resource(
SecretId="test-secret", Tags=[{"Key": "SecondTag", "Value": "AnotherValue"},],
)
secrets = conn.list_secrets()
assert secrets["SecretList"][0].get("Tags") == [
{"Key": "FirstTag", "Value": "SomeValue"},
{"Key": "SecondTag", "Value": "AnotherValue"},
]
with assert_raises(ClientError) as cm:
conn.tag_resource(
SecretId="dummy-test-secret",
Tags=[{"Key": "FirstTag", "Value": "SomeValue"},],
)
assert_equal(
"Secrets Manager can't find the specified secret.",
cm.exception.response["Error"]["Message"],
)