github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/restrict_caasmodel_test.go (about) 1 // Copyright 2017 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 RestrictCAASModelSuite struct { 17 testing.BaseSuite 18 root rpc.Root 19 } 20 21 var _ = gc.Suite(&RestrictCAASModelSuite{}) 22 23 func (s *RestrictCAASModelSuite) SetUpSuite(c *gc.C) { 24 s.BaseSuite.SetUpSuite(c) 25 s.root = apiserver.TestingCAASModelOnlyRoot() 26 } 27 28 func (s *RestrictCAASModelSuite) TestAllowed(c *gc.C) { 29 // TODO(caas) - replace with "CAASOperatorProvisioner.WatchApplications" when that bit lands 30 s.assertMethod(c, "CAASOperatorProvisioner", 1, "WatchApplications") 31 } 32 33 func (s *RestrictCAASModelSuite) TestNotAllowed(c *gc.C) { 34 caller, err := s.root.FindMethod("Firewaller", 1, "WatchOpenedPorts") 35 c.Assert(err, gc.ErrorMatches, `facade "Firewaller" not supported on container models`) 36 c.Assert(errors.IsNotSupported(err), jc.IsTrue) 37 c.Assert(caller, gc.IsNil) 38 } 39 40 func (s *RestrictCAASModelSuite) assertMethod(c *gc.C, facadeName string, version int, method string) { 41 caller, err := s.root.FindMethod(facadeName, version, method) 42 c.Check(err, jc.ErrorIsNil) 43 c.Check(caller, gc.NotNil) 44 }