MCPcopy Index your code
hub / github.com/coder/coder / TestTokenCRUD

Function TestTokenCRUD

coderd/apikey_test.go:26–70  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

24)
25
26func TestTokenCRUD(t *testing.T) {
27 t.Parallel()
28
29 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
30 defer cancel()
31 auditor := audit.NewMock()
32 numLogs := len(auditor.AuditLogs())
33 client := coderdtest.New(t, &coderdtest.Options{Auditor: auditor})
34 _ = coderdtest.CreateFirstUser(t, client)
35 numLogs++ // add an audit log for user creation
36
37 keys, err := client.Tokens(ctx, codersdk.Me, codersdk.TokensFilter{})
38 require.NoError(t, err)
39 require.Empty(t, keys)
40
41 res, err := client.CreateToken(ctx, codersdk.Me, codersdk.CreateTokenRequest{})
42 require.NoError(t, err)
43 require.Greater(t, len(res.Key), 2)
44 numLogs++ // add an audit log for token creation
45
46 keys, err = client.Tokens(ctx, codersdk.Me, codersdk.TokensFilter{})
47 require.NoError(t, err)
48 require.EqualValues(t, len(keys), 1)
49 require.Contains(t, res.Key, keys[0].ID)
50 // expires_at should default to 30 days
51 require.Greater(t, keys[0].ExpiresAt, dbtime.Now().Add(time.Hour*24*6))
52 require.Less(t, keys[0].ExpiresAt, dbtime.Now().Add(time.Hour*24*8))
53 require.Equal(t, codersdk.APIKeyScopeAll, keys[0].Scope)
54 require.Len(t, keys[0].AllowList, 1)
55 require.Equal(t, "*:*", keys[0].AllowList[0].String())
56
57 // no update
58
59 err = client.DeleteAPIKey(ctx, codersdk.Me, keys[0].ID)
60 require.NoError(t, err)
61 numLogs++ // add an audit log for token deletion
62 keys, err = client.Tokens(ctx, codersdk.Me, codersdk.TokensFilter{})
63 require.NoError(t, err)
64 require.Empty(t, keys)
65
66 // ensure audit log count is correct
67 require.Len(t, auditor.AuditLogs(), numLogs)
68 require.Equal(t, database.AuditActionCreate, auditor.AuditLogs()[numLogs-2].Action)
69 require.Equal(t, database.AuditActionDelete, auditor.AuditLogs()[numLogs-1].Action)
70}
71
72func TestTokensFilterExpired(t *testing.T) {
73 t.Parallel()

Callers

nothing calls this directly

Calls 15

NewMockFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
NowFunction · 0.92
TokensMethod · 0.80
CreateTokenMethod · 0.80
LessMethod · 0.80
DeleteAPIKeyMethod · 0.80
AddMethod · 0.65
AuditLogsMethod · 0.45
EmptyMethod · 0.45
ContainsMethod · 0.45

Tested by

no test coverage detected