github.com/mwhudson/juju@v0.0.0-20160512215208-90ff01f3497f/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  }