Skip to content

Commit ac710f5

Browse files
committed
feat(workflow-cli): add cmd for enable and disable users
1 parent 5f1e23f commit ac710f5

7 files changed

Lines changed: 153 additions & 1 deletion

File tree

cmd/cmd.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ type Commander interface {
8989
TLSAutoEnable(string) error
9090
TLSAutoDisable(string) error
9191
UsersList(results int) error
92+
UsersEnable(string) error
93+
UsersDisable(string) error
9294
WhitelistAdd(string, string) error
9395
WhitelistList(string) error
9496
WhitelistRemove(string, string) error

cmd/users.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,38 @@ func (d *DryccCmd) UsersList(results int) error {
3232
}
3333
return nil
3434
}
35+
36+
// UsersEnable enable user with the controller.
37+
func (d *DryccCmd) UsersEnable(username string) error {
38+
s, err := settings.Load(d.ConfigFile)
39+
40+
if err != nil {
41+
return err
42+
}
43+
d.Printf("Enabling user %s... ", username)
44+
err = users.Enable(s.Client, username)
45+
if d.checkAPICompatibility(s.Client, err) != nil {
46+
return err
47+
}
48+
49+
d.Println("done")
50+
return nil
51+
}
52+
53+
// UsersDisable disable user with the controller.
54+
func (d *DryccCmd) UsersDisable(username string) error {
55+
s, err := settings.Load(d.ConfigFile)
56+
57+
if err != nil {
58+
return err
59+
}
60+
61+
d.Printf("Disabling user %s... ", username)
62+
err = users.Disable(s.Client, username)
63+
if d.checkAPICompatibility(s.Client, err) != nil {
64+
return err
65+
}
66+
67+
d.Println("done")
68+
return nil
69+
}

