func (helpersSuite) TestCharmResource2API(c *gc.C) { fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) res := charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, } err = res.Validate() c.Assert(err, jc.ErrorIsNil) apiInfo := api.CharmResource2API(res) c.Check(apiInfo, jc.DeepEquals, api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }) }
func (helpersSuite) TestAPI2CharmResource(c *gc.C) { res, err := api.API2CharmResource(api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }) c.Assert(err, jc.ErrorIsNil) fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) expected := charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, } err = expected.Validate() c.Assert(err, jc.ErrorIsNil) c.Check(res, jc.DeepEquals, expected) }
// DeserializeFingerprint converts the serialized fingerprint back into // a Fingerprint. "zero" values are treated appropriately. func DeserializeFingerprint(fpSum []byte) (resource.Fingerprint, error) { var fp resource.Fingerprint if len(fpSum) != 0 { var err error fp, err = resource.NewFingerprint(fpSum) if err != nil { return fp, errors.Trace(err) } } return fp, nil }
func (helpersSuite) TestAPI2Resource(c *gc.C) { now := time.Now() res, err := api.API2Resource(api.Resource{ CharmResource: api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, }) c.Assert(err, jc.ErrorIsNil) fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) expected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } err = expected.Validate() c.Assert(err, jc.ErrorIsNil) c.Check(res, jc.DeepEquals, expected) }
func (HelpersSuite) TestResource2API(c *gc.C) { fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) now := time.Now() res := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-application/spam", PendingID: "some-unique-ID", ApplicationID: "a-application", Username: "******", Timestamp: now, } err = res.Validate() c.Assert(err, jc.ErrorIsNil) apiRes := api.Resource2API(res) c.Check(apiRes, jc.DeepEquals, api.Resource{ CharmResource: api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-application/spam", PendingID: "some-unique-ID", ApplicationID: "a-application", Username: "******", Timestamp: now, }) }
func (helpersSuite) TestAPIResult2ServiceResourcesOkay(c *gc.C) { fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) now := time.Now() expected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } err = expected.Validate() c.Assert(err, jc.ErrorIsNil) unitExpected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "unitspam", Type: charmresource.TypeFile, Path: "unitspam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } err = unitExpected.Validate() c.Assert(err, jc.ErrorIsNil) apiRes := api.Resource{ CharmResource: api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } unitRes := api.Resource{ CharmResource: api.CharmResource{ Name: "unitspam", Type: "file", Path: "unitspam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } resources, err := api.APIResult2ServiceResources(api.ResourcesResult{ Resources: []api.Resource{ apiRes, }, UnitResources: []api.UnitResources{ { Entity: params.Entity{ Tag: "unit-foo-0", }, Resources: []api.Resource{ unitRes, }, }, }, }) c.Assert(err, jc.ErrorIsNil) serviceResource := resource.ServiceResources{ Resources: []resource.Resource{ expected, }, UnitResources: []resource.UnitResources{ { Tag: names.NewUnitTag("foo/0"), Resources: []resource.Resource{ unitExpected, }, }, }, } c.Check(resources, jc.DeepEquals, serviceResource) }
func (helpersSuite) TestAPIResult2ServiceResourcesBadUnitTag(c *gc.C) { fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) now := time.Now() expected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } err = expected.Validate() c.Assert(err, jc.ErrorIsNil) unitExpected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "unitspam", Type: charmresource.TypeFile, Path: "unitspam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } err = unitExpected.Validate() c.Assert(err, jc.ErrorIsNil) apiRes := api.Resource{ CharmResource: api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } unitRes := api.Resource{ CharmResource: api.CharmResource{ Name: "unitspam", Type: "file", Path: "unitspam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } _, err = api.APIResult2ServiceResources(api.ResourcesResult{ Resources: []api.Resource{ apiRes, }, UnitResources: []api.UnitResources{ { Entity: params.Entity{ Tag: "THIS IS NOT A GOOD UNIT TAG", }, Resources: []api.Resource{ unitRes, }, }, }, }) c.Assert(err, gc.ErrorMatches, ".*got bad data from server.*") }
func (HelpersSuite) TestAPIResult2ServiceResourcesOkay(c *gc.C) { fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) now := time.Now() expected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-application/spam", PendingID: "some-unique-ID", ApplicationID: "a-application", Username: "******", Timestamp: now, } err = expected.Validate() c.Assert(err, jc.ErrorIsNil) unitExpected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "unitspam", Type: charmresource.TypeFile, Path: "unitspam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-application/spam", PendingID: "some-unique-ID", ApplicationID: "a-application", Username: "******", Timestamp: now, } err = unitExpected.Validate() c.Assert(err, jc.ErrorIsNil) apiRes := api.Resource{ CharmResource: api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-application/spam", PendingID: "some-unique-ID", ApplicationID: "a-application", Username: "******", Timestamp: now, } unitRes := api.Resource{ CharmResource: api.CharmResource{ Name: "unitspam", Type: "file", Path: "unitspam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-application/spam", PendingID: "some-unique-ID", ApplicationID: "a-application", Username: "******", Timestamp: now, } fp2, err := charmresource.GenerateFingerprint(strings.NewReader("boo!")) c.Assert(err, jc.ErrorIsNil) chRes := api.CharmResource{ Name: "unitspam2", Type: "file", Path: "unitspam.tgz2", Description: "you need it2", Origin: "upload", Revision: 2, Fingerprint: fp2.Bytes(), Size: 11, } chExpected := charmresource.Resource{ Meta: charmresource.Meta{ Name: "unitspam2", Type: charmresource.TypeFile, Path: "unitspam.tgz2", Description: "you need it2", }, Origin: charmresource.OriginUpload, Revision: 2, Fingerprint: fp2, Size: 11, } resources, err := api.APIResult2ServiceResources(api.ResourcesResult{ Resources: []api.Resource{ apiRes, }, CharmStoreResources: []api.CharmResource{ chRes, }, UnitResources: []api.UnitResources{ { Entity: params.Entity{ Tag: "unit-foo-0", }, Resources: []api.Resource{ unitRes, }, DownloadProgress: map[string]int64{ unitRes.Name: 8, }, }, }, }) c.Assert(err, jc.ErrorIsNil) serviceResource := resource.ServiceResources{ Resources: []resource.Resource{ expected, }, CharmStoreResources: []charmresource.Resource{ chExpected, }, UnitResources: []resource.UnitResources{ { Tag: names.NewUnitTag("foo/0"), Resources: []resource.Resource{ unitExpected, }, DownloadProgress: map[string]int64{ unitRes.Name: 8, }, }, }, } c.Check(resources, jc.DeepEquals, serviceResource) }