diff --git a/pkg/api/minioapi/definitions.go b/pkg/api/minioapi/definitions.go index b16ba1855..ec8bd05c2 100644 --- a/pkg/api/minioapi/definitions.go +++ b/pkg/api/minioapi/definitions.go @@ -25,7 +25,7 @@ const ( ) type ObjectListResponse struct { - XMLName xml.Name `xml:"ListBucketResult"` + XMLName xml.Name `xml:"ListBucketResult" json:"-"` Name string Marker string MaxKeys int @@ -34,7 +34,7 @@ type ObjectListResponse struct { } type BucketListResponse struct { - XMLName xml.Name `xml:"ListAllMyBucketsResult"` + XMLName xml.Name `xml:"ListAllMyBucketsResult" json:"-"` Owner Owner Buckets struct { Bucket []*Bucket diff --git a/pkg/api/minioapi/minioapi_test.go b/pkg/api/minioapi/minioapi_test.go index aa96ad751..1c1aaa441 100644 --- a/pkg/api/minioapi/minioapi_test.go +++ b/pkg/api/minioapi/minioapi_test.go @@ -24,6 +24,7 @@ import ( "net/http" "net/http/httptest" "strconv" + "strings" "testing" "time" @@ -363,3 +364,53 @@ func verifyHeaders(c *C, header http.Header, date time.Time, size int, contentTy // verify etag c.Assert(header["Etag"][0], Equals, etag) } + +func (s *MySuite) TestXMLNameNotInBucketListJson(c *C) { + _, _, storage := inmemory.Start() + httpHandler := HttpHandler(storage) + testServer := httptest.NewServer(httpHandler) + defer testServer.Close() + + err := storage.StoreBucket("foo") + c.Assert(err, IsNil) + + request, err := http.NewRequest("GET", testServer.URL+"/", bytes.NewBufferString("")) + c.Assert(err, IsNil) + + request.Header.Add("Accept", "application/json") + + client := http.Client{} + response, err := client.Do(request) + + c.Assert(err, IsNil) + c.Assert(response.StatusCode, Equals, http.StatusOK) + + byteResults, err := ioutil.ReadAll(response.Body) + c.Assert(err, IsNil) + c.Assert(strings.Contains(string(byteResults), "XML"), Equals, false) +} + +func (s *MySuite) TestXMLNameNotInObjectListJson(c *C) { + _, _, storage := inmemory.Start() + httpHandler := HttpHandler(storage) + testServer := httptest.NewServer(httpHandler) + defer testServer.Close() + + err := storage.StoreBucket("foo") + c.Assert(err, IsNil) + + request, err := http.NewRequest("GET", testServer.URL+"/foo/", bytes.NewBufferString("")) + c.Assert(err, IsNil) + + request.Header.Add("Accept", "application/json") + + client := http.Client{} + response, err := client.Do(request) + + c.Assert(err, IsNil) + c.Assert(response.StatusCode, Equals, http.StatusOK) + + byteResults, err := ioutil.ReadAll(response.Body) + c.Assert(err, IsNil) + c.Assert(strings.Contains(string(byteResults), "XML"), Equals, false) +}