github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/restrict_model_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 restrictModelSuite struct { 17 testing.BaseSuite 18 root rpc.Root 19 } 20 21 var _ = gc.Suite(&restrictModelSuite{}) 22 23 func (s *restrictModelSuite) SetUpSuite(c *gc.C) { 24 s.BaseSuite.SetUpSuite(c) 25 s.root = apiserver.TestingModelOnlyRoot() 26 } 27 28 func (s *restrictModelSuite) TestAllowed(c *gc.C) { 29 s.assertMethod(c, "Client", 1, "FullStatus") 30 s.assertMethod(c, "Pinger", 1, "Ping") 31 s.assertMethod(c, "HighAvailability", 2, "EnableHA") 32 } 33 34 func (s *restrictModelSuite) TestBlocked(c *gc.C) { 35 caller, err := s.root.FindMethod("ModelManager", 2, "ListModels") 36 c.Assert(err, gc.ErrorMatches, `facade "ModelManager" not supported for model API connection`) 37 c.Assert(errors.IsNotSupported(err), jc.IsTrue) 38 c.Assert(caller, gc.IsNil) 39 } 40 41 func (s *restrictModelSuite) assertMethod(c *gc.C, facadeName string, version int, method string) { 42 caller, err := s.root.FindMethod(facadeName, version, method) 43 c.Check(err, jc.ErrorIsNil) 44 c.Check(caller, gc.NotNil) 45 }