diff --git a/command/agent/http.go b/command/agent/http.go index 40e97da20..9241ca493 100644 --- a/command/agent/http.go +++ b/command/agent/http.go @@ -125,6 +125,7 @@ func (s *HTTPServer) wrap(handler func(resp http.ResponseWriter, req *http.Reque goto HAS_ERR } resp.Write(buf.Bytes()) + resp.Header().Set("Content-Type", "application/json") } } return f diff --git a/command/agent/http_test.go b/command/agent/http_test.go index 22be66b0e..4b97c597a 100644 --- a/command/agent/http_test.go +++ b/command/agent/http_test.go @@ -8,6 +8,7 @@ import ( "io/ioutil" "net/http" "net/http/httptest" + "os" "testing" "time" ) @@ -39,6 +40,33 @@ func TestSetIndex(t *testing.T) { } } +func TestContentTypeIsJSON(t *testing.T) { + dir, srv := makeHTTPServer(t) + + defer os.RemoveAll(dir) + defer srv.Shutdown() + defer srv.agent.Shutdown() + + // Wait for a leader + time.Sleep(100 * time.Millisecond) + + resp := httptest.NewRecorder() + + handler := func(resp http.ResponseWriter, req *http.Request) (interface{}, error) { + // stub out a DirEntry so that it will be encoded as JSON + return &structs.DirEntry{Key: "key"}, nil + } + + req, _ := http.NewRequest("GET", "/v1/kv/key", nil) + srv.wrap(handler)(resp, req) + + contentType := resp.Header().Get("Content-Type") + + if contentType != "application/json" { + t.Fatalf("Content-Type header was not 'application/json'") + } +} + func TestParseWait(t *testing.T) { resp := httptest.NewRecorder() var b structs.BlockingQuery