github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/api/imagemetadata"
    11  	"github.com/juju/juju/apiserver/params"
    12  	"github.com/juju/juju/juju/testing"
    13  	"github.com/juju/juju/mongo"
    14  )
    15  
    16  type cloudImageMetadataSuite struct {
    17  	testing.JujuConnSuite
    18  
    19  	client *imagemetadata.Client
    20  }
    21  
    22  func (s *cloudImageMetadataSuite) SetUpTest(c *gc.C) {
    23  	s.JujuConnSuite.SetUpTest(c)
    24  
    25  	s.client = imagemetadata.NewClient(s.APIState)
    26  	c.Assert(s.client, gc.NotNil)
    27  }
    28  
    29  func (s *cloudImageMetadataSuite) TearDownTest(c *gc.C) {
    30  	s.client.ClientFacade.Close()
    31  	s.JujuConnSuite.TearDownTest(c)
    32  }
    33  
    34  func (s *cloudImageMetadataSuite) TestSaveAndFindMetadata(c *gc.C) {
    35  	metadata, err := s.client.List("", "", nil, nil, "", "")
    36  	c.Assert(err, gc.ErrorMatches, "matching cloud image metadata not found")
    37  	c.Assert(metadata, gc.HasLen, 0)
    38  
    39  	//	check db too
    40  	conn := s.State.MongoSession()
    41  	coll, closer := mongo.CollectionFromName(conn.DB("juju"), "cloudimagemetadata")
    42  	defer closer()
    43  
    44  	before, err := coll.Count()
    45  	c.Assert(err, jc.ErrorIsNil)
    46  	c.Assert(before == 0, jc.IsTrue)
    47  
    48  	m := params.CloudImageMetadata{
    49  		Source:          "custom",
    50  		Stream:          "stream",
    51  		Region:          "region",
    52  		Series:          "series",
    53  		Arch:            "arch",
    54  		VirtualType:     "virtType",
    55  		RootStorageType: "rootStorageType",
    56  		ImageId:         "1",
    57  	}
    58  
    59  	errs, err := s.client.Save([]params.CloudImageMetadata{m})
    60  	c.Assert(err, jc.ErrorIsNil)
    61  	c.Assert(errs, gc.HasLen, 1)
    62  	c.Assert(errs[0].Error, gc.IsNil)
    63  
    64  	added, err := s.client.List("", "", nil, nil, "", "")
    65  	c.Assert(err, jc.ErrorIsNil)
    66  	c.Assert(added, jc.DeepEquals, []params.CloudImageMetadata{m})
    67  
    68  	// make sure it's in db too
    69  	after, err := coll.Count()
    70  	c.Assert(err, jc.ErrorIsNil)
    71  	c.Assert(after == 1, jc.IsTrue)
    72  }