func TestS3ObjectDelete(t *testing.T) {
	if !canTestS3() {
		return
	}
	// Hmmm... don't like having to upload objects first.
	// But how else to test delete?
	err := upload(t, "test_obj_1.tar")
	if err != nil {
		assert.FailNow(t, "Could not upload file 1 for delete test")
	}
	err = upload(t, "test_obj_2.tar")
	if err != nil {
		assert.FailNow(t, "Could not upload file 2 for delete test")
	}

	// Now delete those objects
	s3ObjectDelete := network.NewS3ObjectDelete(
		constants.AWSVirginia,
		testBucket,
		[]string{"test_obj_1.tar", "test_obj_2.tar"},
	)
	s3ObjectDelete.DeleteList()
	assert.Equal(t, "", s3ObjectDelete.ErrorMessage)
	assert.Equal(t, 2, len(s3ObjectDelete.Response.Deleted))
	assert.Empty(t, s3ObjectDelete.Response.Errors)
}
Beispiel #2
0
func (recorder *APTRecorder) deleteBagFromReceivingBucket(ingestState *models.IngestState) {
	ingestState.IngestManifest.CleanupResult.Start()
	ingestState.IngestManifest.CleanupResult.Attempted = true
	ingestState.IngestManifest.CleanupResult.AttemptNumber += 1
	// Remove the bag from the receiving bucket, if ingest succeeded
	if recorder.Context.Config.DeleteOnSuccess == false {
		// We don't actually delete files if config is dev, test, or integration.
		recorder.Context.MessageLog.Info("Skipping deletion step because config.DeleteOnSuccess == false")
		// Set deletion timestamp, so we know this method was called.
		ingestState.IngestManifest.Object.IngestDeletedFromReceivingAt = time.Now().UTC()
		ingestState.IngestManifest.CleanupResult.Finish()
		return
	}
	deleter := network.NewS3ObjectDelete(
		constants.AWSVirginia,
		ingestState.IngestManifest.S3Bucket,
		[]string{ingestState.IngestManifest.S3Key})
	deleter.DeleteList()
	if deleter.ErrorMessage != "" {
		message := fmt.Sprintf("In cleanup, error deleting S3 item %s/%s: %s",
			ingestState.IngestManifest.S3Bucket, ingestState.IngestManifest.S3Key,
			deleter.ErrorMessage)
		recorder.Context.MessageLog.Warning(message)
		ingestState.IngestManifest.CleanupResult.AddError(message)
	} else {
		message := fmt.Sprintf("Deled S3 item %s/%s",
			ingestState.IngestManifest.S3Bucket, ingestState.IngestManifest.S3Key)
		recorder.Context.MessageLog.Info(message)
		ingestState.IngestManifest.Object.IngestDeletedFromReceivingAt = time.Now().UTC()
	}
	ingestState.IngestManifest.CleanupResult.Finish()
}
func TestNewS3ObjectDelete(t *testing.T) {
	if !canTestS3() {
		return
	}
	s3ObjectDelete := network.NewS3ObjectDelete(
		constants.AWSVirginia,
		testBucket,
		[]string{"test_obj_1.tar", "test_obj_2.tar"},
	)
	assert.Equal(t, constants.AWSVirginia, s3ObjectDelete.AWSRegion)
	assert.Equal(t, testBucket, *s3ObjectDelete.DeleteObjectsInput.Bucket)
	assert.Equal(t, "test_obj_1.tar", *s3ObjectDelete.DeleteObjectsInput.Delete.Objects[0].Key)
	assert.Equal(t, "test_obj_2.tar", *s3ObjectDelete.DeleteObjectsInput.Delete.Objects[1].Key)
}