github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/modelconfig/modelconfig_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package modelconfig_test 5 6 import ( 7 gitjujutesting "github.com/juju/testing" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 basetesting "github.com/juju/juju/api/base/testing" 12 "github.com/juju/juju/api/modelconfig" 13 "github.com/juju/juju/apiserver/params" 14 "github.com/juju/juju/environs/config" 15 ) 16 17 type modelconfigSuite struct { 18 gitjujutesting.IsolationSuite 19 } 20 21 var _ = gc.Suite(&modelconfigSuite{}) 22 23 func (s *modelconfigSuite) TestModelGet(c *gc.C) { 24 apiCaller := basetesting.APICallerFunc( 25 func(objType string, 26 version int, 27 id, request string, 28 a, result interface{}, 29 ) error { 30 c.Check(objType, gc.Equals, "ModelConfig") 31 c.Check(id, gc.Equals, "") 32 c.Check(request, gc.Equals, "ModelGet") 33 c.Check(a, gc.IsNil) 34 c.Assert(result, gc.FitsTypeOf, ¶ms.ModelConfigResults{}) 35 results := result.(*params.ModelConfigResults) 36 results.Config = map[string]params.ConfigValue{ 37 "foo": {"bar", "model"}, 38 } 39 return nil 40 }, 41 ) 42 client := modelconfig.NewClient(apiCaller) 43 result, err := client.ModelGet() 44 c.Assert(err, jc.ErrorIsNil) 45 c.Assert(result, jc.DeepEquals, map[string]interface{}{ 46 "foo": "bar", 47 }) 48 } 49 50 func (s *modelconfigSuite) TestModelGetWithMetadata(c *gc.C) { 51 apiCaller := basetesting.APICallerFunc( 52 func(objType string, 53 version int, 54 id, request string, 55 a, result interface{}, 56 ) error { 57 c.Check(objType, gc.Equals, "ModelConfig") 58 c.Check(id, gc.Equals, "") 59 c.Check(request, gc.Equals, "ModelGet") 60 c.Check(a, gc.IsNil) 61 c.Assert(result, gc.FitsTypeOf, ¶ms.ModelConfigResults{}) 62 results := result.(*params.ModelConfigResults) 63 results.Config = map[string]params.ConfigValue{ 64 "foo": {"bar", "model"}, 65 } 66 return nil 67 }, 68 ) 69 client := modelconfig.NewClient(apiCaller) 70 result, err := client.ModelGetWithMetadata() 71 c.Assert(err, jc.ErrorIsNil) 72 c.Assert(result, jc.DeepEquals, config.ConfigValues{ 73 "foo": {"bar", "model"}, 74 }) 75 } 76 77 func (s *modelconfigSuite) TestModelSet(c *gc.C) { 78 called := false 79 apiCaller := basetesting.APICallerFunc( 80 func(objType string, 81 version int, 82 id, request string, 83 a, result interface{}, 84 ) error { 85 c.Check(objType, gc.Equals, "ModelConfig") 86 c.Check(id, gc.Equals, "") 87 c.Check(request, gc.Equals, "ModelSet") 88 c.Check(a, jc.DeepEquals, params.ModelSet{ 89 Config: map[string]interface{}{ 90 "some-name": "value", 91 "other-name": true, 92 }, 93 }) 94 called = true 95 return nil 96 }, 97 ) 98 client := modelconfig.NewClient(apiCaller) 99 err := client.ModelSet(map[string]interface{}{ 100 "some-name": "value", 101 "other-name": true, 102 }) 103 c.Assert(err, jc.ErrorIsNil) 104 c.Assert(called, jc.IsTrue) 105 } 106 107 func (s *modelconfigSuite) TestModelUnset(c *gc.C) { 108 called := false 109 apiCaller := basetesting.APICallerFunc( 110 func(objType string, 111 version int, 112 id, request string, 113 a, result interface{}, 114 ) error { 115 c.Check(objType, gc.Equals, "ModelConfig") 116 c.Check(id, gc.Equals, "") 117 c.Check(request, gc.Equals, "ModelUnset") 118 c.Check(a, jc.DeepEquals, params.ModelUnset{ 119 Keys: []string{"foo", "bar"}, 120 }) 121 called = true 122 return nil 123 }, 124 ) 125 client := modelconfig.NewClient(apiCaller) 126 err := client.ModelUnset("foo", "bar") 127 c.Assert(err, jc.ErrorIsNil) 128 c.Assert(called, jc.IsTrue) 129 } 130 131 func (s *modelconfigSuite) TestSetSupport(c *gc.C) { 132 called := false 133 apiCaller := basetesting.APICallerFunc( 134 func(objType string, 135 version int, 136 id, request string, 137 a, result interface{}, 138 ) error { 139 c.Check(objType, gc.Equals, "ModelConfig") 140 c.Check(id, gc.Equals, "") 141 c.Check(request, gc.Equals, "SetSLALevel") 142 c.Check(a, jc.DeepEquals, params.ModelSLA{ 143 ModelSLAInfo: params.ModelSLAInfo{ 144 Level: "foobar", 145 Owner: "bob", 146 }, 147 Credentials: []byte("creds"), 148 }) 149 called = true 150 return nil 151 }, 152 ) 153 client := modelconfig.NewClient(apiCaller) 154 err := client.SetSLALevel("foobar", "bob", []byte("creds")) 155 c.Assert(err, jc.ErrorIsNil) 156 c.Assert(called, jc.IsTrue) 157 } 158 159 func (s *modelconfigSuite) TestGetSupport(c *gc.C) { 160 called := false 161 apiCaller := basetesting.APICallerFunc( 162 func(objType string, 163 version int, 164 id, request string, 165 a, result interface{}, 166 ) error { 167 c.Check(objType, gc.Equals, "ModelConfig") 168 c.Check(id, gc.Equals, "") 169 c.Check(request, gc.Equals, "SLALevel") 170 c.Check(a, jc.DeepEquals, nil) 171 results := result.(*params.StringResult) 172 results.Result = "level" 173 called = true 174 return nil 175 }, 176 ) 177 client := modelconfig.NewClient(apiCaller) 178 level, err := client.SLALevel() 179 c.Assert(err, jc.ErrorIsNil) 180 c.Assert(called, jc.IsTrue) 181 c.Assert(level, gc.Equals, "level") 182 } 183 184 func (s *modelconfigSuite) TestSequencesV1(c *gc.C) { 185 apiCaller := basetesting.BestVersionCaller{ 186 basetesting.APICallerFunc( 187 func(_ string, _ int, _, _ string, _, _ interface{}) error { 188 c.Errorf("shoulnd't be called") 189 return nil 190 }, 191 ), 1} // facade version one 192 client := modelconfig.NewClient(apiCaller) 193 sequences, err := client.Sequences() 194 c.Assert(err, gc.ErrorMatches, "Sequences on v1 facade not supported") 195 c.Assert(sequences, gc.IsNil) 196 } 197 198 func (s *modelconfigSuite) TestSequences(c *gc.C) { 199 called := false 200 apiCaller := basetesting.BestVersionCaller{ 201 basetesting.APICallerFunc( 202 func(objType string, 203 version int, 204 id, request string, 205 a, result interface{}, 206 ) error { 207 c.Check(objType, gc.Equals, "ModelConfig") 208 c.Check(id, gc.Equals, "") 209 c.Check(request, gc.Equals, "Sequences") 210 c.Check(a, jc.DeepEquals, nil) 211 results := result.(*params.ModelSequencesResult) 212 results.Sequences = map[string]int{"foo": 5, "bar": 2} 213 called = true 214 return nil 215 }, 216 ), 2} 217 client := modelconfig.NewClient(apiCaller) 218 sequences, err := client.Sequences() 219 c.Assert(err, jc.ErrorIsNil) 220 c.Assert(called, jc.IsTrue) 221 c.Assert(sequences, jc.DeepEquals, map[string]int{"foo": 5, "bar": 2}) 222 }