github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/controlleruser_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package state_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/names/v5" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/core/permission" 13 "github.com/juju/juju/testing/factory" 14 ) 15 16 type ControllerUserSuite struct { 17 ConnSuite 18 } 19 20 var _ = gc.Suite(&ControllerUserSuite{}) 21 22 func (s *ControllerUserSuite) TestDefaultAccessControllerUser(c *gc.C) { 23 user := s.Factory.MakeUser(c, 24 &factory.UserParams{ 25 Name: "validusername", 26 }) 27 _ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"}) 28 t := user.Tag() 29 userTag := t.(names.UserTag) 30 ctag := names.NewControllerTag(s.State.ControllerUUID()) 31 controllerUser, err := s.State.UserAccess(userTag, ctag) 32 c.Assert(err, jc.ErrorIsNil) 33 c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess) 34 } 35 36 func (s *ControllerUserSuite) TestSetAccessControllerUser(c *gc.C) { 37 user := s.Factory.MakeUser(c, 38 &factory.UserParams{ 39 Name: "validusername", 40 }) 41 _ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"}) 42 t := user.Tag() 43 userTag := t.(names.UserTag) 44 ctag := names.NewControllerTag(s.State.ControllerUUID()) 45 controllerUser, err := s.State.UserAccess(userTag, ctag) 46 c.Assert(err, jc.ErrorIsNil) 47 c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess) 48 49 s.State.SetUserAccess(userTag, ctag, permission.SuperuserAccess) 50 51 controllerUser, err = s.State.UserAccess(user.UserTag(), ctag) 52 c.Assert(err, jc.ErrorIsNil) 53 c.Assert(controllerUser.Access, gc.Equals, permission.SuperuserAccess) 54 } 55 56 func (s *ControllerUserSuite) TestRemoveControllerUser(c *gc.C) { 57 user := s.Factory.MakeUser(c, &factory.UserParams{Name: "validUsername"}) 58 ctag := names.NewControllerTag(s.State.ControllerUUID()) 59 _, err := s.State.UserAccess(user.UserTag(), ctag) 60 c.Assert(err, jc.ErrorIsNil) 61 62 err = s.State.RemoveUserAccess(user.UserTag(), ctag) 63 c.Assert(err, jc.ErrorIsNil) 64 65 _, err = s.State.UserAccess(user.UserTag(), ctag) 66 c.Assert(err, jc.Satisfies, errors.IsNotFound) 67 } 68 69 func (s *ControllerUserSuite) TestRemoveControllerUserSucceeds(c *gc.C) { 70 user := s.Factory.MakeUser(c, &factory.UserParams{}) 71 ctag := names.NewControllerTag(s.State.ControllerUUID()) 72 err := s.State.RemoveUserAccess(user.UserTag(), ctag) 73 c.Assert(err, jc.ErrorIsNil) 74 } 75 76 func (s *ControllerUserSuite) TestRemoveControllerUserFails(c *gc.C) { 77 user := s.Factory.MakeUser(c, &factory.UserParams{}) 78 ctag := names.NewControllerTag(s.State.ControllerUUID()) 79 err := s.State.RemoveUserAccess(user.UserTag(), ctag) 80 c.Assert(err, jc.ErrorIsNil) 81 err = s.State.RemoveUserAccess(user.UserTag(), ctag) 82 c.Assert(err, jc.Satisfies, errors.IsNotFound) 83 }