github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/externalcontrollerupdater/externalcontrollerupdater_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package externalcontrollerupdater_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/externalcontrollerupdater" 12 "github.com/juju/juju/apiserver/params" 13 "github.com/juju/juju/core/crossmodel" 14 coretesting "github.com/juju/juju/testing" 15 ) 16 17 var _ = gc.Suite(&ExternalControllerUpdaterSuite{}) 18 19 type ExternalControllerUpdaterSuite struct { 20 coretesting.BaseSuite 21 } 22 23 func (s *ExternalControllerUpdaterSuite) TestNewClient(c *gc.C) { 24 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 25 return nil 26 }) 27 client := externalcontrollerupdater.New(apiCaller) 28 c.Assert(client, gc.NotNil) 29 } 30 31 func (s *ExternalControllerUpdaterSuite) TestExternalControllerInfo(c *gc.C) { 32 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 33 c.Check(objType, gc.Equals, "ExternalControllerUpdater") 34 c.Check(version, gc.Equals, 0) 35 c.Check(id, gc.Equals, "") 36 c.Check(request, gc.Equals, "ExternalControllerInfo") 37 c.Check(arg, gc.DeepEquals, params.Entities{ 38 Entities: []params.Entity{{coretesting.ControllerTag.String()}}, 39 }) 40 c.Assert(result, gc.FitsTypeOf, ¶ms.ExternalControllerInfoResults{}) 41 *(result.(*params.ExternalControllerInfoResults)) = params.ExternalControllerInfoResults{ 42 []params.ExternalControllerInfoResult{{ 43 Result: ¶ms.ExternalControllerInfo{ 44 ControllerTag: coretesting.ControllerTag.String(), 45 Alias: "foo", 46 Addrs: []string{"bar"}, 47 CACert: "baz", 48 }, 49 }}, 50 } 51 return nil 52 }) 53 client := externalcontrollerupdater.New(apiCaller) 54 info, err := client.ExternalControllerInfo(coretesting.ControllerTag.Id()) 55 c.Assert(err, jc.ErrorIsNil) 56 c.Assert(info, jc.DeepEquals, &crossmodel.ControllerInfo{ 57 ControllerTag: coretesting.ControllerTag, 58 Alias: "foo", 59 Addrs: []string{"bar"}, 60 CACert: "baz", 61 }) 62 } 63 64 func (s *ExternalControllerUpdaterSuite) TestExternalControllerInfoError(c *gc.C) { 65 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 66 *(result.(*params.ExternalControllerInfoResults)) = params.ExternalControllerInfoResults{ 67 []params.ExternalControllerInfoResult{{ 68 Error: ¶ms.Error{Message: "boom"}, 69 }}, 70 } 71 return nil 72 }) 73 client := externalcontrollerupdater.New(apiCaller) 74 info, err := client.ExternalControllerInfo(coretesting.ControllerTag.Id()) 75 c.Assert(err, gc.ErrorMatches, "boom") 76 c.Assert(info, gc.IsNil) 77 } 78 79 func (s *ExternalControllerUpdaterSuite) TestSetExternalControllerInfo(c *gc.C) { 80 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 81 c.Check(objType, gc.Equals, "ExternalControllerUpdater") 82 c.Check(version, gc.Equals, 0) 83 c.Check(id, gc.Equals, "") 84 c.Check(request, gc.Equals, "SetExternalControllerInfo") 85 c.Check(arg, jc.DeepEquals, params.SetExternalControllersInfoParams{ 86 []params.SetExternalControllerInfoParams{{ 87 params.ExternalControllerInfo{ 88 ControllerTag: coretesting.ControllerTag.String(), 89 Alias: "foo", 90 Addrs: []string{"bar"}, 91 CACert: "baz", 92 }, 93 }}, 94 }) 95 c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{}) 96 *(result.(*params.ErrorResults)) = params.ErrorResults{ 97 []params.ErrorResult{{ 98 ¶ms.Error{Message: "boom"}, 99 }}, 100 } 101 return nil 102 }) 103 client := externalcontrollerupdater.New(apiCaller) 104 err := client.SetExternalControllerInfo(crossmodel.ControllerInfo{ 105 ControllerTag: coretesting.ControllerTag, 106 Alias: "foo", 107 Addrs: []string{"bar"}, 108 CACert: "baz", 109 }) 110 c.Assert(err, gc.ErrorMatches, "boom") 111 } 112 113 func (s *ExternalControllerUpdaterSuite) TestWatchExternalControllers(c *gc.C) { 114 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 115 c.Check(objType, gc.Equals, "ExternalControllerUpdater") 116 c.Check(version, gc.Equals, 0) 117 c.Check(id, gc.Equals, "") 118 c.Check(request, gc.Equals, "WatchExternalControllers") 119 c.Check(arg, gc.IsNil) 120 c.Assert(result, gc.FitsTypeOf, ¶ms.StringsWatchResults{}) 121 *(result.(*params.StringsWatchResults)) = params.StringsWatchResults{ 122 []params.StringsWatchResult{{ 123 Error: ¶ms.Error{Message: "boom"}, 124 }}, 125 } 126 return nil 127 }) 128 client := externalcontrollerupdater.New(apiCaller) 129 w, err := client.WatchExternalControllers() 130 c.Assert(err, gc.ErrorMatches, "boom") 131 c.Assert(w, gc.IsNil) 132 }