func (s *LegacyHTTPHandlerSuite) TestServeHTTPPutSuccess(c *gc.C) { s.result.Resource.Name = "spam" expected, err := json.Marshal(s.result) c.Assert(err, jc.ErrorIsNil) s.username = "******" handler := server.LegacyHTTPHandler{ Connect: s.connect, HandleUpload: s.handleUpload, } s.req.Method = "PUT" copied := *s.req req := &copied handler.ServeHTTP(s.resp, req) s.stub.CheckCallNames(c, "Connect", "HandleUpload", "Header", "Header", "WriteHeader", "Write", ) s.stub.CheckCall(c, 0, "Connect", req) s.stub.CheckCall(c, 1, "HandleUpload", "youknowwho", s.data, req) s.stub.CheckCall(c, 4, "WriteHeader", http.StatusOK) s.stub.CheckCall(c, 5, "Write", string(expected)) c.Check(req, jc.DeepEquals, s.req) // did not change c.Check(s.header, jc.DeepEquals, http.Header{ "Content-Type": []string{"application/json"}, "Content-Length": []string{fmt.Sprint(len(expected))}, }) }
func (s *LegacyHTTPHandlerSuite) TestServeHTTPConnectFailure(c *gc.C) { s.username = "******" handler := server.LegacyHTTPHandler{ Connect: s.connect, HandleUpload: s.handleUpload, } copied := *s.req req := &copied failure, expected := apiFailure(c, "<failure>", "") s.stub.SetErrors(failure) handler.ServeHTTP(s.resp, req) s.stub.CheckCallNames(c, "Connect", "Header", "Header", "WriteHeader", "Write", ) s.stub.CheckCall(c, 0, "Connect", req) s.stub.CheckCall(c, 3, "WriteHeader", http.StatusInternalServerError) s.stub.CheckCall(c, 4, "Write", expected) c.Check(req, jc.DeepEquals, s.req) // did not change c.Check(s.header, jc.DeepEquals, http.Header{ "Content-Type": []string{"application/json"}, "Content-Length": []string{strconv.Itoa(len(expected))}, }) }
func (s *LegacyHTTPHandlerSuite) TestServeHTTPUnsupportedMethod(c *gc.C) { s.username = "******" handler := server.LegacyHTTPHandler{ Connect: s.connect, HandleUpload: s.handleUpload, } s.req.Method = "POST" copied := *s.req req := &copied _, expected := apiFailure(c, `unsupported method: "POST"`, params.CodeMethodNotAllowed) handler.ServeHTTP(s.resp, req) s.stub.CheckCallNames(c, "Connect", "Header", "Header", "WriteHeader", "Write", ) s.stub.CheckCall(c, 0, "Connect", req) s.stub.CheckCall(c, 3, "WriteHeader", http.StatusMethodNotAllowed) s.stub.CheckCall(c, 4, "Write", expected) c.Check(req, jc.DeepEquals, s.req) // did not change c.Check(s.header, jc.DeepEquals, http.Header{ "Content-Type": []string{"application/json"}, "Content-Length": []string{strconv.Itoa(len(expected))}, }) }