Add Support for SNS Topic KmsMasterKeyId Attribute (#3389)

We do not do any validation of the `KmsMasterKeyId` attribute, and simply
store it as-as.  This mimics the behavior in AWS, where the key is not
validated until it is actually used (when publishing[1]).

[1]: https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html

Closes #3216
This commit is contained in:
Brian Pandola 2020-10-16 04:30:07 -07:00 committed by GitHub
commit 28c1690fc2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 74 additions and 21 deletions

View file

@ -168,3 +168,25 @@ def test_topic_paging():
topics_list.should.have.length_of(int(DEFAULT_PAGE_SIZE / 2))
next_token.should.equal(None)
@mock_sns_deprecated
def test_topic_kms_master_key_id_attribute():
conn = boto.connect_sns()
conn.create_topic("test-sns-no-key-attr")
topics_json = conn.get_all_topics()
topic_arn = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"][0][
"TopicArn"
]
attributes = conn.get_topic_attributes(topic_arn)["GetTopicAttributesResponse"][
"GetTopicAttributesResult"
]["Attributes"]
attributes.should_not.have.key("KmsMasterKeyId")
conn.set_topic_attributes(topic_arn, "KmsMasterKeyId", "test-key")
attributes = conn.get_topic_attributes(topic_arn)["GetTopicAttributesResponse"][
"GetTopicAttributesResult"
]["Attributes"]
attributes.should.have.key("KmsMasterKeyId")
attributes["KmsMasterKeyId"].should.equal("test-key")