Skip to content

Commit c98ecdd

Browse files
authored
tests(cmd): tests for auth register, login, logout, passwd, cancel, whoami, and regenerate. (#242)
1 parent eec3b78 commit c98ecdd

1 file changed

Lines changed: 214 additions & 0 deletions

File tree

cmd/auth_test.go

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
package cmd
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"net/http"
7+
"testing"
8+
9+
"github.com/arschles/assert"
10+
"github.com/deis/workflow-cli/pkg/testutil"
11+
)
12+
13+
func TestRegister(t *testing.T) {
14+
cf, server, err := testutil.NewTestServerAndClient()
15+
if err != nil {
16+
t.Fatal(err)
17+
}
18+
defer server.Close()
19+
var b bytes.Buffer
20+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
21+
22+
server.Mux.HandleFunc("/v2/", func(w http.ResponseWriter, r *http.Request) {
23+
testutil.SetHeaders(w)
24+
w.WriteHeader(http.StatusUnauthorized)
25+
fmt.Fprintf(w, `{}`)
26+
})
27+
28+
username := "test-user"
29+
password := "test-password"
30+
email := "test-email@example.com"
31+
32+
server.Mux.HandleFunc("/v2/auth/register/", func(w http.ResponseWriter, r *http.Request) {
33+
testutil.SetHeaders(w)
34+
fmt.Fprintf(w, `{
35+
"email": "`+email+`",
36+
"username": "`+username+`",
37+
"first_name": "",
38+
"last_name": "",
39+
"is_superuser": false,
40+
"is_staff": false,
41+
"groups": [],
42+
"user_permissions": [],
43+
"last_login": "2016-09-13T18:55:54Z",
44+
"date_joined": "2016-09-13T18:55:54Z",
45+
"is_active": true
46+
}`)
47+
})
48+
49+
server.Mux.HandleFunc("/v2/auth/login/", func(w http.ResponseWriter, r *http.Request) {
50+
testutil.SetHeaders(w)
51+
fmt.Fprintf(w, `{}`)
52+
})
53+
54+
err = cmdr.Register(server.Server.URL, username, password, email, true)
55+
assert.NoErr(t, err)
56+
expected := fmt.Sprintf("Registered %s\nLogged in as %s\nConfiguration file written to %s\n", username, username, cf)
57+
58+
assert.Equal(t, b.String(), expected, "output")
59+
}
60+
61+
func TestLogin(t *testing.T) {
62+
cf, server, err := testutil.NewTestServerAndClient()
63+
if err != nil {
64+
t.Fatal(err)
65+
}
66+
defer server.Close()
67+
var b bytes.Buffer
68+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
69+
70+
server.Mux.HandleFunc("/v2/", func(w http.ResponseWriter, r *http.Request) {
71+
testutil.SetHeaders(w)
72+
w.WriteHeader(http.StatusUnauthorized)
73+
fmt.Fprintf(w, `{}`)
74+
})
75+
76+
server.Mux.HandleFunc("/v2/auth/login/", func(w http.ResponseWriter, r *http.Request) {
77+
testutil.SetHeaders(w)
78+
fmt.Fprintf(w, `{}`)
79+
})
80+
81+
username := "test-user"
82+
err = cmdr.Login(server.Server.URL, username, "test-pass", true)
83+
assert.NoErr(t, err)
84+
expected := fmt.Sprintf("Logged in as %s\nConfiguration file written to %s\n", username, cf)
85+
assert.Equal(t, b.String(), expected, "output")
86+
}
87+
88+
func TestLogout(t *testing.T) {
89+
cf, server, err := testutil.NewTestServerAndClient()
90+
if err != nil {
91+
t.Fatal(err)
92+
}
93+
defer server.Close()
94+
var b bytes.Buffer
95+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
96+
97+
err = cmdr.Logout()
98+
assert.NoErr(t, err)
99+
assert.Equal(t, b.String(), "Logged out\n", "output")
100+
}
101+
102+
func TestPasswd(t *testing.T) {
103+
t.Parallel()
104+
105+
cf, server, err := testutil.NewTestServerAndClient()
106+
if err != nil {
107+
t.Fatal(err)
108+
}
109+
defer server.Close()
110+
var b bytes.Buffer
111+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
112+
113+
server.Mux.HandleFunc("/v2/auth/passwd/", func(w http.ResponseWriter, r *http.Request) {
114+
testutil.SetHeaders(w)
115+
fmt.Fprintf(w, `{}`)
116+
})
117+
118+
// Change own password.
119+
err = cmdr.Passwd("", "old-pass", "new-pass")
120+
assert.NoErr(t, err)
121+
assert.Equal(t, b.String(), "Password change succeeded.\n", "output")
122+
b.Reset()
123+
124+
// Change another user's password.
125+
err = cmdr.Passwd("another-user", "old-pass", "new-pass")
126+
assert.NoErr(t, err)
127+
assert.Equal(t, b.String(), "Password change succeeded.\n", "output")
128+
}
129+
130+
func TestCancel(t *testing.T) {
131+
cf, server, err := testutil.NewTestServerAndClient()
132+
if err != nil {
133+
t.Fatal(err)
134+
}
135+
defer server.Close()
136+
var b bytes.Buffer
137+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
138+
139+
server.Mux.HandleFunc("/v2/", func(w http.ResponseWriter, r *http.Request) {
140+
testutil.SetHeaders(w)
141+
w.WriteHeader(http.StatusUnauthorized)
142+
fmt.Fprintf(w, `{}`)
143+
})
144+
145+
server.Mux.HandleFunc("/v2/auth/cancel/", func(w http.ResponseWriter, r *http.Request) {
146+
testutil.SetHeaders(w)
147+
fmt.Fprintf(w, `{}`)
148+
})
149+
150+
server.Mux.HandleFunc("/v2/auth/login/", func(w http.ResponseWriter, r *http.Request) {
151+
testutil.SetHeaders(w)
152+
fmt.Fprintf(w, `{}`)
153+
})
154+
155+
username := "test-user"
156+
err = cmdr.Cancel(username, "", true)
157+
assert.NoErr(t, err)
158+
assert.Equal(t, b.String(), "Account cancelled\n", "output")
159+
}
160+
161+
func TestWhoami(t *testing.T) {
162+
t.Parallel()
163+
164+
cf, server, err := testutil.NewTestServerAndClient()
165+
if err != nil {
166+
t.Fatal(err)
167+
}
168+
defer server.Close()
169+
var b bytes.Buffer
170+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
171+
172+
server.Mux.HandleFunc("/v2/auth/whoami/", func(w http.ResponseWriter, r *http.Request) {
173+
testutil.SetHeaders(w)
174+
fmt.Fprintf(w, `{
175+
"email": "test@example.com",
176+
"username": "test",
177+
"first_name": "",
178+
"last_name": "",
179+
"is_superuser": true,
180+
"is_staff": true,
181+
"groups": [],
182+
"user_permissions": [],
183+
"last_login": "2016-09-12T22:15:26Z",
184+
"date_joined": "2016-09-12T22:15:26Z",
185+
"is_active": true
186+
}`)
187+
})
188+
189+
err = cmdr.Whoami(false)
190+
assert.NoErr(t, err)
191+
expected := fmt.Sprintf("You are test at %s\n", server.Server.URL)
192+
assert.Equal(t, b.String(), expected, "output")
193+
}
194+
195+
func TestRegenerate(t *testing.T) {
196+
t.Parallel()
197+
198+
cf, server, err := testutil.NewTestServerAndClient()
199+
if err != nil {
200+
t.Fatal(err)
201+
}
202+
defer server.Close()
203+
var b bytes.Buffer
204+
cmdr := DeisCmd{WOut: &b, ConfigFile: cf}
205+
206+
server.Mux.HandleFunc("/v2/auth/tokens/", func(w http.ResponseWriter, r *http.Request) {
207+
testutil.SetHeaders(w)
208+
fmt.Fprintf(w, `{}`)
209+
})
210+
211+
err = cmdr.Regenerate("test", false)
212+
assert.NoErr(t, err)
213+
assert.Equal(t, b.String(), "Token Regenerated\n", "output")
214+
}

0 commit comments

Comments
 (0)