github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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 //TODO (mattyw) There are just mock tests in here. We need real tests for each api call. 22 23 var _ = gc.Suite(&charmsMockSuite{}) 24 25 func (s *charmsMockSuite) TestCharmInfo(c *gc.C) { 26 var called bool 27 curl := "local:quantal/dummy-1" 28 29 apiCaller := basetesting.APICallerFunc( 30 func(objType string, 31 version int, 32 id, request string, 33 a, result interface{}, 34 ) error { 35 called = true 36 c.Check(objType, gc.Equals, "Charms") 37 c.Check(id, gc.Equals, "") 38 c.Check(request, gc.Equals, "CharmInfo") 39 40 args, ok := a.(params.CharmInfo) 41 c.Assert(ok, jc.IsTrue) 42 c.Assert(args.CharmURL, gc.DeepEquals, curl) 43 if wanted, k := result.(*charms.CharmInfo); k { 44 wanted.URL = curl 45 } 46 return nil 47 }) 48 charmsClient := charms.NewClient(apiCaller) 49 charmResult, err := charmsClient.CharmInfo(curl) 50 c.Assert(err, jc.ErrorIsNil) 51 c.Assert(called, jc.IsTrue) 52 c.Assert(charmResult.URL, gc.DeepEquals, curl) 53 } 54 55 func (s *charmsMockSuite) TestList(c *gc.C) { 56 var called bool 57 charmName := "dummy-1" 58 curl := "local:quantal/dummy-1" 59 60 apiCaller := basetesting.APICallerFunc( 61 func(objType string, 62 version int, 63 id, request string, 64 a, result interface{}, 65 ) error { 66 called = true 67 c.Check(objType, gc.Equals, "Charms") 68 c.Check(id, gc.Equals, "") 69 c.Check(request, gc.Equals, "List") 70 71 args, ok := a.(params.CharmsList) 72 c.Assert(ok, jc.IsTrue) 73 74 c.Assert(args.Names, gc.HasLen, 1) 75 c.Assert(args.Names[0], gc.DeepEquals, charmName) 76 77 if wanted, k := result.(*params.CharmsListResult); k { 78 wanted.CharmURLs = []string{curl} 79 } 80 return nil 81 }) 82 charmsClient := charms.NewClient(apiCaller) 83 listResult, err := charmsClient.List([]string{charmName}) 84 c.Assert(err, jc.ErrorIsNil) 85 c.Assert(called, jc.IsTrue) 86 c.Assert(listResult, gc.HasLen, 1) 87 c.Assert(listResult[0], gc.DeepEquals, curl) 88 } 89 90 func (s *charmsMockSuite) TestIsMeteredFalse(c *gc.C) { 91 var called bool 92 curl := "local:quantal/dummy-1" 93 apiCaller := basetesting.APICallerFunc( 94 func(objType string, 95 version int, 96 id, request string, 97 a, result interface{}, 98 ) error { 99 called = true 100 c.Check(objType, gc.Equals, "Charms") 101 c.Check(id, gc.Equals, "") 102 c.Check(request, gc.Equals, "IsMetered") 103 104 args, ok := a.(params.CharmInfo) 105 c.Assert(ok, jc.IsTrue) 106 c.Assert(args.CharmURL, gc.DeepEquals, curl) 107 if wanted, k := result.(*charms.CharmInfo); k { 108 wanted.URL = curl 109 } 110 return nil 111 }) 112 charmsClient := charms.NewClient(apiCaller) 113 _, err := charmsClient.IsMetered(curl) 114 c.Assert(err, jc.ErrorIsNil) 115 c.Assert(called, jc.IsTrue) 116 }