~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/cmd/juju/model/users_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2015 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for info.
 
3
 
 
4
package model_test
 
5
 
 
6
import (
 
7
        "time"
 
8
 
 
9
        jc "github.com/juju/testing/checkers"
 
10
        gc "gopkg.in/check.v1"
 
11
 
 
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"
 
17
)
 
18
 
 
19
type UsersCommandSuite struct {
 
20
        testing.FakeJujuXDGDataHomeSuite
 
21
        fake  *fakeModelUsersClient
 
22
        store *jujuclienttesting.MemStore
 
23
}
 
24
 
 
25
var _ = gc.Suite(&UsersCommandSuite{})
 
26
 
 
27
type fakeModelUsersClient struct {
 
28
        users []params.ModelUserInfo
 
29
}
 
30
 
 
31
func (f *fakeModelUsersClient) Close() error {
 
32
        return nil
 
33
}
 
34
 
 
35
func (f *fakeModelUsersClient) ModelUserInfo() ([]params.ModelUserInfo, error) {
 
36
        return f.users, nil
 
37
}
 
38
 
 
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)
 
43
 
 
44
        userlist := []params.ModelUserInfo{
 
45
                {
 
46
                        UserName:       "admin@local",
 
47
                        LastConnection: &last1,
 
48
                        Access:         "write",
 
49
                }, {
 
50
                        UserName:       "bob@local",
 
51
                        DisplayName:    "Bob",
 
52
                        LastConnection: &last2,
 
53
                        Access:         "read",
 
54
                }, {
 
55
                        UserName:    "charlie@ubuntu.com",
 
56
                        DisplayName: "Charlie",
 
57
                        Access:      "read",
 
58
                },
 
59
        }
 
60
 
 
61
        s.fake = &fakeModelUsersClient{users: userlist}
 
62
 
 
63
        s.store = jujuclienttesting.NewMemStore()
 
64
        s.store.CurrentControllerName = "testing"
 
65
        s.store.Controllers["testing"] = jujuclient.ControllerDetails{}
 
66
        s.store.Accounts["testing"] = jujuclient.AccountDetails{
 
67
                User: "admin@local",
 
68
        }
 
69
}
 
70
 
 
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"+
 
79
                "\n")
 
80
}
 
81
 
 
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"}`+
 
89
                "}\n")
 
90
}
 
91
 
 
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, ""+
 
96
                "admin@local:\n"+
 
97
                "  access: write\n"+
 
98
                "  last-connection: 2015-03-20\n"+
 
99
                "bob@local:\n"+
 
100
                "  display-name: Bob\n"+
 
101
                "  access: read\n"+
 
102
                "  last-connection: 2015-03-01\n"+
 
103
                "charlie@ubuntu.com:\n"+
 
104
                "  display-name: Charlie\n"+
 
105
                "  access: read\n"+
 
106
                "  last-connection: never connected\n")
 
107
}
 
108
 
 
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"\]`)
 
112
}