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

Function TestServerCreateAdminUser

cli/server_createadminuser_test.go:27–244  ·  view source on GitHub ↗

nolint:paralleltest, tparallel

(t *testing.T)

Source from the content-addressed store, hash-verified

25
26//nolint:paralleltest, tparallel
27func TestServerCreateAdminUser(t *testing.T) {
28 const (
29 username = "dean"
30 email = "dean@example.com"
31 password = "SecurePa$$word123"
32 )
33
34 verifyUser := func(t *testing.T, dbURL, username, email, password string) {
35 t.Helper()
36
37 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
38 defer cancel()
39
40 sqlDB, err := sql.Open("postgres", dbURL)
41 require.NoError(t, err)
42 defer sqlDB.Close()
43 db := database.New(sqlDB)
44
45 pingCtx, pingCancel := context.WithTimeout(ctx, testutil.WaitShort)
46 defer pingCancel()
47 _, err = db.Ping(pingCtx)
48 require.NoError(t, err, "ping db")
49
50 user, err := db.GetUserByEmailOrUsername(ctx, database.GetUserByEmailOrUsernameParams{
51 Email: email,
52 })
53 require.NoError(t, err)
54 require.Equal(t, username, user.Username, "username does not match")
55 require.Equal(t, email, user.Email, "email does not match")
56
57 ok, err := userpassword.Compare(string(user.HashedPassword), password)
58 require.NoError(t, err)
59 require.True(t, ok, "password does not match")
60
61 require.EqualValues(t, []string{codersdk.RoleOwner}, user.RBACRoles, "user does not have owner role")
62
63 // Check that user is admin in every org.
64 orgs, err := db.GetOrganizations(ctx, database.GetOrganizationsParams{})
65 require.NoError(t, err)
66 orgIDs := make(map[uuid.UUID]struct{}, len(orgs))
67 for _, org := range orgs {
68 orgIDs[org.ID] = struct{}{}
69 }
70
71 orgMemberships, err := db.OrganizationMembers(ctx, database.OrganizationMembersParams{UserID: user.ID})
72 require.NoError(t, err)
73 orgIDs2 := make(map[uuid.UUID]struct{}, len(orgMemberships))
74 for _, membership := range orgMemberships {
75 orgIDs2[membership.OrganizationMember.OrganizationID] = struct{}{}
76 assert.Equal(t, []string{rbac.RoleOrgAdmin()}, membership.OrganizationMember.Roles, "user is not org admin")
77 }
78
79 require.Equal(t, orgIDs, orgIDs2, "user is not in all orgs")
80 }
81
82 t.Run("OK", func(t *testing.T) {
83 t.Parallel()
84

Callers

nothing calls this directly

Calls 15

NewFunction · 0.92
CompareFunction · 0.92
RoleOrgAdminFunction · 0.92
OpenFunction · 0.92
NowFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
StartFunction · 0.92
ContextFunction · 0.92
SkipNowMethod · 0.80
ExpectMatchContextMethod · 0.80
WriteLineMethod · 0.80

Tested by

no test coverage detected