github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 "gopkg.in/juju/names.v2" 11 12 "github.com/juju/juju/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 type accessAwareUser interface { 23 Access() permission.Access 24 } 25 26 func (s *ControllerUserSuite) TestDefaultAccessControllerUser(c *gc.C) { 27 user := s.Factory.MakeUser(c, 28 &factory.UserParams{ 29 Name: "validusername", 30 }) 31 _ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"}) 32 t := user.Tag() 33 userTag := t.(names.UserTag) 34 ctag := names.NewControllerTag(s.State.ControllerUUID()) 35 controllerUser, err := s.State.UserAccess(userTag, ctag) 36 c.Assert(err, jc.ErrorIsNil) 37 c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess) 38 } 39 40 func (s *ControllerUserSuite) TestSetAccessControllerUser(c *gc.C) { 41 user := s.Factory.MakeUser(c, 42 &factory.UserParams{ 43 Name: "validusername", 44 }) 45 _ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"}) 46 t := user.Tag() 47 userTag := t.(names.UserTag) 48 ctag := names.NewControllerTag(s.State.ControllerUUID()) 49 controllerUser, err := s.State.UserAccess(userTag, ctag) 50 c.Assert(err, jc.ErrorIsNil) 51 c.Assert(controllerUser.Access, gc.Equals, permission.LoginAccess) 52 53 s.State.SetUserAccess(userTag, ctag, permission.AddModelAccess) 54 55 controllerUser, err = s.State.UserAccess(user.UserTag(), ctag) 56 c.Assert(controllerUser.Access, gc.Equals, permission.AddModelAccess) 57 } 58 59 func (s *ControllerUserSuite) TestRemoveControllerUser(c *gc.C) { 60 user := s.Factory.MakeUser(c, &factory.UserParams{Name: "validUsername"}) 61 ctag := names.NewControllerTag(s.State.ControllerUUID()) 62 _, err := s.State.UserAccess(user.UserTag(), ctag) 63 c.Assert(err, jc.ErrorIsNil) 64 65 err = s.State.RemoveUserAccess(user.UserTag(), ctag) 66 c.Assert(err, jc.ErrorIsNil) 67 68 _, err = s.State.UserAccess(user.UserTag(), ctag) 69 c.Assert(err, jc.Satisfies, errors.IsNotFound) 70 } 71 72 func (s *ControllerUserSuite) TestRemoveControllerUserSucceeds(c *gc.C) { 73 user := s.Factory.MakeUser(c, &factory.UserParams{}) 74 ctag := names.NewControllerTag(s.State.ControllerUUID()) 75 err := s.State.RemoveUserAccess(user.UserTag(), ctag) 76 c.Assert(err, jc.ErrorIsNil) 77 } 78 79 func (s *ControllerUserSuite) TestRemoveControllerUserFails(c *gc.C) { 80 user := s.Factory.MakeUser(c, &factory.UserParams{}) 81 ctag := names.NewControllerTag(s.State.ControllerUUID()) 82 err := s.State.RemoveUserAccess(user.UserTag(), ctag) 83 c.Assert(err, jc.ErrorIsNil) 84 err = s.State.RemoveUserAccess(user.UserTag(), ctag) 85 c.Assert(err, jc.Satisfies, errors.IsNotFound) 86 }