package keep import ( "encoding/json" "git.curoverse.com/arvados.git/sdk/go/keepclient" . "gopkg.in/check.v1" "net/http" "net/http/httptest" "testing" ) // Gocheck boilerplate func Test(t *testing.T) { TestingT(t) } type KeepSuite struct{} var _ = Suite(&KeepSuite{}) type TestHandler struct { request TrashList } func (this *TestHandler) ServeHTTP(writer http.ResponseWriter, req *http.Request) { r := json.NewDecoder(req.Body) r.Decode(&this.request) } func (s *KeepSuite) TestSendTrashLists(c *C) { th := TestHandler{} server := httptest.NewServer(&th) tl := map[string]TrashList{ server.URL: TrashList{TrashRequest{"000000000000000000000000deadbeef", 99}}} kc := keepclient.KeepClient{Client: &http.Client{}} kc.SetServiceRoots(map[string]string{"xxxx": server.URL}, map[string]string{"xxxx": server.URL}, map[string]string{}) SendTrashLists("", &kc, tl) server.Close() c.Check(th.request, DeepEquals, tl[server.URL]) } type TestHandlerError struct { } func (this *TestHandlerError) ServeHTTP(writer http.ResponseWriter, req *http.Request) { http.Error(writer, "I'm a teapot", 405) } func (s *KeepSuite) TestSendTrashListError(c *C) { // Server responds with an error th := TestHandlerError{} server := httptest.NewServer(&th) tl := map[string]TrashList{ server.URL: TrashList{TrashRequest{"000000000000000000000000deadbeef", 99}}} kc := keepclient.KeepClient{Client: &http.Client{}} kc.SetServiceRoots(map[string]string{"xxxx": server.URL}, map[string]string{"xxxx": server.URL}, map[string]string{}) SendTrashLists("", &kc, tl) server.Close() } func (s *KeepSuite) TestSendTrashListError2(c *C) { // Server is not reachable th := TestHandler{} server := httptest.NewServer(&th) server.Close() tl := map[string]TrashList{ server.URL: TrashList{TrashRequest{"000000000000000000000000deadbeef", 99}}} kc := keepclient.KeepClient{Client: &http.Client{}} kc.SetServiceRoots(map[string]string{"xxxx": server.URL}, map[string]string{"xxxx": server.URL}, map[string]string{}) SendTrashLists("", &kc, tl) }