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, `<?xml version='1.0' encoding='utf-8' ?> <ListBucketResult> <Name>test-1253846586</Name> <Prefix>test</Prefix> <Marker/> <MaxKeys>2</MaxKeys> <IsTruncated>true</IsTruncated> <NextMarker>test/delete.txt</NextMarker> <Contents> <Key>test/</Key> <LastModified>2017-06-09T16:32:25.000Z</LastModified> <ETag>""</ETag> <Size>0</Size> <Owner> <ID>1253846586</ID> </Owner> <StorageClass>STANDARD</StorageClass> </Contents> <Contents> <Key>test/anonymous_get.go</Key> <LastModified>2017-06-17T15:09:26.000Z</LastModified> <ETag>"5b7236085f08b3818bfa40b03c946dcc"</ETag> <Size>8</Size> <Owner> <ID>1253846586</ID> </Owner> <StorageClass>STANDARD</StorageClass> </Contents> </ListBucketResult>`) }) 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) } }