func (s *UploadSuite) TestReadResourceBadContentType(c *gc.C) { uh := server.UploadHandler{ Username: "******", Store: s.data, } req, _ := newUploadRequest(c, "spam", "a-service", "<some data>") req.Header.Set("Content-Type", "text/plain") _, err := uh.ReadResource(req) c.Check(err, gc.ErrorMatches, "unsupported content type .*") s.stub.CheckNoCalls(c) }
func (s *UploadSuite) TestReadResourceGetResourceFailure(c *gc.C) { uh := server.UploadHandler{ Username: "******", Store: s.data, } req, _ := newUploadRequest(c, "spam", "a-service", "<some data>") failure := errors.New("<failure>") s.stub.SetErrors(failure) _, err := uh.ReadResource(req) c.Check(errors.Cause(err), gc.Equals, failure) s.stub.CheckCallNames(c, "GetResource") }
func (s *UploadSuite) TestReadResourceBadSize(c *gc.C) { stored, _ := newResource(c, "spam", "", "") s.data.ReturnGetResource = stored uh := server.UploadHandler{ Username: "******", Store: s.data, } req, _ := newUploadRequest(c, "spam", "a-service", "<some data>") req.Header.Set("Content-Length", "should-be-an-int") _, err := uh.ReadResource(req) c.Check(err, gc.ErrorMatches, "invalid size.*") s.stub.CheckNoCalls(c) }
func (s *UploadSuite) TestReadResourceBadFingerprint(c *gc.C) { stored, _ := newResource(c, "spam", "", "") s.data.ReturnGetResource = stored uh := server.UploadHandler{ Username: "******", Store: s.data, } req, _ := newUploadRequest(c, "spam", "a-application", "<some data>") req.Header.Set("Content-SHA384", "bogus") _, err := uh.ReadResource(req) c.Check(err, gc.ErrorMatches, "invalid fingerprint.*") s.stub.CheckNoCalls(c) }
func (s *UploadSuite) TestReadResourceOkay(c *gc.C) { content := "<some data>" expected, _ := newResource(c, "spam", "a-user", content) stored, _ := newResource(c, "spam", "", "") s.data.ReturnGetResource = stored uh := server.UploadHandler{ Username: "******", Store: s.data, } req, body := newUploadRequest(c, "spam", "a-service", content) uploaded, err := uh.ReadResource(req) c.Assert(err, jc.ErrorIsNil) s.stub.CheckCallNames(c, "GetResource") s.stub.CheckCall(c, 0, "GetResource", "a-service", "spam") c.Check(uploaded, jc.DeepEquals, &server.UploadedResource{ Service: "a-service", Resource: expected.Resource, Data: ioutil.NopCloser(body), }) }
func (s *UploadSuite) TestReadResourcePending(c *gc.C) { content := "<some data>" expected, _ := newResource(c, "spam", "a-user", content) stored, _ := newResource(c, "spam", "", "") s.data.ReturnGetPendingResource = stored uh := server.UploadHandler{ Username: "******", Store: s.data, } req, body := newUploadRequest(c, "spam", "a-application", content) req.URL.RawQuery += "&pendingid=some-unique-id" uploaded, err := uh.ReadResource(req) c.Assert(err, jc.ErrorIsNil) s.stub.CheckCallNames(c, "GetPendingResource") s.stub.CheckCall(c, 0, "GetPendingResource", "a-application", "spam", "some-unique-id") c.Check(uploaded, jc.DeepEquals, &server.UploadedResource{ Service: "a-application", PendingID: "some-unique-id", Resource: expected.Resource, Data: ioutil.NopCloser(body), }) }