예제 #1
0
class TestGlacierSNSAuto(TestGlacierSNS):
    def test_sync_auto_basic(self):
        """
        No configuration
        """
        sns_options = {'topic': 'aws-glacier-notifications',
                       'topics_present': False}

        self.gw = GlacierWrapper(**self.args)

        vault_name = "test_vvault0"

        # Lets create one vault for our testing purposes
        self.gw.mkvault(vault_name)

        # Only after a call to one of gw functions was executed
        # is glacierconn available
        gc = vars(self.gw)['glacierconn']

        # No vault notifications set for fresh vault
        with self.assertRaises(UnexpectedHTTPResponseError) as cm:
            gc.get_vault_notifications(vault_name)
        self.assertEqual(cm.exception.status, 404)
        self.assertEqual(cm.exception.message,
                         ("Expected 200, got (404, "
                         "code=ResourceNotFoundException, "
                         "message=No notification configuration "
                         "is set for vault: %s)") % (vault_name,))

        # Set all vaults
        response = self.gw.sns_sync(sns_options=sns_options, output="csv")
        successful_vaults = [r["Vault Name"] for r in response]
        self.assertIn(vault_name, successful_vaults)

        # Check out vault has set notifications
        vaults = [vault[u'VaultARN'].split("vaults/")[-1]
                  for vault in self.gw.lsvault()]
        for vault in vaults:
            response = gc.get_vault_notifications(vault)
            events = response['Events']
            self.assertIn(u"ArchiveRetrievalCompleted", events)
            self.assertIn(u"InventoryRetrievalCompleted", events)

        # Remove test vault
        self.gw.rmvault(vault_name)