func (s *cloudImageMetadataSuite) TestSaveAndFindAndDeleteMetadata(c *gc.C) { metadata, err := s.client.List("", "", nil, nil, "", "") c.Assert(err, gc.ErrorMatches, "matching cloud image metadata not found") c.Assert(metadata, gc.HasLen, 0) // check db too conn := s.State.MongoSession() coll, closer := mongo.CollectionFromName(conn.DB("juju"), "cloudimagemetadata") defer closer() before, err := coll.Count() c.Assert(err, jc.ErrorIsNil) c.Assert(before == 0, jc.IsTrue) imageId := "1" m := params.CloudImageMetadata{ Source: "custom", Stream: "stream", Region: "region", Series: "trusty", Arch: "arch", VirtType: "virtType", RootStorageType: "rootStorageType", ImageId: imageId, } err = s.client.Save([]params.CloudImageMetadata{m}) c.Assert(err, jc.ErrorIsNil) added, err := s.client.List("", "", nil, nil, "", "") c.Assert(err, jc.ErrorIsNil) // m.Version would be deduced from m.Series m.Version = "14.04" c.Assert(added, jc.DeepEquals, []params.CloudImageMetadata{m}) // make sure it's in db too after, err := coll.Count() c.Assert(err, jc.ErrorIsNil) c.Assert(after == 1, jc.IsTrue) err = s.client.Delete(imageId) c.Assert(err, jc.ErrorIsNil) // make sure it's no longer in db too afterDelete, err := coll.Count() c.Assert(err, jc.ErrorIsNil) c.Assert(afterDelete, gc.Equals, 0) }