cmd/users_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,46 @@ func TestUsersListLimit(t *testing.T) {
110110
test
111111
`, "output")
112112
}
113+
114+
func TestUsersEnable(t *testing.T) {
115+
t.Parallel()
116+
cf, server, err := testutil.NewTestServerAndClient()
117+
if err != nil {
118+
t.Fatal(err)
119+
}
120+
defer server.Close()
121+
var b bytes.Buffer
122+
cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
123+
124+
server.Mux.HandleFunc("/v2/users/test/enable/", func(w http.ResponseWriter, r *http.Request) {
125+
testutil.SetHeaders(w)
126+
fmt.Fprintf(w, ``)
127+
})
128+
129+
err = cmdr.UsersEnable("test")
130+
assert.NoErr(t, err)
131+
132+
assert.Equal(t, b.String(), `Enabling user test... done
133+
`, "output")
134+
}
135+
136+
func TestUsersDisable(t *testing.T) {
137+
t.Parallel()
138+
cf, server, err := testutil.NewTestServerAndClient()
139+
if err != nil {
140+
t.Fatal(err)
141+
}
142+
defer server.Close()
143+
var b bytes.Buffer
144+
cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
145+
146+
server.Mux.HandleFunc("/v2/users/test/disable/", func(w http.ResponseWriter, r *http.Request) {
147+
testutil.SetHeaders(w)
148+
fmt.Fprintf(w, ``)
149+
})
150+
151+
err = cmdr.UsersDisable("test")
152+
assert.NoErr(t, err)
153+
assert.Equal(t, b.String(), `Disabling user test... done
154+
`, "output")
155+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.13
55
require (
66
github.com/arschles/assert v1.0.1-0.20191213221312-71f210f9375a
77
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815
8-
github.com/drycc/controller-sdk-go v0.0.0-20200914062048-dcf027e6dd1a
8+
github.com/drycc/controller-sdk-go v0.0.0-20201013084049-82230b1dc54f
99
github.com/drycc/pkg v0.0.0-20200811173146-1f2b2781a852
1010
github.com/olekukonko/tablewriter v0.0.4
1111
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ github.com/drycc/controller-sdk-go v0.0.0-20200910051502-0b84631ba397 h1:MbpNwDO
4040
github.com/drycc/controller-sdk-go v0.0.0-20200910051502-0b84631ba397/go.mod h1:mF8/kZ/E4oDHCtfUVS790Frm8oVzZkoCGCKYT2eWQro=
4141
github.com/drycc/controller-sdk-go v0.0.0-20200914062048-dcf027e6dd1a h1:sQEQ8KUgm3X1y8XVsGXqeAkeowMGdOtu+PwBgd4V2eU=
4242
github.com/drycc/controller-sdk-go v0.0.0-20200914062048-dcf027e6dd1a/go.mod h1:mF8/kZ/E4oDHCtfUVS790Frm8oVzZkoCGCKYT2eWQro=
43+
github.com/drycc/controller-sdk-go v0.0.0-20201013084049-82230b1dc54f h1:Lwm3ijm8W+STLHOOmumLSQRvCkUTuya+XkGM+VNFfGA=
44+
github.com/drycc/controller-sdk-go v0.0.0-20201013084049-82230b1dc54f/go.mod h1:mF8/kZ/E4oDHCtfUVS790Frm8oVzZkoCGCKYT2eWQro=
4345
github.com/drycc/pkg v0.0.0-20190129033019-bcdffff0fcb3 h1:QRAbL97/hJecXQzaSONMCiwt1JjBKAAMKK0qJW5sgIM=
4446
github.com/drycc/pkg v0.0.0-20190129033019-bcdffff0fcb3/go.mod h1:zNgTT6kuGZOKMIdSrjskIw5fctdbbszqiTPEt3ffxHw=
4547
github.com/drycc/pkg v0.0.0-20200811173146-1f2b2781a852 h1:OsWH7jrv2i32rkvHFuj3yVpGMR+A6heRge9tm01XR/U=

parser/users.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ Use 'drycc help [command]' to learn more.
1818
switch argv[0] {
1919
case "users:list":
2020
return usersList(argv, cmdr)
21+
case "users:enable":
22+
return usersEnable(argv, cmdr)
23+
case "users:disable":
24+
return usersDisable(argv, cmdr)
2125
default:
2226
if printHelp(argv, usage) {
2327
return nil
@@ -58,3 +62,53 @@ Options:
5862

5963
return cmdr.UsersList(results)
6064
}
65+
66+
func usersEnable(argv []string, cmdr cmd.Commander) error {
67+
usage := `
68+
Enable a user when his status is disabled.
69+
Requires admin privileges.
70+
71+
Usage: drycc users:enable <username>
72+
73+
Arguments:
74+
<username>
75+
the username you want to enable.
76+
`
77+
78+
args, err := docopt.Parse(usage, argv, true, "", false, true)
79+
if err != nil {
80+
return err
81+
}
82+
username := safeGetValue(args, "<username>")
83+
84+
if err != nil {
85+
return err
86+
}
87+
88+
return cmdr.UsersEnable(username)
89+
}
90+
91+
func usersDisable(argv []string, cmdr cmd.Commander) error {
92+
usage := `
93+
Disable a user when his status is enabled.
94+
Requires admin privileges.
95+
96+
Usage: drycc users:disable <username>
97+
98+
Arguments:
99+
<username>
100+
the username you want to disable.
101+
`
102+
103+
args, err := docopt.Parse(usage, argv, true, "", false, true)
104+
if err != nil {
105+
return err
106+
}
107+
username := safeGetValue(args, "<username>")
108+
109+
if err != nil {
110+
return err
111+
}
112+
113+
return cmdr.UsersDisable(username)
114+
}

parser/users_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ func (d FakeDryccCmd) UsersList(results int) error {
1616
return errors.New("users:list")
1717
}
1818

19+
func (d FakeDryccCmd) UsersEnable(string) error {
20+
return errors.New("users:enable")
21+
}
22+
23+
func (d FakeDryccCmd) UsersDisable(string) error {
24+
return errors.New("users:disable")
25+
}
26+
1927
func TestUsers(t *testing.T) {
2028
t.Parallel()
2129

@@ -41,6 +49,14 @@ func TestUsers(t *testing.T) {
4149
args: []string{"users"},
4250
expected: "users:list",
4351
},
52+
{
53+
args: []string{"users:enable", "test"},
54+
expected: "",
55+
},
56+
{
57+
args: []string{"users:disable", "test"},
58+
expected: "",
59+
},
4460
}
4561

4662
// For each case, check that calling the route with the arguments

0 commit comments

Comments
 (0)