func (*VisitorSuite) TestGetInteractionMethodsInvalidURL(c *gc.C) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { w.Header().Set("Content-Type", "application/json") fmt.Fprint(w, `{"method": ":::"}`) })) defer srv.Close() methods, err := httpbakery.GetInteractionMethods(http.DefaultClient, mustParseURL(srv.URL)) c.Assert(methods, gc.IsNil) c.Assert(err, gc.ErrorMatches, `invalid URL for interaction method "method": parse :::: missing protocol scheme`) }
func (*VisitorSuite) TestGetInteractionMethodsGetFailure(c *gc.C) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { w.WriteHeader(http.StatusTeapot) w.Write([]byte("failure")) })) defer srv.Close() methods, err := httpbakery.GetInteractionMethods(http.DefaultClient, mustParseURL(srv.URL)) c.Assert(methods, gc.IsNil) c.Assert(err, gc.ErrorMatches, `GET .*: cannot unmarshal error response \(status 418 I'm a teapot\): unexpected content type text/plain; want application/json; content: failure`) }
func (*VisitorSuite) TestGetInteractionMethodsSuccess(c *gc.C) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { w.Header().Set("Content-Type", "application/json") fmt.Fprint(w, `{"method": "http://somewhere/something"}`) })) defer srv.Close() methods, err := httpbakery.GetInteractionMethods(http.DefaultClient, mustParseURL(srv.URL)) c.Assert(err, gc.IsNil) c.Assert(methods, jc.DeepEquals, map[string]*url.URL{ "method": { Scheme: "http", Host: "somewhere", Path: "/something", }, }) }