Skip to content

Commit 045260d

Browse files
committed
Add dev mode test with email/pass from env
1 parent e00c48c commit 045260d

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

cli/server_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,52 @@ func TestServer(t *testing.T) {
118118
cancelFunc()
119119
<-done
120120
})
121+
// Duplicated test from "Development" above to test setting email/password via env.
122+
t.Run("Development with email and password from env", func(t *testing.T) {
123+
// Cannot run parallell due to os.Setenv.
124+
ctx, cancelFunc := context.WithCancel(context.Background())
125+
defer cancelFunc()
126+
127+
wantEmail := "myadmin@coder.com"
128+
wantPassword := "testpass42"
129+
os.Setenv("CODER_DEV_ADMIN_EMAIL", wantEmail)
130+
defer os.Unsetenv("CODER_DEV_ADMIN_EMAIL")
131+
os.Setenv("CODER_DEV_ADMIN_PASSWORD", wantPassword)
132+
defer os.Unsetenv("CODER_DEV_ADMIN_PASSWORD")
133+
134+
root, cfg := clitest.New(t, "server", "--dev", "--skip-tunnel", "--address", ":0")
135+
var buf strings.Builder
136+
root.SetOutput(&buf)
137+
done := make(chan struct{})
138+
go func() {
139+
defer close(done)
140+
141+
err := root.ExecuteContext(ctx)
142+
require.ErrorIs(t, err, context.Canceled)
143+
144+
// Verify that credentials were output to the terminal.
145+
assert.Contains(t, buf.String(), fmt.Sprintf("email: %s", wantEmail), "expected output %q; got no match", wantEmail)
146+
assert.Contains(t, buf.String(), fmt.Sprintf("password: %s", wantPassword), "expected output %q; got no match", wantPassword)
147+
}()
148+
var token string
149+
require.Eventually(t, func() bool {
150+
var err error
151+
token, err = cfg.Session().Read()
152+
return err == nil
153+
}, 15*time.Second, 25*time.Millisecond)
154+
// Verify that authentication was properly set in dev-mode.
155+
accessURL, err := cfg.URL().Read()
156+
require.NoError(t, err)
157+
parsed, err := url.Parse(accessURL)
158+
require.NoError(t, err)
159+
client := codersdk.New(parsed)
160+
client.SessionToken = token
161+
_, err = client.User(ctx, codersdk.Me)
162+
require.NoError(t, err)
163+
164+
cancelFunc()
165+
<-done
166+
})
121167
t.Run("TLSBadVersion", func(t *testing.T) {
122168
t.Parallel()
123169
ctx, cancelFunc := context.WithCancel(context.Background())

0 commit comments

Comments
 (0)