package cos import ( "context" "encoding/xml" "fmt" "net/http" "reflect" "testing" ) func TestBucketService_Get(t *testing.T) { setup() defer teardown() opt := &BucketGetOptions{ Prefix: "test", MaxKeys: 2, } mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) vs := values{ "prefix": "test", "max-keys": "2", } testFormValues(t, r, vs) fmt.Fprint(w, ` test-1253846586 test 2 true test/delete.txt test/ 2017-06-09T16:32:25.000Z "" 0 1253846586 STANDARD test/anonymous_get.go 2017-06-17T15:09:26.000Z "5b7236085f08b3818bfa40b03c946dcc" 8 1253846586 STANDARD `) }) ref, _, err := client.Bucket.Get(context.Background(), opt) if err != nil { t.Fatalf("Bucket.Get returned error: %v", err) } want := &BucketGetResult{ XMLName: xml.Name{Local: "ListBucketResult"}, Name: "test-1253846586", Prefix: "test", MaxKeys: 2, IsTruncated: true, NextMarker: "test/delete.txt", Contents: []Object{ { Key: "test/", LastModified: "2017-06-09T16:32:25.000Z", ETag: "\"\"", Size: 0, Owner: &Owner{ ID: "1253846586", }, StorageClass: "STANDARD", }, { Key: "test/anonymous_get.go", LastModified: "2017-06-17T15:09:26.000Z", ETag: "\"5b7236085f08b3818bfa40b03c946dcc\"", Size: 8, Owner: &Owner{ ID: "1253846586", }, StorageClass: "STANDARD", }, }, } if !reflect.DeepEqual(ref, want) { t.Errorf("Bucket.Get returned %+v, want %+v", ref, want) } } func TestBucketService_Put(t *testing.T) { setup() defer teardown() opt := &BucketPutOptions{ XCosACL: "public-read", } mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { v := new(BucketPutTaggingOptions) xml.NewDecoder(r.Body).Decode(v) testMethod(t, r, "PUT") testHeader(t, r, "x-cos-acl", "public-read") }) _, err := client.Bucket.Put(context.Background(), opt) if err != nil { t.Fatalf("Bucket.Put returned error: %v", err) } } func TestBucketService_Delete(t *testing.T) { setup() defer teardown() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodDelete) w.WriteHeader(http.StatusNoContent) }) _, err := client.Bucket.Delete(context.Background()) if err != nil { t.Fatalf("Bucket.Delete returned error: %v", err) } } func TestBucketService_Head(t *testing.T) { setup() defer teardown() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodHead) w.WriteHeader(http.StatusOK) }) _, err := client.Bucket.Head(context.Background()) if err != nil { t.Fatalf("Bucket.Head returned error: %v", err) } } func TestBucketService_GetObjectVersions(t *testing.T) { setup() defer teardown() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) w.WriteHeader(http.StatusOK) vs := values{ "versions": "", "delimiter": "/", } testFormValues(t, r, vs) fmt.Fprint(w, ` examplebucket-1250000000 1000 false / example-folder-1/ example-folder-2/ example-object-1.jpg MTg0NDUxNzgxMjEzNTU3NTk1Mjg true 2019-08-16T10:45:53.000Z "5d1143df07a17b23320d0da161e2819e" 30 STANDARD 1250000000 1250000000 example-object-1.jpg MTg0NDUxNzgxMjEzNjE1OTcxMzM false 2019-08-16T10:45:47.000Z 1250000000 1250000000 `) }) want := &BucketGetObjectVersionsResult{ XMLName: xml.Name{Local: "ListVersionsResult"}, Name: "examplebucket-1250000000", MaxKeys: 1000, IsTruncated: false, Delimiter: "/", CommonPrefixes: []string{ "example-folder-1/", "example-folder-2/", }, Version: []ListVersionsResultVersion{ { Key: "example-object-1.jpg", VersionId: "MTg0NDUxNzgxMjEzNTU3NTk1Mjg", IsLatest: true, LastModified: "2019-08-16T10:45:53.000Z", ETag: "\"5d1143df07a17b23320d0da161e2819e\"", Size: 30, StorageClass: "STANDARD", Owner: &Owner{ ID: "1250000000", DisplayName: "1250000000", }, }, }, DeleteMarker: []ListVersionsResultDeleteMarker{ { Key: "example-object-1.jpg", VersionId: "MTg0NDUxNzgxMjEzNjE1OTcxMzM", IsLatest: false, LastModified: "2019-08-16T10:45:47.000Z", Owner: &Owner{ ID: "1250000000", DisplayName: "1250000000", }, }, }, } opt := &BucketGetObjectVersionsOptions{ Delimiter: "/", } res, _, err := client.Bucket.GetObjectVersions(context.Background(), opt) if err != nil { t.Fatalf("Bucket.GetObjectVersions returned error: %v", err) } if !reflect.DeepEqual(res, want) { t.Errorf("Bucket.GetObjectVersions returned\n%+v\nwant\n%+v", res, want) } }