~juju-qa/ubuntu/xenial/juju/2.0-rc2

« 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-09-30 14:39:30 UTC
  • mfrom: (1.8.1)
  • Revision ID: nicholas.skaggs@canonical.com-20160930143930-vwwhrefh6ftckccy
import upstream

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
 
}