func (s *SerializationSuite) TestDeserializeFingerprintOkay(c *gc.C) { content := "some data\n..." expected, err := charmresource.GenerateFingerprint(strings.NewReader(content)) c.Assert(err, jc.ErrorIsNil) fp, err := resource.DeserializeFingerprint(expected.Bytes()) c.Assert(err, jc.ErrorIsNil) c.Check(fp, jc.DeepEquals, expected) }
// doc2basicResource returns the resource info represented by the doc. func doc2basicResource(doc resourceDoc) (resource.Resource, error) { var res resource.Resource resType, err := charmresource.ParseType(doc.Type) if err != nil { return res, errors.Annotate(err, "got invalid data from DB") } origin, err := charmresource.ParseOrigin(doc.Origin) if err != nil { return res, errors.Annotate(err, "got invalid data from DB") } fp, err := resource.DeserializeFingerprint(doc.Fingerprint) if err != nil { return res, errors.Annotate(err, "got invalid data from DB") } res = resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: doc.Name, Type: resType, Path: doc.Path, Description: doc.Description, }, Origin: origin, Revision: doc.Revision, Fingerprint: fp, Size: doc.Size, }, ID: doc.ID, PendingID: doc.PendingID, ServiceID: doc.ServiceID, Username: doc.Username, Timestamp: doc.Timestamp, } if err := res.Validate(); err != nil { return res, errors.Annotate(err, "got invalid data from DB") } return res, nil }
// API2CharmResource converts an API CharmResource struct into // a charm resource. func API2CharmResource(apiInfo CharmResource) (charmresource.Resource, error) { var res charmresource.Resource rtype, err := charmresource.ParseType(apiInfo.Type) if err != nil { return res, errors.Trace(err) } origin, err := charmresource.ParseOrigin(apiInfo.Origin) if err != nil { return res, errors.Trace(err) } fp, err := resource.DeserializeFingerprint(apiInfo.Fingerprint) if err != nil { return res, errors.Trace(err) } res = charmresource.Resource{ Meta: charmresource.Meta{ Name: apiInfo.Name, Type: rtype, Path: apiInfo.Path, Description: apiInfo.Description, }, Origin: origin, Revision: apiInfo.Revision, Fingerprint: fp, Size: apiInfo.Size, } if err := res.Validate(); err != nil { return res, errors.Trace(err) } return res, nil }
func (s *SerializationSuite) TestDeserializeFingerprintZeroValue(c *gc.C) { fp, err := resource.DeserializeFingerprint(nil) c.Assert(err, jc.ErrorIsNil) c.Check(fp, jc.DeepEquals, charmresource.Fingerprint{}) }
func (s *SerializationSuite) TestDeserializeFingerprintInvalid(c *gc.C) { _, err := resource.DeserializeFingerprint([]byte("<too short>")) c.Check(err, jc.Satisfies, errors.IsNotValid) }