github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/crosscontroller/crosscontroller_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package crosscontroller_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/api/base/testing" 11 "github.com/juju/juju/api/crosscontroller" 12 "github.com/juju/juju/apiserver/params" 13 coretesting "github.com/juju/juju/testing" 14 ) 15 16 var _ = gc.Suite(&CrossControllerSuite{}) 17 18 type CrossControllerSuite struct { 19 coretesting.BaseSuite 20 } 21 22 func (s *CrossControllerSuite) TestNewClient(c *gc.C) { 23 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 24 return nil 25 }) 26 client := crosscontroller.NewClient(apiCaller) 27 c.Assert(client, gc.NotNil) 28 } 29 30 func (s *CrossControllerSuite) TestControllerInfo(c *gc.C) { 31 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 32 c.Check(objType, gc.Equals, "CrossController") 33 c.Check(version, gc.Equals, 0) 34 c.Check(id, gc.Equals, "") 35 c.Check(request, gc.Equals, "ControllerInfo") 36 c.Check(arg, gc.IsNil) 37 c.Assert(result, gc.FitsTypeOf, ¶ms.ControllerAPIInfoResults{}) 38 *(result.(*params.ControllerAPIInfoResults)) = params.ControllerAPIInfoResults{ 39 []params.ControllerAPIInfoResult{{ 40 Addresses: []string{"foo"}, 41 CACert: "bar", 42 }}, 43 } 44 return nil 45 }) 46 client := crosscontroller.NewClient(apiCaller) 47 info, err := client.ControllerInfo() 48 c.Assert(err, jc.ErrorIsNil) 49 c.Assert(info, jc.DeepEquals, &crosscontroller.ControllerInfo{ 50 Addrs: []string{"foo"}, 51 CACert: "bar", 52 }) 53 } 54 55 func (s *CrossControllerSuite) TestControllerInfoError(c *gc.C) { 56 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 57 *(result.(*params.ControllerAPIInfoResults)) = params.ControllerAPIInfoResults{ 58 []params.ControllerAPIInfoResult{{ 59 Error: ¶ms.Error{Message: "boom"}, 60 }}, 61 } 62 return nil 63 }) 64 client := crosscontroller.NewClient(apiCaller) 65 info, err := client.ControllerInfo() 66 c.Assert(err, gc.ErrorMatches, "boom") 67 c.Assert(info, gc.IsNil) 68 } 69 70 func (s *CrossControllerSuite) TestWatchExternalControllers(c *gc.C) { 71 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 72 c.Check(objType, gc.Equals, "CrossController") 73 c.Check(version, gc.Equals, 0) 74 c.Check(id, gc.Equals, "") 75 c.Check(request, gc.Equals, "WatchControllerInfo") 76 c.Check(arg, gc.IsNil) 77 c.Assert(result, gc.FitsTypeOf, ¶ms.NotifyWatchResults{}) 78 *(result.(*params.NotifyWatchResults)) = params.NotifyWatchResults{ 79 []params.NotifyWatchResult{{ 80 Error: ¶ms.Error{Message: "boom"}, 81 }}, 82 } 83 return nil 84 }) 85 client := crosscontroller.NewClient(apiCaller) 86 w, err := client.WatchControllerInfo() 87 c.Assert(err, gc.ErrorMatches, "boom") 88 c.Assert(w, gc.IsNil) 89 }