1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/errors"
8
jc "github.com/juju/testing/checkers"
10
"gopkg.in/juju/names.v2"
12
"github.com/juju/juju/core/description"
13
"github.com/juju/juju/testing/factory"
16
type ControllerUserSuite struct {
20
var _ = gc.Suite(&ControllerUserSuite{})
22
type accessAwareUser interface {
23
Access() description.Access
26
func (s *ControllerUserSuite) TestDefaultAccessControllerUser(c *gc.C) {
27
user := s.Factory.MakeUser(c,
29
Name: "validusername",
31
_ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"})
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, description.LoginAccess)
40
func (s *ControllerUserSuite) TestSetAccessControllerUser(c *gc.C) {
41
user := s.Factory.MakeUser(c,
43
Name: "validusername",
45
_ = s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"})
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, description.LoginAccess)
53
s.State.SetUserAccess(userTag, ctag, description.AddModelAccess)
55
controllerUser, err = s.State.UserAccess(user.UserTag(), ctag)
56
c.Assert(controllerUser.Access, gc.Equals, description.AddModelAccess)
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)
65
err = s.State.RemoveUserAccess(user.UserTag(), ctag)
66
c.Assert(err, jc.ErrorIsNil)
68
_, err = s.State.UserAccess(user.UserTag(), ctag)
69
c.Assert(err, jc.Satisfies, errors.IsNotFound)
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)
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)