package cos import ( "context" "encoding/xml" "fmt" "net/http" "reflect" "testing" ) func TestBucketService_GetOrigin(t *testing.T) { setup() defer teardown() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, "GET") vs := values{ "origin": "", } testFormValues(t, r, vs) fmt.Fprint(w, ` 1 Mirror 404 HTTP true
x-cos exampleHeader
exampleHeaderKey
true 302
examplebucket-1250000000.cos.ap-shanghai.myqcloud.com
`) }) res, _, err := client.Bucket.GetOrigin(context.Background()) if err != nil { t.Fatalf("Bucket.GetOrigin returned error %v", err) } want := &BucketGetOriginResult{ XMLName: xml.Name{Local: "OriginConfiguration"}, Rule: []BucketOriginRule{ { OriginType: "Mirror", RulePriority: 1, OriginCondition: &BucketOriginCondition{ HTTPStatusCode: "404", }, OriginParameter: &BucketOriginParameter{ Protocol: "HTTP", FollowQueryString: true, HttpHeader: &BucketOriginHttpHeader{ FollowHttpHeaders: []OriginHttpHeader{ { Key: "exampleHeaderKey", }, }, NewHttpHeaders: []OriginHttpHeader{ { Key: "x-cos", Value: "exampleHeader", }, }, }, FollowRedirection: true, HttpRedirectCode: "302", }, OriginInfo: &BucketOriginInfo{ HostInfo: "examplebucket-1250000000.cos.ap-shanghai.myqcloud.com", }, }, }, } if !reflect.DeepEqual(res, want) { t.Errorf("Bucket.GetOrigin returned %+v, want %+v", res, want) } } func TestBucketService_PutOrigin(t *testing.T) { setup() defer teardown() opt := &BucketPutOriginOptions{ XMLName: xml.Name{Local: "OriginConfiguration"}, Rule: []BucketOriginRule{ { OriginType: "Mirror", RulePriority: 1, OriginCondition: &BucketOriginCondition{ HTTPStatusCode: "404", }, OriginParameter: &BucketOriginParameter{ Protocol: "HTTP", FollowQueryString: true, HttpHeader: &BucketOriginHttpHeader{ FollowHttpHeaders: []OriginHttpHeader{ { Key: "exampleHeaderKey", }, }, NewHttpHeaders: []OriginHttpHeader{ { Key: "x-cos", Value: "exampleHeader", }, }, }, FollowRedirection: true, HttpRedirectCode: "302", }, OriginInfo: &BucketOriginInfo{ HostInfo: "examplebucket-1250000000.cos.ap-shanghai.myqcloud.com", }, }, }, } mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, "PUT") vs := values{ "origin": "", } testFormValues(t, r, vs) body := new(BucketPutOriginOptions) xml.NewDecoder(r.Body).Decode(body) want := opt want.XMLName = xml.Name{Local: "OriginConfiguration"} if !reflect.DeepEqual(body, want) { t.Errorf("Bucket.PutOrigin request\n body: %+v\n, want %+v\n", body, want) } }) _, err := client.Bucket.PutOrigin(context.Background(), opt) if err != nil { t.Fatalf("Bucket.PutOrigin returned error: %v", err) } } func TestBucketService_DeleteOrigin(t *testing.T) { setup() defer teardown() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodDelete) vs := values{ "origin": "", } testFormValues(t, r, vs) w.WriteHeader(http.StatusNoContent) }) _, err := client.Bucket.DeleteOrigin(context.Background()) if err != nil { t.Fatalf("Bucket.DeleteOrigin returned error: %v", err) } }