Beispiel #1
0
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)
}
Beispiel #2
0
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")
}
Beispiel #3
0
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)
}
Beispiel #4
0
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)
}
Beispiel #5
0
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),
	})
}
Beispiel #6
0
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),
	})
}