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) }
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) }