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  }