github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/state/user_internal_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package state
     5  
     6  import (
     7  	"strings"
     8  
     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"
    14  )
    15  
    16  type internalUserSuite struct {
    17  	internalStateSuite
    18  }
    19  
    20  var _ = gc.Suite(&internalUserSuite{})
    21  
    22  func (s *internalUserSuite) TestCreateInitialUserOps(c *gc.C) {
    23  	tag := names.NewUserTag("AdMiN")
    24  	ops := createInitialUserOps(s.state.ControllerUUID(), tag, "abc", "salt", testing.ZeroTime())
    25  	c.Assert(ops, gc.HasLen, 3)
    26  	op := ops[0]
    27  	c.Assert(op.Id, gc.Equals, "admin")
    28  
    29  	doc := op.Insert.(*userDoc)
    30  	c.Assert(doc.DocID, gc.Equals, "admin")
    31  	c.Assert(doc.Name, gc.Equals, "AdMiN")
    32  	c.Assert(doc.PasswordSalt, gc.Equals, "salt")
    33  
    34  	// controller user permissions
    35  	op = ops[1]
    36  	permdoc := op.Insert.(*permissionDoc)
    37  	c.Assert(permdoc.Access, gc.Equals, string(permission.SuperuserAccess))
    38  	c.Assert(permdoc.ID, gc.Equals, permissionID(controllerKey(s.state.ControllerUUID()), userGlobalKey(strings.ToLower(tag.Canonical()))))
    39  	c.Assert(permdoc.SubjectGlobalKey, gc.Equals, userGlobalKey(strings.ToLower(tag.Canonical())))
    40  	c.Assert(permdoc.ObjectGlobalKey, gc.Equals, controllerKey(s.state.ControllerUUID()))
    41  
    42  	// controller user
    43  	op = ops[2]
    44  	cudoc := op.Insert.(*userAccessDoc)
    45  	c.Assert(cudoc.ID, gc.Equals, "admin@local")
    46  	c.Assert(cudoc.ObjectUUID, gc.Equals, s.state.ControllerUUID())
    47  	c.Assert(cudoc.UserName, gc.Equals, "AdMiN@local")
    48  	c.Assert(cudoc.DisplayName, gc.Equals, "AdMiN")
    49  	c.Assert(cudoc.CreatedBy, gc.Equals, "AdMiN@local")
    50  }
    51  
    52  func (s *internalUserSuite) TestCaseNameVsId(c *gc.C) {
    53  	user, err := s.state.AddUser(
    54  		"boB", "ignored", "ignored", "ignored")
    55  	c.Assert(err, gc.IsNil)
    56  	c.Assert(user.Name(), gc.Equals, "boB")
    57  	c.Assert(user.doc.DocID, gc.Equals, "bob")
    58  }