github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/featuretests/cloudimagemetadata_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package featuretests 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/api/imagemetadata" 12 "github.com/juju/juju/apiserver/params" 13 "github.com/juju/juju/juju/testing" 14 "github.com/juju/juju/mongo" 15 "github.com/juju/juju/rpc" 16 ) 17 18 type cloudImageMetadataSuite struct { 19 testing.JujuConnSuite 20 client *imagemetadata.Client 21 } 22 23 func (s *cloudImageMetadataSuite) SetUpTest(c *gc.C) { 24 s.JujuConnSuite.SetUpTest(c) 25 s.client = imagemetadata.NewClient(s.APIState) 26 c.Assert(s.client, gc.NotNil) 27 s.AddCleanup(func(*gc.C) { 28 s.client.ClientFacade.Close() 29 }) 30 } 31 32 func (s *cloudImageMetadataSuite) TestSaveAndFindAndDeleteMetadata(c *gc.C) { 33 metadata, err := s.client.List("", "", nil, nil, "", "") 34 c.Assert(errors.Cause(err), gc.DeepEquals, &rpc.RequestError{ 35 Message: "matching cloud image metadata not found", 36 Code: "not found", 37 }) 38 c.Assert(metadata, gc.HasLen, 0) 39 40 // check db too 41 conn := s.State.MongoSession() 42 coll, closer := mongo.CollectionFromName(conn.DB("juju"), "cloudimagemetadata") 43 defer closer() 44 45 before, err := coll.Count() 46 c.Assert(err, jc.ErrorIsNil) 47 c.Assert(before == 0, jc.IsTrue) 48 49 imageId := "1" 50 m := params.CloudImageMetadata{ 51 Source: "custom", 52 Stream: "stream", 53 Region: "region", 54 Series: "trusty", 55 Arch: "arch", 56 VirtType: "virtType", 57 RootStorageType: "rootStorageType", 58 ImageId: imageId, 59 } 60 61 err = s.client.Save([]params.CloudImageMetadata{m}) 62 c.Assert(err, jc.ErrorIsNil) 63 64 added, err := s.client.List("", "", nil, nil, "", "") 65 c.Assert(err, jc.ErrorIsNil) 66 67 // m.Version would be deduced from m.Series 68 m.Version = "14.04" 69 c.Assert(added, jc.DeepEquals, []params.CloudImageMetadata{m}) 70 71 // make sure it's in db too 72 after, err := coll.Count() 73 c.Assert(err, jc.ErrorIsNil) 74 c.Assert(after == 1, jc.IsTrue) 75 76 err = s.client.Delete(imageId) 77 c.Assert(err, jc.ErrorIsNil) 78 // make sure it's no longer in db too 79 afterDelete, err := coll.Count() 80 c.Assert(err, jc.ErrorIsNil) 81 c.Assert(afterDelete, gc.Equals, 0) 82 }