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 }