github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/modelupgrader/modelupgrader_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package modelupgrader_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 names "gopkg.in/juju/names.v2" 10 11 "github.com/juju/juju/api/base/testing" 12 "github.com/juju/juju/api/modelupgrader" 13 "github.com/juju/juju/apiserver/params" 14 coretesting "github.com/juju/juju/testing" 15 ) 16 17 var ( 18 modelTag = names.NewModelTag("e5757df7-c86a-4835-84bc-7174af535d25") 19 ) 20 21 var _ = gc.Suite(&ModelUpgraderSuite{}) 22 23 type ModelUpgraderSuite struct { 24 coretesting.BaseSuite 25 } 26 27 var nullAPICaller = testing.APICallerFunc( 28 func(objType string, version int, id, request string, arg, result interface{}) error { 29 return nil 30 }, 31 ) 32 33 func (s *ModelUpgraderSuite) TestModelEnvironVersion(c *gc.C) { 34 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 35 c.Check(objType, gc.Equals, "ModelUpgrader") 36 c.Check(version, gc.Equals, 0) 37 c.Check(id, gc.Equals, "") 38 c.Check(request, gc.Equals, "ModelEnvironVersion") 39 c.Check(arg, jc.DeepEquals, ¶ms.Entities{ 40 Entities: []params.Entity{{Tag: modelTag.String()}}, 41 }) 42 c.Assert(result, gc.FitsTypeOf, ¶ms.IntResults{}) 43 *(result.(*params.IntResults)) = params.IntResults{ 44 Results: []params.IntResult{{ 45 Result: 1, 46 }}, 47 } 48 return nil 49 }) 50 51 client := modelupgrader.NewClient(apiCaller) 52 version, err := client.ModelEnvironVersion(modelTag) 53 c.Assert(err, jc.ErrorIsNil) 54 c.Assert(version, gc.Equals, 1) 55 } 56 57 func (s *ModelUpgraderSuite) TestModelEnvironVersionError(c *gc.C) { 58 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 59 *(result.(*params.IntResults)) = params.IntResults{ 60 Results: []params.IntResult{{ 61 Error: ¶ms.Error{Message: "foo"}, 62 }}, 63 } 64 return nil 65 }) 66 67 client := modelupgrader.NewClient(apiCaller) 68 _, err := client.ModelEnvironVersion(modelTag) 69 c.Assert(err, gc.ErrorMatches, "foo") 70 } 71 72 func (s *ModelUpgraderSuite) TestModelEnvironArityMismatch(c *gc.C) { 73 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 74 *(result.(*params.IntResults)) = params.IntResults{ 75 Results: []params.IntResult{{}, {}}, 76 } 77 return nil 78 }) 79 80 client := modelupgrader.NewClient(apiCaller) 81 _, err := client.ModelEnvironVersion(modelTag) 82 c.Assert(err, gc.ErrorMatches, "expected 1 result, got 2") 83 } 84 85 func (s *ModelUpgraderSuite) TestModelTargetEnvironVersion(c *gc.C) { 86 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 87 c.Check(objType, gc.Equals, "ModelUpgrader") 88 c.Check(version, gc.Equals, 0) 89 c.Check(id, gc.Equals, "") 90 c.Check(request, gc.Equals, "ModelTargetEnvironVersion") 91 c.Check(arg, jc.DeepEquals, ¶ms.Entities{ 92 Entities: []params.Entity{{Tag: modelTag.String()}}, 93 }) 94 c.Assert(result, gc.FitsTypeOf, ¶ms.IntResults{}) 95 *(result.(*params.IntResults)) = params.IntResults{ 96 Results: []params.IntResult{{ 97 Result: 1, 98 }}, 99 } 100 return nil 101 }) 102 103 client := modelupgrader.NewClient(apiCaller) 104 version, err := client.ModelTargetEnvironVersion(modelTag) 105 c.Assert(err, jc.ErrorIsNil) 106 c.Assert(version, gc.Equals, 1) 107 } 108 109 func (s *ModelUpgraderSuite) TestModelTargetEnvironVersionError(c *gc.C) { 110 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 111 *(result.(*params.IntResults)) = params.IntResults{ 112 Results: []params.IntResult{{ 113 Error: ¶ms.Error{Message: "foo"}, 114 }}, 115 } 116 return nil 117 }) 118 119 client := modelupgrader.NewClient(apiCaller) 120 _, err := client.ModelTargetEnvironVersion(modelTag) 121 c.Assert(err, gc.ErrorMatches, "foo") 122 } 123 124 func (s *ModelUpgraderSuite) TestModelTargetEnvironArityMismatch(c *gc.C) { 125 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 126 *(result.(*params.IntResults)) = params.IntResults{ 127 Results: []params.IntResult{{}, {}}, 128 } 129 return nil 130 }) 131 132 client := modelupgrader.NewClient(apiCaller) 133 _, err := client.ModelTargetEnvironVersion(modelTag) 134 c.Assert(err, gc.ErrorMatches, "expected 1 result, got 2") 135 } 136 137 func (s *ModelUpgraderSuite) TestSetModelEnvironVersion(c *gc.C) { 138 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 139 c.Check(objType, gc.Equals, "ModelUpgrader") 140 c.Check(version, gc.Equals, 0) 141 c.Check(id, gc.Equals, "") 142 c.Check(request, gc.Equals, "SetModelEnvironVersion") 143 c.Check(arg, jc.DeepEquals, ¶ms.SetModelEnvironVersions{ 144 Models: []params.SetModelEnvironVersion{{ 145 ModelTag: modelTag.String(), 146 Version: 1, 147 }}, 148 }) 149 c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{}) 150 *(result.(*params.ErrorResults)) = params.ErrorResults{ 151 Results: []params.ErrorResult{{Error: ¶ms.Error{Message: "foo"}}}, 152 } 153 return nil 154 }) 155 156 client := modelupgrader.NewClient(apiCaller) 157 err := client.SetModelEnvironVersion(modelTag, 1) 158 c.Assert(err, gc.ErrorMatches, "foo") 159 } 160 161 func (s *ModelUpgraderSuite) TestSetModelEnvironVersionArityMismatch(c *gc.C) { 162 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 163 *(result.(*params.ErrorResults)) = params.ErrorResults{ 164 Results: []params.ErrorResult{{}, {}}, 165 } 166 return nil 167 }) 168 169 client := modelupgrader.NewClient(apiCaller) 170 err := client.SetModelEnvironVersion(modelTag, 1) 171 c.Assert(err, gc.ErrorMatches, "expected 1 result, got 2") 172 } 173 174 func (s *ModelUpgraderSuite) TestSetModelStatus(c *gc.C) { 175 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 176 c.Check(objType, gc.Equals, "ModelUpgrader") 177 c.Check(version, gc.Equals, 0) 178 c.Check(id, gc.Equals, "") 179 c.Check(request, gc.Equals, "SetModelStatus") 180 c.Check(arg, jc.DeepEquals, params.SetStatus{ 181 Entities: []params.EntityStatusArgs{{ 182 Tag: modelTag.String(), 183 Status: "foo", 184 Info: "bar", 185 Data: map[string]interface{}{ 186 "baz": "qux", 187 }, 188 }}, 189 }) 190 c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{}) 191 *(result.(*params.ErrorResults)) = params.ErrorResults{ 192 Results: []params.ErrorResult{{Error: ¶ms.Error{Message: "foo"}}}, 193 } 194 return nil 195 }) 196 197 client := modelupgrader.NewClient(apiCaller) 198 err := client.SetModelStatus(modelTag, "foo", "bar", map[string]interface{}{ 199 "baz": "qux", 200 }) 201 c.Assert(err, gc.ErrorMatches, "foo") 202 } 203 204 func (s *ModelUpgraderSuite) TestSetModelStatusArityMismatch(c *gc.C) { 205 apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error { 206 *(result.(*params.ErrorResults)) = params.ErrorResults{ 207 Results: []params.ErrorResult{{}, {}}, 208 } 209 return nil 210 }) 211 212 client := modelupgrader.NewClient(apiCaller) 213 err := client.SetModelStatus(modelTag, "foo", "bar", nil) 214 c.Assert(err, gc.ErrorMatches, "expected 1 result, got 2") 215 }