Skip to content

cwxstat/go-aws-s3-v2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-aws-s3-v2

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.

Example Mock PutObject

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

}

Example Mock GetObject

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

}

Example Mock Make Bucket

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

}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published