1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for info.
9
jc "github.com/juju/testing/checkers"
10
gc "gopkg.in/check.v1"
12
"github.com/juju/juju/apiserver/params"
13
"github.com/juju/juju/cmd/juju/model"
14
"github.com/juju/juju/jujuclient"
15
"github.com/juju/juju/jujuclient/jujuclienttesting"
16
"github.com/juju/juju/testing"
19
type UsersCommandSuite struct {
20
testing.FakeJujuXDGDataHomeSuite
21
fake *fakeModelUsersClient
22
store *jujuclienttesting.MemStore
25
var _ = gc.Suite(&UsersCommandSuite{})
27
type fakeModelUsersClient struct {
28
users []params.ModelUserInfo
31
func (f *fakeModelUsersClient) Close() error {
35
func (f *fakeModelUsersClient) ModelUserInfo() ([]params.ModelUserInfo, error) {
39
func (s *UsersCommandSuite) SetUpTest(c *gc.C) {
40
s.FakeJujuXDGDataHomeSuite.SetUpTest(c)
41
last1 := time.Date(2015, 3, 20, 0, 0, 0, 0, time.UTC)
42
last2 := time.Date(2015, 3, 1, 0, 0, 0, 0, time.UTC)
44
userlist := []params.ModelUserInfo{
46
UserName: "admin@local",
47
LastConnection: &last1,
50
UserName: "bob@local",
52
LastConnection: &last2,
55
UserName: "charlie@ubuntu.com",
56
DisplayName: "Charlie",
61
s.fake = &fakeModelUsersClient{users: userlist}
63
s.store = jujuclienttesting.NewMemStore()
64
s.store.CurrentControllerName = "testing"
65
s.store.Controllers["testing"] = jujuclient.ControllerDetails{}
66
s.store.Accounts["testing"] = jujuclient.AccountDetails{
71
func (s *UsersCommandSuite) TestModelUsers(c *gc.C) {
72
context, err := testing.RunCommand(c, model.NewUsersCommandForTest(s.fake, s.store), "-m", "admin")
73
c.Assert(err, jc.ErrorIsNil)
74
c.Assert(testing.Stdout(context), gc.Equals, ""+
75
"NAME ACCESS LAST CONNECTION\n"+
76
"admin@local write 2015-03-20\n"+
77
"bob@local (Bob) read 2015-03-01\n"+
78
"charlie@ubuntu.com (Charlie) read never connected\n"+
82
func (s *UsersCommandSuite) TestModelUsersFormatJson(c *gc.C) {
83
context, err := testing.RunCommand(c, model.NewUsersCommandForTest(s.fake, s.store), "-m", "admin", "--format", "json")
84
c.Assert(err, jc.ErrorIsNil)
85
c.Assert(testing.Stdout(context), gc.Equals, "{"+
86
`"admin@local":{"access":"write","last-connection":"2015-03-20"},`+
87
`"bob@local":{"display-name":"Bob","access":"read","last-connection":"2015-03-01"},`+
88
`"charlie@ubuntu.com":{"display-name":"Charlie","access":"read","last-connection":"never connected"}`+
92
func (s *UsersCommandSuite) TestUserInfoFormatYaml(c *gc.C) {
93
context, err := testing.RunCommand(c, model.NewUsersCommandForTest(s.fake, s.store), "-m", "admin", "--format", "yaml")
94
c.Assert(err, jc.ErrorIsNil)
95
c.Assert(testing.Stdout(context), gc.Equals, ""+
98
" last-connection: 2015-03-20\n"+
100
" display-name: Bob\n"+
102
" last-connection: 2015-03-01\n"+
103
"charlie@ubuntu.com:\n"+
104
" display-name: Charlie\n"+
106
" last-connection: never connected\n")
109
func (s *UsersCommandSuite) TestUnrecognizedArg(c *gc.C) {
110
_, err := testing.RunCommand(c, model.NewUsersCommandForTest(s.fake, s.store), "-m", "admin", "whoops")
111
c.Assert(err, gc.ErrorMatches, `unrecognized args: \["whoops"\]`)