parent
f7d490167b
commit
097a260dce
@ -346,7 +346,8 @@ class KmsBackend(BaseBackend):
|
||||
|
||||
return plaintext, ciphertext_blob, arn
|
||||
|
||||
def list_resource_tags(self, key_id):
|
||||
def list_resource_tags(self, key_id_or_arn):
|
||||
key_id = self.get_key_id(key_id_or_arn)
|
||||
if key_id in self.keys:
|
||||
return self.tagger.list_tags_for_resource(key_id)
|
||||
raise JsonRESTError(
|
||||
@ -354,7 +355,8 @@ class KmsBackend(BaseBackend):
|
||||
"The request was rejected because the specified entity or resource could not be found.",
|
||||
)
|
||||
|
||||
def tag_resource(self, key_id, tags):
|
||||
def tag_resource(self, key_id_or_arn, tags):
|
||||
key_id = self.get_key_id(key_id_or_arn)
|
||||
if key_id in self.keys:
|
||||
self.tagger.tag_resource(key_id, tags)
|
||||
return {}
|
||||
@ -363,7 +365,8 @@ class KmsBackend(BaseBackend):
|
||||
"The request was rejected because the specified entity or resource could not be found.",
|
||||
)
|
||||
|
||||
def untag_resource(self, key_id, tag_names):
|
||||
def untag_resource(self, key_id_or_arn, tag_names):
|
||||
key_id = self.get_key_id(key_id_or_arn)
|
||||
if key_id in self.keys:
|
||||
self.tagger.untag_resource_using_names(key_id, tag_names)
|
||||
return {}
|
||||
|
@ -671,6 +671,18 @@ def test__assert_default_policy():
|
||||
sort = lambda l: sorted(l, key=lambda d: d.keys())
|
||||
|
||||
|
||||
def _check_tags(key_id, created_tags, client):
|
||||
result = client.list_resource_tags(KeyId=key_id)
|
||||
actual = result.get("Tags", [])
|
||||
assert sort(created_tags) == sort(actual)
|
||||
|
||||
client.untag_resource(KeyId=key_id, TagKeys=["key1"])
|
||||
|
||||
actual = client.list_resource_tags(KeyId=key_id).get("Tags", [])
|
||||
expected = [{"TagKey": "key2", "TagValue": "value2"}]
|
||||
assert sort(expected) == sort(actual)
|
||||
|
||||
|
||||
@mock_kms
|
||||
def test_key_tag_on_create_key_happy():
|
||||
client = boto3.client("kms", region_name="us-east-1")
|
||||
@ -680,17 +692,19 @@ def test_key_tag_on_create_key_happy():
|
||||
{"TagKey": "key2", "TagValue": "value2"},
|
||||
]
|
||||
key = client.create_key(Description="test-key-tagging", Tags=tags)
|
||||
key_id = key["KeyMetadata"]["KeyId"]
|
||||
_check_tags(key["KeyMetadata"]["KeyId"], tags, client)
|
||||
|
||||
result = client.list_resource_tags(KeyId=key_id)
|
||||
actual = result.get("Tags", [])
|
||||
assert sort(tags) == sort(actual)
|
||||
|
||||
client.untag_resource(KeyId=key_id, TagKeys=["key1"])
|
||||
@mock_kms
|
||||
def test_key_tag_on_create_key_on_arn_happy():
|
||||
client = boto3.client("kms", region_name="us-east-1")
|
||||
|
||||
actual = client.list_resource_tags(KeyId=key_id).get("Tags", [])
|
||||
expected = [{"TagKey": "key2", "TagValue": "value2"}]
|
||||
assert sort(expected) == sort(actual)
|
||||
tags = [
|
||||
{"TagKey": "key1", "TagValue": "value1"},
|
||||
{"TagKey": "key2", "TagValue": "value2"},
|
||||
]
|
||||
key = client.create_key(Description="test-key-tagging", Tags=tags)
|
||||
_check_tags(key["KeyMetadata"]["Arn"], tags, client)
|
||||
|
||||
|
||||
@mock_kms
|
||||
@ -704,16 +718,21 @@ def test_key_tag_added_happy():
|
||||
{"TagKey": "key2", "TagValue": "value2"},
|
||||
]
|
||||
client.tag_resource(KeyId=key_id, Tags=tags)
|
||||
_check_tags(key_id, tags, client)
|
||||
|
||||
result = client.list_resource_tags(KeyId=key_id)
|
||||
actual = result.get("Tags", [])
|
||||
assert sort(tags) == sort(actual)
|
||||
|
||||
client.untag_resource(KeyId=key_id, TagKeys=["key1"])
|
||||
@mock_kms
|
||||
def test_key_tag_added_arn_based_happy():
|
||||
client = boto3.client("kms", region_name="us-east-1")
|
||||
|
||||
actual = client.list_resource_tags(KeyId=key_id).get("Tags", [])
|
||||
expected = [{"TagKey": "key2", "TagValue": "value2"}]
|
||||
assert sort(expected) == sort(actual)
|
||||
key = client.create_key(Description="test-key-tagging")
|
||||
key_id = key["KeyMetadata"]["Arn"]
|
||||
tags = [
|
||||
{"TagKey": "key1", "TagValue": "value1"},
|
||||
{"TagKey": "key2", "TagValue": "value2"},
|
||||
]
|
||||
client.tag_resource(KeyId=key_id, Tags=tags)
|
||||
_check_tags(key_id, tags, client)
|
||||
|
||||
|
||||
@mock_kms_deprecated
|
||||
|
@ -398,6 +398,20 @@ def test_list_resource_tags():
|
||||
assert response["Tags"][0]["TagValue"] == "string"
|
||||
|
||||
|
||||
@mock_kms
|
||||
def test_list_resource_tags_with_arn():
|
||||
client = boto3.client("kms", region_name="us-east-1")
|
||||
key = client.create_key(Description="cancel-key-deletion")
|
||||
client.schedule_key_deletion(KeyId=key["KeyMetadata"]["KeyId"])
|
||||
|
||||
keyid = key["KeyMetadata"]["Arn"]
|
||||
client.tag_resource(KeyId=keyid, Tags=[{"TagKey": "string", "TagValue": "string"}])
|
||||
|
||||
response = client.list_resource_tags(KeyId=keyid)
|
||||
assert response["Tags"][0]["TagKey"] == "string"
|
||||
assert response["Tags"][0]["TagValue"] == "string"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"kwargs,expected_key_length",
|
||||
(
|
||||
|
Loading…
x
Reference in New Issue
Block a user