class TestGlacierSNSManualSubscribe(TestGlacierSNS): def test_subscribe_to_existing_topic(self): """ $ glacier-cmd subscribe email endpoint_1 test_topic_1 """ self.gw = GlacierWrapper(**self.args) topic = 'test_topic_existing_kind_off' # sns_subscribe actually creates a topic to "get it" response = self.gw.sns_subscribe(protocol="email", endpoint=localsettings.endpoint_1, topic=topic, sns_options={}) for res in response: del res["RequestId"] self.assertIn( {'SubscribeResult': u'pending confirmation'}, response) all_topics = self.gw.sns_conn.get_all_topics()\ ['ListTopicsResponse']\ ['ListTopicsResult']\ ['Topics'] topics = [t['TopicArn'].split(":")[-1] for t in all_topics] self.assertIn(topic, topics) def test_subscribe_create_topic_for_vaults(self): """ $ glacier-cmd subscribe email endpoint_1 test_topic --vault test_vvault0,test_vvault """ self.gw = GlacierWrapper(**self.args) vaults = ['test_vvault0', 'test_vvault1', 'test_vvault2'] vaults_used = [vaults[0], vaults[2]] topic = 'test_topic_new_for_vaults' for vault in vaults: self.gw.mkvault(vault) response = self.gw.sns_subscribe(protocol="email", endpoint=localsettings.endpoint_1, topic=topic, vault_names=",".join(vaults_used), sns_options={}) for res in response: del res["RequestId"] self.assertIn( {'SubscribeResult': u'pending confirmation'}, response) # Lets check that the topic was created all_topics = self.gw.sns_conn.get_all_topics()\ ['ListTopicsResponse']\ ['ListTopicsResult']\ ['Topics'] topics = [t['TopicArn'].split(":")[-1] for t in all_topics] self.assertIn(topic, topics) for vault in vaults_used: notifications = self.gw.glacierconn.get_vault_notifications(vault) self.assertIn("ArchiveRetrievalCompleted", notifications['Events']) self.assertIn("InventoryRetrievalCompleted", notifications['Events']) self.assertEqual(topic, notifications['SNSTopic'].split(":")[-1])