main.go and main_test.go actively creates buckets. common_test.go mocks the test and does not actively create buckets, which is probably what you'll use in your own code.
func TestMock(t *testing.T) {
m := mock.NewMockPutObjectClient()
dataToWrite := []byte("Hi!")
m.ObjectOutput(&s3.PutObjectOutput{
BucketKeyEnabled: false,
ETag: aws.String("etag"),
RequestCharged: "",
ServerSideEncryption: "",
ResultMetadata: middleware.Metadata{},
})
result, err := pkg.PutObject(context.TODO(),
m.ClientS3PutObject(),
"bucketName", "key",
bytes.NewReader(dataToWrite))
if err != nil {
t.Error(err)
}
if result == nil {
t.Error("Expected a result")
}
data, err := m.GetData(make([]byte, 20))
if string(data) != "Hi!" {
t.Error("Expected data to be Hi!")
}
}
func TestMock_GetObject(t *testing.T) {
m := mock.NewMockGetObjectClient()
dataToWrite := []byte("Hi!")
m.ObjectOutput(&s3.GetObjectOutput{
BucketKeyEnabled: false,
ETag: aws.String("etag"),
Body: io.NopCloser(bytes.NewReader(dataToWrite)),
ResultMetadata: middleware.Metadata{},
})
output, err := pkg.GetObject(context.TODO(), m.ClientS3GetObject(), "bucketName", "key")
if err != nil {
t.Errorf("expected no error, got %v", err)
}
if e, a := "etag", *output.ETag; e != a {
t.Errorf("expected %v, got %v", e, a)
}
b := make([]byte, 20)
data, err := m.GetData(b)
if err != nil {
t.Errorf("expected no error, got %v", err)
}
if e, a := "Hi!", string(data); e != a {
t.Errorf("expected %v, got %v", e, a)
}
}
func TestMock_MakeBucket(t *testing.T) {
m := mock.NewMockCreateBucketClient()
m.CreateBucketOutput(&s3.CreateBucketOutput{
Location: aws.String("us-east-2"),
ResultMetadata: middleware.Metadata{},
})
err := pkg.MakeBucket(context.TODO(), m.ClientCreateBucket(),
"us-east-2", "bucketName")
if err != nil {
t.Errorf("expected no error, got %v", err)
}
output := m.GetCreateBucketOutput()
if e, a := "us-east-2", *output.Location; e != a {
t.Errorf("expected %v, got %v", e, a)
}
input := m.GetCreateBucketInput()
if e, a := "bucketName", *input.Bucket; e != a {
t.Errorf("expected %v, got %v", e, a)
}
}