github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/api/charms/client_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package charms_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	basetesting "github.com/juju/juju/api/base/testing"
    11  	"github.com/juju/juju/api/charms"
    12  	"github.com/juju/juju/apiserver/params"
    13  	coretesting "github.com/juju/juju/testing"
    14  )
    15  
    16  type charmsMockSuite struct {
    17  	coretesting.BaseSuite
    18  	charmsClient *charms.Client
    19  }
    20  
    21  var _ = gc.Suite(&charmsMockSuite{})
    22  
    23  func (s *charmsMockSuite) TestCharmInfo(c *gc.C) {
    24  	var called bool
    25  	curl := "local:quantal/dummy-1"
    26  
    27  	apiCaller := basetesting.APICallerFunc(
    28  		func(objType string,
    29  			version int,
    30  			id, request string,
    31  			a, result interface{},
    32  		) error {
    33  			called = true
    34  			c.Check(objType, gc.Equals, "Charms")
    35  			c.Check(id, gc.Equals, "")
    36  			c.Check(request, gc.Equals, "CharmInfo")
    37  
    38  			args, ok := a.(params.CharmInfo)
    39  			c.Assert(ok, jc.IsTrue)
    40  			c.Assert(args.CharmURL, gc.DeepEquals, curl)
    41  			if wanted, k := result.(*charms.CharmInfo); k {
    42  				wanted.URL = curl
    43  			}
    44  			return nil
    45  		})
    46  	charmsClient := charms.NewClient(apiCaller)
    47  	charmResult, err := charmsClient.CharmInfo(curl)
    48  	c.Assert(err, jc.ErrorIsNil)
    49  	c.Assert(called, jc.IsTrue)
    50  	c.Assert(charmResult.URL, gc.DeepEquals, curl)
    51  }
    52  
    53  func (s *charmsMockSuite) TestList(c *gc.C) {
    54  	var called bool
    55  	charmName := "dummy-1"
    56  	curl := "local:quantal/dummy-1"
    57  
    58  	apiCaller := basetesting.APICallerFunc(
    59  		func(objType string,
    60  			version int,
    61  			id, request string,
    62  			a, result interface{},
    63  		) error {
    64  			called = true
    65  			c.Check(objType, gc.Equals, "Charms")
    66  			c.Check(id, gc.Equals, "")
    67  			c.Check(request, gc.Equals, "List")
    68  
    69  			args, ok := a.(params.CharmsList)
    70  			c.Assert(ok, jc.IsTrue)
    71  
    72  			c.Assert(args.Names, gc.HasLen, 1)
    73  			c.Assert(args.Names[0], gc.DeepEquals, charmName)
    74  
    75  			if wanted, k := result.(*params.CharmsListResult); k {
    76  				wanted.CharmURLs = []string{curl}
    77  			}
    78  			return nil
    79  		})
    80  	charmsClient := charms.NewClient(apiCaller)
    81  	listResult, err := charmsClient.List([]string{charmName})
    82  	c.Assert(err, jc.ErrorIsNil)
    83  	c.Assert(called, jc.IsTrue)
    84  	c.Assert(listResult, gc.HasLen, 1)
    85  	c.Assert(listResult[0], gc.DeepEquals, curl)
    86  }