Exemplo n.º 1
0
    def test_delete_archived_data_success(self, mock_resource):
        """Test that delete_archived_data correctly interacts with AWS S3."""
        schema_name = 'acct10001'
        provider_type = Provider.PROVIDER_AWS
        provider_uuid = '00000000-0000-0000-0000-000000000001'
        expected_prefix = 'data_archive/acct10001/aws/00000000-0000-0000-0000-000000000001/'

        # Generate enough fake objects to expect calling the S3 delete api twice.
        mock_bucket = mock_resource.return_value.Bucket.return_value
        bucket_objects = [DummyS3Object(key=fake.file_path()) for _ in range(1234)]
        expected_keys = [{'Key': bucket_object.key} for bucket_object in bucket_objects]

        # Leave one object mysteriously not deleted to cover the LOG.warning use case.
        mock_bucket.objects.filter.side_effect = [bucket_objects, bucket_objects[:1]]

        with self.assertLogs('masu.celery.tasks', 'WARNING') as captured_logs:
            tasks.delete_archived_data(schema_name, provider_type, provider_uuid)
        mock_resource.assert_called()
        mock_bucket.delete_objects.assert_has_calls(
            [
                call(Delete={'Objects': expected_keys[:1000]}),
                call(Delete={'Objects': expected_keys[1000:]}),
            ]
        )
        mock_bucket.objects.filter.assert_has_calls(
            [call(Prefix=expected_prefix), call(Prefix=expected_prefix)]
        )
        self.assertIn('Found 1 objects after attempting', captured_logs.output[-1])
Exemplo n.º 2
0
 def test_delete_archived_data_bad_inputs_exception(self):
     """Test that delete_archived_data raises an exception when given bad inputs."""
     schema_name, provider_type, provider_uuid = "", "", ""
     with self.assertRaises(TypeError) as e:
         tasks.delete_archived_data(schema_name, provider_type, provider_uuid)
     self.assertIn("schema_name", str(e.exception))
     self.assertIn("provider_type", str(e.exception))
     self.assertIn("provider_uuid", str(e.exception))
Exemplo n.º 3
0
    def test_delete_archived_data_success(self, mock_delete):
        """Test that delete_archived_data correctly interacts with AWS S3."""
        schema_name = "acct10001"
        provider_type = Provider.PROVIDER_AWS
        provider_uuid = "00000000-0000-0000-0000-000000000001"

        tasks.delete_archived_data(schema_name, provider_type, provider_uuid)
        mock_delete.assert_called()
Exemplo n.º 4
0
    def test_delete_archived_data_archiving_false(self):
        """Test that delete_archived_data correctly interacts with AWS S3."""
        schema_name = "acct10001"
        provider_type = Provider.PROVIDER_AWS
        provider_uuid = "00000000-0000-0000-0000-000000000001"

        with self.assertLogs("masu.celery.tasks", "INFO") as captured_logs:
            tasks.delete_archived_data(schema_name, provider_type, provider_uuid)
            self.assertIn("Skipping delete_archived_data. Upload feature is disabled.", captured_logs.output[0])
Exemplo n.º 5
0
 def test_delete_archived_data_missing_bucket_path_exception(
         self, mock_resource):
     """Test that delete_archived_data raises an exception with an empty bucket path."""
     schema_name, provider_type, provider_uuid = fake.slug(
     ), 'AWS', fake.uuid4()
     with self.assertRaises(ImproperlyConfigured):
         tasks.delete_archived_data(schema_name, provider_type,
                                    provider_uuid)
     mock_resource.assert_not_called()
Exemplo n.º 6
0
 def test_delete_archived_data_archiving_disabled_noop(self, mock_resource):
     """Test that delete_archived_data returns early when feature is disabled."""
     schema_name, provider_type, provider_uuid = fake.slug(), Provider.PROVIDER_AWS, fake.uuid4()
     tasks.delete_archived_data(schema_name, provider_type, provider_uuid)
     mock_resource.assert_not_called()