github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/apiserver/uniter/uniter_v0_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package uniter_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/apiserver/common" 11 commontesting "github.com/juju/juju/apiserver/common/testing" 12 "github.com/juju/juju/apiserver/params" 13 apiservertesting "github.com/juju/juju/apiserver/testing" 14 "github.com/juju/juju/apiserver/uniter" 15 "github.com/juju/juju/state" 16 ) 17 18 type uniterV0Suite struct { 19 uniterBaseSuite 20 *commontesting.EnvironWatcherTest 21 22 uniter *uniter.UniterAPIV0 23 meteredUniter *uniter.UniterAPIV0 24 } 25 26 var _ = gc.Suite(&uniterV0Suite{}) 27 28 func (s *uniterV0Suite) SetUpTest(c *gc.C) { 29 s.uniterBaseSuite.setUpTest(c) 30 31 uniterAPIV0, err := uniter.NewUniterAPIV0( 32 s.State, 33 s.resources, 34 s.authorizer, 35 ) 36 c.Assert(err, jc.ErrorIsNil) 37 s.uniter = uniterAPIV0 38 39 meteredAuthorizer := apiservertesting.FakeAuthorizer{ 40 Tag: s.meteredUnit.Tag(), 41 } 42 s.meteredUniter, err = uniter.NewUniterAPIV0( 43 s.State, 44 s.resources, 45 meteredAuthorizer, 46 ) 47 c.Assert(err, jc.ErrorIsNil) 48 49 s.EnvironWatcherTest = commontesting.NewEnvironWatcherTest( 50 s.uniter, 51 s.State, 52 s.resources, 53 commontesting.NoSecrets, 54 ) 55 } 56 57 func (s *uniterV0Suite) TestUniterFailsWithNonUnitAgentUser(c *gc.C) { 58 factory := func(st *state.State, res *common.Resources, auth common.Authorizer) error { 59 _, err := uniter.NewUniterAPIV0(st, res, auth) 60 return err 61 } 62 s.testUniterFailsWithNonUnitAgentUser(c, factory) 63 } 64 65 func (s *uniterV0Suite) TestSetStatus(c *gc.C) { 66 s.testSetStatus(c, s.uniter) 67 } 68 69 func (s *uniterV0Suite) TestLife(c *gc.C) { 70 s.testLife(c, s.uniter) 71 } 72 73 func (s *uniterV0Suite) TestEnsureDead(c *gc.C) { 74 s.testEnsureDead(c, s.uniter) 75 } 76 77 func (s *uniterV0Suite) TestWatch(c *gc.C) { 78 s.testWatch(c, s.uniter) 79 } 80 81 func (s *uniterV0Suite) TestPublicAddress(c *gc.C) { 82 s.testPublicAddress(c, s.uniter) 83 } 84 85 func (s *uniterV0Suite) TestPrivateAddress(c *gc.C) { 86 s.testPrivateAddress(c, s.uniter) 87 } 88 89 func (s *uniterV0Suite) TestResolved(c *gc.C) { 90 s.testResolved(c, s.uniter) 91 } 92 93 func (s *uniterV0Suite) TestClearResolved(c *gc.C) { 94 s.testClearResolved(c, s.uniter) 95 } 96 97 func (s *uniterV0Suite) TestGetPrincipal(c *gc.C) { 98 factory := func( 99 st *state.State, 100 resources *common.Resources, 101 authorizer common.Authorizer, 102 ) (getPrincipal, error) { 103 return uniter.NewUniterAPIV0(st, resources, authorizer) 104 } 105 s.testGetPrincipal(c, s.uniter, factory) 106 } 107 108 func (s *uniterV0Suite) TestHasSubordinates(c *gc.C) { 109 s.testHasSubordinates(c, s.uniter) 110 } 111 112 func (s *uniterV0Suite) TestDestroy(c *gc.C) { 113 s.testDestroy(c, s.uniter) 114 } 115 116 func (s *uniterV0Suite) TestDestroyAllSubordinates(c *gc.C) { 117 s.testDestroyAllSubordinates(c, s.uniter) 118 } 119 120 func (s *uniterV0Suite) TestCharmURL(c *gc.C) { 121 s.testCharmURL(c, s.uniter) 122 } 123 124 func (s *uniterV0Suite) TestSetCharmURL(c *gc.C) { 125 s.testSetCharmURL(c, s.uniter) 126 } 127 128 func (s *uniterV0Suite) TestOpenPorts(c *gc.C) { 129 s.testOpenPorts(c, s.uniter) 130 } 131 132 func (s *uniterV0Suite) TestClosePorts(c *gc.C) { 133 s.testClosePorts(c, s.uniter) 134 } 135 136 func (s *uniterV0Suite) TestOpenPort(c *gc.C) { 137 s.testOpenPort(c, s.uniter) 138 } 139 140 func (s *uniterV0Suite) TestClosePort(c *gc.C) { 141 s.testClosePort(c, s.uniter) 142 } 143 144 func (s *uniterV0Suite) TestWatchConfigSettings(c *gc.C) { 145 s.testWatchConfigSettings(c, s.uniter) 146 } 147 148 func (s *uniterV0Suite) TestWatchActionNotifications(c *gc.C) { 149 s.testWatchActionNotifications(c, s.uniter) 150 } 151 152 func (s *uniterV0Suite) TestWatchPreexistingActions(c *gc.C) { 153 s.testWatchPreexistingActions(c, s.uniter) 154 } 155 156 func (s *uniterV0Suite) TestWatchActionNotificationsMalformedTag(c *gc.C) { 157 s.testWatchActionNotificationsMalformedTag(c, s.uniter) 158 } 159 160 func (s *uniterV0Suite) TestWatchActionNotificationsMalformedUnitName(c *gc.C) { 161 s.testWatchActionNotificationsMalformedUnitName(c, s.uniter) 162 } 163 164 func (s *uniterV0Suite) TestWatchActionNotificationsNotUnit(c *gc.C) { 165 s.testWatchActionNotificationsNotUnit(c, s.uniter) 166 } 167 168 func (s *uniterV0Suite) TestWatchActionNotificationsPermissionDenied(c *gc.C) { 169 s.testWatchActionNotificationsPermissionDenied(c, s.uniter) 170 } 171 172 func (s *uniterV0Suite) TestConfigSettings(c *gc.C) { 173 s.testConfigSettings(c, s.uniter) 174 } 175 176 func (s *uniterV0Suite) TestWatchServiceRelations(c *gc.C) { 177 s.testWatchServiceRelations(c, s.uniter) 178 } 179 180 func (s *uniterV0Suite) TestCharmArchiveSha256(c *gc.C) { 181 s.testCharmArchiveSha256(c, s.uniter) 182 } 183 184 func (s *uniterV0Suite) TestCharmArchiveURLs(c *gc.C) { 185 s.testCharmArchiveURLs(c, s.uniter) 186 } 187 188 func (s *uniterV0Suite) TestCurrentEnvironUUID(c *gc.C) { 189 s.testCurrentEnvironUUID(c, s.uniter) 190 } 191 192 func (s *uniterV0Suite) TestCurrentEnvironment(c *gc.C) { 193 s.testCurrentEnvironment(c, s.uniter) 194 } 195 196 func (s *uniterV0Suite) TestActions(c *gc.C) { 197 s.testActions(c, s.uniter) 198 } 199 200 func (s *uniterV0Suite) TestActionsNotPresent(c *gc.C) { 201 s.testActionsNotPresent(c, s.uniter) 202 } 203 204 func (s *uniterV0Suite) TestActionsWrongUnit(c *gc.C) { 205 factory := func( 206 st *state.State, 207 resources *common.Resources, 208 authorizer common.Authorizer, 209 ) (actions, error) { 210 return uniter.NewUniterAPIV0(st, resources, authorizer) 211 } 212 s.testActionsWrongUnit(c, factory) 213 } 214 215 func (s *uniterV0Suite) TestActionsPermissionDenied(c *gc.C) { 216 s.testActionsPermissionDenied(c, s.uniter) 217 } 218 219 func (s *uniterV0Suite) TestFinishActionsSuccess(c *gc.C) { 220 s.testFinishActionsSuccess(c, s.uniter) 221 } 222 223 func (s *uniterV0Suite) TestFinishActionsFailure(c *gc.C) { 224 s.testFinishActionsFailure(c, s.uniter) 225 } 226 227 func (s *uniterV0Suite) TestFinishActionsAuthAccess(c *gc.C) { 228 s.testFinishActionsAuthAccess(c, s.uniter) 229 } 230 231 func (s *uniterV0Suite) TestBeginActions(c *gc.C) { 232 s.testBeginActions(c, s.uniter) 233 } 234 235 func (s *uniterV0Suite) TestRelation(c *gc.C) { 236 s.testRelation(c, s.uniter) 237 } 238 239 func (s *uniterV0Suite) TestRelationById(c *gc.C) { 240 s.testRelationById(c, s.uniter) 241 } 242 243 func (s *uniterV0Suite) TestProviderType(c *gc.C) { 244 s.testProviderType(c, s.uniter) 245 } 246 247 func (s *uniterV0Suite) TestEnterScope(c *gc.C) { 248 s.testEnterScope(c, s.uniter) 249 } 250 251 func (s *uniterV0Suite) TestLeaveScope(c *gc.C) { 252 s.testLeaveScope(c, s.uniter) 253 } 254 255 func (s *uniterV0Suite) TestJoinedRelations(c *gc.C) { 256 s.testJoinedRelations(c, s.uniter) 257 } 258 259 func (s *uniterV0Suite) TestReadSettings(c *gc.C) { 260 s.testReadSettings(c, s.uniter) 261 } 262 263 func (s *uniterV0Suite) TestReadSettingsWithNonStringValuesFails(c *gc.C) { 264 s.testReadSettingsWithNonStringValuesFails(c, s.uniter) 265 } 266 267 func (s *uniterV0Suite) TestReadRemoteSettings(c *gc.C) { 268 s.testReadRemoteSettings(c, s.uniter) 269 } 270 271 func (s *uniterV0Suite) TestReadRemoteSettingsWithNonStringValuesFails(c *gc.C) { 272 s.testReadRemoteSettingsWithNonStringValuesFails(c, s.uniter) 273 } 274 275 func (s *uniterV0Suite) TestUpdateSettings(c *gc.C) { 276 s.testUpdateSettings(c, s.uniter) 277 } 278 279 func (s *uniterV0Suite) TestWatchRelationUnits(c *gc.C) { 280 s.testWatchRelationUnits(c, s.uniter) 281 } 282 283 func (s *uniterV0Suite) TestAPIAddresses(c *gc.C) { 284 s.testAPIAddresses(c, s.uniter) 285 } 286 287 func (s *uniterV0Suite) TestWatchUnitAddresses(c *gc.C) { 288 s.testWatchUnitAddresses(c, s.uniter) 289 } 290 291 func (s *uniterV0Suite) TestAddMetrics(c *gc.C) { 292 s.testAddMetrics(c, s.meteredUniter) 293 } 294 295 func (s *uniterV0Suite) TestAddMetricsIncorrectTag(c *gc.C) { 296 s.testAddMetricsIncorrectTag(c, s.uniter) 297 } 298 299 func (s *uniterV0Suite) TestAddMetricsUnauthenticated(c *gc.C) { 300 s.testAddMetricsUnauthenticated(c, s.uniter) 301 } 302 303 func (s *uniterV0Suite) TestGetMeterStatus(c *gc.C) { 304 s.testGetMeterStatus(c, s.uniter) 305 } 306 307 func (s *uniterV0Suite) TestGetMeterStatusUnauthenticated(c *gc.C) { 308 s.testGetMeterStatusUnauthenticated(c, s.uniter) 309 } 310 311 func (s *uniterV0Suite) TestGetMeterStatusBadTag(c *gc.C) { 312 s.testGetMeterStatusBadTag(c, s.uniter) 313 } 314 315 func (s *uniterV0Suite) TestWatchMeterStatus(c *gc.C) { 316 s.testWatchMeterStatus(c, s.uniter) 317 } 318 319 func (s *uniterV0Suite) TestGetOwnerTag(c *gc.C) { 320 tag := s.mysql.Tag().String() 321 args := params.Entities{Entities: []params.Entity{ 322 {Tag: tag}, 323 }} 324 result, err := s.uniter.GetOwnerTag(args) 325 c.Assert(err, jc.ErrorIsNil) 326 c.Assert(result, gc.DeepEquals, params.StringResult{ 327 Result: s.AdminUserTag(c).String(), 328 }) 329 } 330 331 func (s *uniterV0Suite) TestServiceOwnerV0NotImplemented(c *gc.C) { 332 apiservertesting.AssertNotImplemented(c, s.uniter, "ServiceOwner") 333 } 334 335 func (s *uniterV0Suite) TestAssignedMachineV0NotImplemented(c *gc.C) { 336 apiservertesting.AssertNotImplemented(c, s.uniter, "AssignedMachine") 337 } 338 339 func (s *uniterV0Suite) TestAllMachinePortsV0NotImplemented(c *gc.C) { 340 apiservertesting.AssertNotImplemented(c, s.uniter, "AllMachinePorts") 341 } 342 343 func (s *uniterV0Suite) TestRequestReboot(c *gc.C) { 344 args := params.Entities{Entities: []params.Entity{ 345 {Tag: s.machine0.Tag().String()}, 346 {Tag: s.machine1.Tag().String()}, 347 {Tag: "bogus"}, 348 {Tag: "nasty-tag"}, 349 }} 350 errResult, err := s.uniter.RequestReboot(args) 351 c.Assert(err, jc.ErrorIsNil) 352 c.Assert(errResult, gc.DeepEquals, params.ErrorResults{ 353 Results: []params.ErrorResult{ 354 {Error: nil}, 355 {Error: apiservertesting.ErrUnauthorized}, 356 {Error: apiservertesting.ErrUnauthorized}, 357 {Error: apiservertesting.ErrUnauthorized}, 358 }}) 359 360 rFlag, err := s.machine0.GetRebootFlag() 361 c.Assert(err, jc.ErrorIsNil) 362 c.Assert(rFlag, jc.IsTrue) 363 364 rFlag, err = s.machine1.GetRebootFlag() 365 c.Assert(err, jc.ErrorIsNil) 366 c.Assert(rFlag, jc.IsFalse) 367 }