github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/common/interfaces_test.go (about) 1 // Copyright 2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common_test 5 6 import ( 7 "github.com/juju/names/v5" 8 coretesting "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 "go.uber.org/mock/gomock" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/apiserver/common" 14 "github.com/juju/juju/apiserver/common/mocks" 15 ) 16 17 type AuthFuncSuite struct { 18 coretesting.IsolationSuite 19 20 authorizer common.Authorizer 21 } 22 23 var _ = gc.Suite(&AuthFuncSuite{}) 24 25 func (s *AuthFuncSuite) setup(c *gc.C, machineTag names.Tag) func() { 26 ctrl := gomock.NewController(c) 27 28 authorizer := mocks.NewMockAuthorizer(ctrl) 29 30 gomock.InOrder( 31 authorizer.EXPECT().AuthController().Return(true), 32 authorizer.EXPECT().AuthMachineAgent().Return(true), 33 authorizer.EXPECT().GetAuthTag().Return(machineTag), 34 ) 35 36 s.authorizer = authorizer 37 38 return ctrl.Finish 39 } 40 41 func (s *AuthFuncSuite) TestAuthFuncForMachineAgent(c *gc.C) { 42 machineTag := names.NewMachineTag("machine-test/0") 43 finish := s.setup(c, machineTag) 44 defer finish() 45 46 authFunc := common.AuthFuncForMachineAgent(s.authorizer) 47 48 fn, err := authFunc() 49 c.Assert(err, gc.IsNil) 50 c.Assert(fn(machineTag), jc.IsTrue) 51 } 52 53 func (s *AuthFuncSuite) TestAuthFuncForMachineAgentInvalidMachineTag(c *gc.C) { 54 machineTag := names.NewMachineTag("machine-test/0") 55 finish := s.setup(c, machineTag) 56 defer finish() 57 58 authFunc := common.AuthFuncForMachineAgent(s.authorizer) 59 invalidTag := names.NewUserTag("user-bob@foo") 60 61 fn, err := authFunc() 62 c.Assert(err, gc.IsNil) 63 c.Assert(fn(invalidTag), jc.IsFalse) 64 } 65 66 func (s *AuthFuncSuite) TestAuthFuncForMachineAgentInvalidAuthTag(c *gc.C) { 67 invalidTag := names.NewUserTag("user-bob@foo") 68 finish := s.setup(c, invalidTag) 69 defer finish() 70 71 authFunc := common.AuthFuncForMachineAgent(s.authorizer) 72 machineTag := names.NewMachineTag("machine-test/0") 73 74 fn, err := authFunc() 75 c.Assert(err, gc.IsNil) 76 c.Assert(fn(machineTag), jc.IsFalse) 77 }