github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/restrict_controller_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package apiserver_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/apiserver" 12 "github.com/juju/juju/rpc" 13 "github.com/juju/juju/testing" 14 ) 15 16 type restrictControllerSuite struct { 17 testing.BaseSuite 18 root rpc.Root 19 } 20 21 var _ = gc.Suite(&restrictControllerSuite{}) 22 23 func (s *restrictControllerSuite) SetUpSuite(c *gc.C) { 24 s.BaseSuite.SetUpSuite(c) 25 s.root = apiserver.TestingControllerOnlyRoot() 26 } 27 28 func (s *restrictControllerSuite) TestAllowed(c *gc.C) { 29 s.assertMethod(c, "AllModelWatcher", 2, "Next") 30 s.assertMethod(c, "AllModelWatcher", 2, "Stop") 31 s.assertMethod(c, "ModelManager", 2, "CreateModel") 32 s.assertMethod(c, "ModelManager", 2, "ListModels") 33 s.assertMethod(c, "Pinger", 1, "Ping") 34 s.assertMethod(c, "Bundle", 1, "GetChanges") 35 s.assertMethod(c, "HighAvailability", 2, "EnableHA") 36 } 37 38 func (s *restrictControllerSuite) TestNotAllowed(c *gc.C) { 39 caller, err := s.root.FindMethod("Client", 1, "FullStatus") 40 c.Assert(err, gc.ErrorMatches, `facade "Client" not supported for controller API connection`) 41 c.Assert(errors.IsNotSupported(err), jc.IsTrue) 42 c.Assert(caller, gc.IsNil) 43 } 44 45 func (s *restrictControllerSuite) assertMethod(c *gc.C, facadeName string, version int, method string) { 46 caller, err := s.root.FindMethod(facadeName, version, method) 47 c.Check(err, jc.ErrorIsNil) 48 c.Check(caller, gc.NotNil) 49 }