Skip to content

Commit 8dba66c

Browse files
Emyrkjohnstcn
andauthored
chore: Use dbgen in unit test (coder#6111)
* chore: Use dbgen in unit test - organizationparam_test - templateparam_test * Use dbgen in all unit tests vs insert methods * fixup! Use dbgen in all unit tests vs insert methods --------- Co-authored-by: Cian Johnston <cian@coder.com>
1 parent 7a1731b commit 8dba66c

12 files changed

+165
-475
lines changed

coderd/database/dbgen/generator.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
// All methods take in a 'seed' object. Any provided fields in the seed will be
2323
// maintained. Any fields omitted will have sensible defaults generated.
2424

25-
func AuditLog(t *testing.T, db database.Store, seed database.AuditLog) database.AuditLog {
25+
func AuditLog(t testing.TB, db database.Store, seed database.AuditLog) database.AuditLog {
2626
log, err := db.InsertAuditLog(context.Background(), database.InsertAuditLogParams{
2727
ID: takeFirst(seed.ID, uuid.New()),
2828
Time: takeFirst(seed.Time, database.Now()),
@@ -50,7 +50,7 @@ func AuditLog(t *testing.T, db database.Store, seed database.AuditLog) database.
5050
return log
5151
}
5252

53-
func Template(t *testing.T, db database.Store, seed database.Template) database.Template {
53+
func Template(t testing.TB, db database.Store, seed database.Template) database.Template {
5454
template, err := db.InsertTemplate(context.Background(), database.InsertTemplateParams{
5555
ID: takeFirst(seed.ID, uuid.New()),
5656
CreatedAt: takeFirst(seed.CreatedAt, database.Now()),
@@ -72,7 +72,7 @@ func Template(t *testing.T, db database.Store, seed database.Template) database.
7272
return template
7373
}
7474

75-
func APIKey(t *testing.T, db database.Store, seed database.APIKey) (key database.APIKey, token string) {
75+
func APIKey(t testing.TB, db database.Store, seed database.APIKey) (key database.APIKey, token string) {
7676
id, _ := cryptorand.String(10)
7777
secret, _ := cryptorand.String(22)
7878
hashed := sha256.Sum256([]byte(secret))
@@ -95,7 +95,7 @@ func APIKey(t *testing.T, db database.Store, seed database.APIKey) (key database
9595
return key, fmt.Sprintf("%s-%s", key.ID, secret)
9696
}
9797

98-
func WorkspaceAgent(t *testing.T, db database.Store, orig database.WorkspaceAgent) database.WorkspaceAgent {
98+
func WorkspaceAgent(t testing.TB, db database.Store, orig database.WorkspaceAgent) database.WorkspaceAgent {
9999
workspace, err := db.InsertWorkspaceAgent(context.Background(), database.InsertWorkspaceAgentParams{
100100
ID: takeFirst(orig.ID, uuid.New()),
101101
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -136,7 +136,7 @@ func WorkspaceAgent(t *testing.T, db database.Store, orig database.WorkspaceAgen
136136
return workspace
137137
}
138138

139-
func Workspace(t *testing.T, db database.Store, orig database.Workspace) database.Workspace {
139+
func Workspace(t testing.TB, db database.Store, orig database.Workspace) database.Workspace {
140140
workspace, err := db.InsertWorkspace(context.Background(), database.InsertWorkspaceParams{
141141
ID: takeFirst(orig.ID, uuid.New()),
142142
OwnerID: takeFirst(orig.OwnerID, uuid.New()),
@@ -152,7 +152,7 @@ func Workspace(t *testing.T, db database.Store, orig database.Workspace) databas
152152
return workspace
153153
}
154154

155-
func WorkspaceBuild(t *testing.T, db database.Store, orig database.WorkspaceBuild) database.WorkspaceBuild {
155+
func WorkspaceBuild(t testing.TB, db database.Store, orig database.WorkspaceBuild) database.WorkspaceBuild {
156156
build, err := db.InsertWorkspaceBuild(context.Background(), database.InsertWorkspaceBuildParams{
157157
ID: takeFirst(orig.ID, uuid.New()),
158158
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -171,7 +171,7 @@ func WorkspaceBuild(t *testing.T, db database.Store, orig database.WorkspaceBuil
171171
return build
172172
}
173173

174-
func User(t *testing.T, db database.Store, orig database.User) database.User {
174+
func User(t testing.TB, db database.Store, orig database.User) database.User {
175175
user, err := db.InsertUser(context.Background(), database.InsertUserParams{
176176
ID: takeFirst(orig.ID, uuid.New()),
177177
Email: takeFirst(orig.Email, namesgenerator.GetRandomName(1)),
@@ -186,7 +186,7 @@ func User(t *testing.T, db database.Store, orig database.User) database.User {
186186
return user
187187
}
188188

189-
func GitSSHKey(t *testing.T, db database.Store, orig database.GitSSHKey) database.GitSSHKey {
189+
func GitSSHKey(t testing.TB, db database.Store, orig database.GitSSHKey) database.GitSSHKey {
190190
key, err := db.InsertGitSSHKey(context.Background(), database.InsertGitSSHKeyParams{
191191
UserID: takeFirst(orig.UserID, uuid.New()),
192192
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -198,7 +198,7 @@ func GitSSHKey(t *testing.T, db database.Store, orig database.GitSSHKey) databas
198198
return key
199199
}
200200

201-
func Organization(t *testing.T, db database.Store, orig database.Organization) database.Organization {
201+
func Organization(t testing.TB, db database.Store, orig database.Organization) database.Organization {
202202
org, err := db.InsertOrganization(context.Background(), database.InsertOrganizationParams{
203203
ID: takeFirst(orig.ID, uuid.New()),
204204
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
@@ -210,7 +210,7 @@ func Organization(t *testing.T, db database.Store, orig database.Organization) d
210210
return org
211211
}
212212

213-
func OrganizationMember(t *testing.T, db database.Store, orig database.OrganizationMember) database.OrganizationMember {
213+
func OrganizationMember(t testing.TB, db database.Store, orig database.OrganizationMember) database.OrganizationMember {
214214
mem, err := db.InsertOrganizationMember(context.Background(), database.InsertOrganizationMemberParams{
215215
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
216216
UserID: takeFirst(orig.UserID, uuid.New()),
@@ -222,7 +222,7 @@ func OrganizationMember(t *testing.T, db database.Store, orig database.Organizat
222222
return mem
223223
}
224224

225-
func Group(t *testing.T, db database.Store, orig database.Group) database.Group {
225+
func Group(t testing.TB, db database.Store, orig database.Group) database.Group {
226226
group, err := db.InsertGroup(context.Background(), database.InsertGroupParams{
227227
ID: takeFirst(orig.ID, uuid.New()),
228228
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
@@ -234,7 +234,7 @@ func Group(t *testing.T, db database.Store, orig database.Group) database.Group
234234
return group
235235
}
236236

237-
func GroupMember(t *testing.T, db database.Store, orig database.GroupMember) database.GroupMember {
237+
func GroupMember(t testing.TB, db database.Store, orig database.GroupMember) database.GroupMember {
238238
member := database.GroupMember{
239239
UserID: takeFirst(orig.UserID, uuid.New()),
240240
GroupID: takeFirst(orig.GroupID, uuid.New()),
@@ -248,7 +248,7 @@ func GroupMember(t *testing.T, db database.Store, orig database.GroupMember) dat
248248
return member
249249
}
250250

251-
func ProvisionerJob(t *testing.T, db database.Store, orig database.ProvisionerJob) database.ProvisionerJob {
251+
func ProvisionerJob(t testing.TB, db database.Store, orig database.ProvisionerJob) database.ProvisionerJob {
252252
job, err := db.InsertProvisionerJob(context.Background(), database.InsertProvisionerJobParams{
253253
ID: takeFirst(orig.ID, uuid.New()),
254254
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -266,7 +266,7 @@ func ProvisionerJob(t *testing.T, db database.Store, orig database.ProvisionerJo
266266
return job
267267
}
268268

269-
func WorkspaceApp(t *testing.T, db database.Store, orig database.WorkspaceApp) database.WorkspaceApp {
269+
func WorkspaceApp(t testing.TB, db database.Store, orig database.WorkspaceApp) database.WorkspaceApp {
270270
resource, err := db.InsertWorkspaceApp(context.Background(), database.InsertWorkspaceAppParams{
271271
ID: takeFirst(orig.ID, uuid.New()),
272272
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -294,7 +294,7 @@ func WorkspaceApp(t *testing.T, db database.Store, orig database.WorkspaceApp) d
294294
return resource
295295
}
296296

297-
func WorkspaceResource(t *testing.T, db database.Store, orig database.WorkspaceResource) database.WorkspaceResource {
297+
func WorkspaceResource(t testing.TB, db database.Store, orig database.WorkspaceResource) database.WorkspaceResource {
298298
resource, err := db.InsertWorkspaceResource(context.Background(), database.InsertWorkspaceResourceParams{
299299
ID: takeFirst(orig.ID, uuid.New()),
300300
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -314,7 +314,7 @@ func WorkspaceResource(t *testing.T, db database.Store, orig database.WorkspaceR
314314
return resource
315315
}
316316

317-
func WorkspaceResourceMetadatums(t *testing.T, db database.Store, seed database.WorkspaceResourceMetadatum) []database.WorkspaceResourceMetadatum {
317+
func WorkspaceResourceMetadatums(t testing.TB, db database.Store, seed database.WorkspaceResourceMetadatum) []database.WorkspaceResourceMetadatum {
318318
meta, err := db.InsertWorkspaceResourceMetadata(context.Background(), database.InsertWorkspaceResourceMetadataParams{
319319
WorkspaceResourceID: takeFirst(seed.WorkspaceResourceID, uuid.New()),
320320
Key: []string{takeFirst(seed.Key, namesgenerator.GetRandomName(1))},
@@ -325,7 +325,7 @@ func WorkspaceResourceMetadatums(t *testing.T, db database.Store, seed database.
325325
return meta
326326
}
327327

328-
func File(t *testing.T, db database.Store, orig database.File) database.File {
328+
func File(t testing.TB, db database.Store, orig database.File) database.File {
329329
file, err := db.InsertFile(context.Background(), database.InsertFileParams{
330330
ID: takeFirst(orig.ID, uuid.New()),
331331
Hash: takeFirst(orig.Hash, hex.EncodeToString(make([]byte, 32))),
@@ -338,7 +338,7 @@ func File(t *testing.T, db database.Store, orig database.File) database.File {
338338
return file
339339
}
340340

341-
func UserLink(t *testing.T, db database.Store, orig database.UserLink) database.UserLink {
341+
func UserLink(t testing.TB, db database.Store, orig database.UserLink) database.UserLink {
342342
link, err := db.InsertUserLink(context.Background(), database.InsertUserLinkParams{
343343
UserID: takeFirst(orig.UserID, uuid.New()),
344344
LoginType: takeFirst(orig.LoginType, database.LoginTypeGithub),
@@ -352,7 +352,7 @@ func UserLink(t *testing.T, db database.Store, orig database.UserLink) database.
352352
return link
353353
}
354354

355-
func GitAuthLink(t *testing.T, db database.Store, orig database.GitAuthLink) database.GitAuthLink {
355+
func GitAuthLink(t testing.TB, db database.Store, orig database.GitAuthLink) database.GitAuthLink {
356356
link, err := db.InsertGitAuthLink(context.Background(), database.InsertGitAuthLinkParams{
357357
ProviderID: takeFirst(orig.ProviderID, uuid.New().String()),
358358
UserID: takeFirst(orig.UserID, uuid.New()),
@@ -367,7 +367,7 @@ func GitAuthLink(t *testing.T, db database.Store, orig database.GitAuthLink) dat
367367
return link
368368
}
369369

370-
func TemplateVersion(t *testing.T, db database.Store, orig database.TemplateVersion) database.TemplateVersion {
370+
func TemplateVersion(t testing.TB, db database.Store, orig database.TemplateVersion) database.TemplateVersion {
371371
version, err := db.InsertTemplateVersion(context.Background(), database.InsertTemplateVersionParams{
372372
ID: takeFirst(orig.ID, uuid.New()),
373373
TemplateID: uuid.NullUUID{
@@ -386,7 +386,7 @@ func TemplateVersion(t *testing.T, db database.Store, orig database.TemplateVers
386386
return version
387387
}
388388

389-
func ParameterSchema(t *testing.T, db database.Store, seed database.ParameterSchema) database.ParameterSchema {
389+
func ParameterSchema(t testing.TB, db database.Store, seed database.ParameterSchema) database.ParameterSchema {
390390
scheme, err := db.InsertParameterSchema(context.Background(), database.InsertParameterSchemaParams{
391391
ID: takeFirst(seed.ID, uuid.New()),
392392
JobID: takeFirst(seed.JobID, uuid.New()),
@@ -410,7 +410,7 @@ func ParameterSchema(t *testing.T, db database.Store, seed database.ParameterSch
410410
return scheme
411411
}
412412

413-
func ParameterValue(t *testing.T, db database.Store, seed database.ParameterValue) database.ParameterValue {
413+
func ParameterValue(t testing.TB, db database.Store, seed database.ParameterValue) database.ParameterValue {
414414
scheme, err := db.InsertParameterValue(context.Background(), database.InsertParameterValueParams{
415415
ID: takeFirst(seed.ID, uuid.New()),
416416
Name: takeFirst(seed.Name, namesgenerator.GetRandomName(1)),

coderd/httpmw/organizationparam_test.go

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,59 +2,36 @@ package httpmw_test
22

33
import (
44
"context"
5-
"crypto/sha256"
6-
"fmt"
75
"net/http"
86
"net/http/httptest"
97
"testing"
10-
"time"
118

129
"github.com/go-chi/chi/v5"
1310
"github.com/google/uuid"
1411
"github.com/stretchr/testify/require"
1512

1613
"github.com/coder/coder/coderd/database"
1714
"github.com/coder/coder/coderd/database/dbfake"
15+
"github.com/coder/coder/coderd/database/dbgen"
1816
"github.com/coder/coder/coderd/httpmw"
1917
"github.com/coder/coder/codersdk"
20-
"github.com/coder/coder/cryptorand"
2118
)
2219

2320
func TestOrganizationParam(t *testing.T) {
2421
t.Parallel()
2522

2623
setupAuthentication := func(db database.Store) (*http.Request, database.User) {
2724
var (
28-
id, secret = randomAPIKeyParts()
29-
r = httptest.NewRequest("GET", "/", nil)
30-
hashed = sha256.Sum256([]byte(secret))
25+
r = httptest.NewRequest("GET", "/", nil)
3126
)
32-
r.Header.Set(codersdk.SessionTokenHeader, fmt.Sprintf("%s-%s", id, secret))
3327

34-
userID := uuid.New()
35-
username, err := cryptorand.String(8)
36-
require.NoError(t, err)
37-
38-
user, err := db.InsertUser(r.Context(), database.InsertUserParams{
39-
ID: userID,
40-
Email: "testaccount@coder.com",
41-
HashedPassword: hashed[:],
42-
Username: username,
43-
CreatedAt: database.Now(),
44-
UpdatedAt: database.Now(),
45-
LoginType: database.LoginTypePassword,
28+
user := dbgen.User(t, db, database.User{
29+
ID: uuid.New(),
4630
})
47-
require.NoError(t, err)
48-
_, err = db.InsertAPIKey(r.Context(), database.InsertAPIKeyParams{
49-
ID: id,
50-
UserID: user.ID,
51-
HashedSecret: hashed[:],
52-
LastUsed: database.Now(),
53-
ExpiresAt: database.Now().Add(time.Minute),
54-
LoginType: database.LoginTypePassword,
55-
Scope: database.APIKeyScopeAll,
31+
_, token := dbgen.APIKey(t, db, database.APIKey{
32+
UserID: user.ID,
5633
})
57-
require.NoError(t, err)
34+
r.Header.Set(codersdk.SessionTokenHeader, token)
5835
r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, chi.NewRouteContext()))
5936
return r, user
6037
}
@@ -168,20 +145,11 @@ func TestOrganizationParam(t *testing.T) {
168145
r, user = setupAuthentication(db)
169146
rtr = chi.NewRouter()
170147
)
171-
organization, err := db.InsertOrganization(r.Context(), database.InsertOrganizationParams{
172-
ID: uuid.New(),
173-
Name: "test",
174-
CreatedAt: database.Now(),
175-
UpdatedAt: database.Now(),
176-
})
177-
require.NoError(t, err)
178-
_, err = db.InsertOrganizationMember(r.Context(), database.InsertOrganizationMemberParams{
148+
organization := dbgen.Organization(t, db, database.Organization{})
149+
_ = dbgen.OrganizationMember(t, db, database.OrganizationMember{
179150
OrganizationID: organization.ID,
180151
UserID: user.ID,
181-
CreatedAt: database.Now(),
182-
UpdatedAt: database.Now(),
183152
})
184-
require.NoError(t, err)
185153
chi.RouteContext(r.Context()).URLParams.Add("organization", organization.ID.String())
186154
chi.RouteContext(r.Context()).URLParams.Add("user", user.ID.String())
187155
rtr.Use(

coderd/httpmw/templateparam_test.go

Lines changed: 14 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,77 +2,39 @@ package httpmw_test
22

33
import (
44
"context"
5-
"crypto/sha256"
6-
"fmt"
75
"net/http"
86
"net/http/httptest"
97
"testing"
10-
"time"
118

129
"github.com/go-chi/chi/v5"
1310
"github.com/google/uuid"
1411
"github.com/stretchr/testify/require"
1512

1613
"github.com/coder/coder/coderd/database"
1714
"github.com/coder/coder/coderd/database/dbfake"
15+
"github.com/coder/coder/coderd/database/dbgen"
1816
"github.com/coder/coder/coderd/httpmw"
1917
"github.com/coder/coder/codersdk"
20-
"github.com/coder/coder/cryptorand"
2118
)
2219

2320
func TestTemplateParam(t *testing.T) {
2421
t.Parallel()
2522

2623
setupAuthentication := func(db database.Store) (*http.Request, database.Organization) {
2724
var (
28-
id, secret = randomAPIKeyParts()
29-
hashed = sha256.Sum256([]byte(secret))
25+
user = dbgen.User(t, db, database.User{})
26+
_, token = dbgen.APIKey(t, db, database.APIKey{
27+
UserID: user.ID,
28+
})
29+
organization = dbgen.Organization(t, db, database.Organization{})
30+
_ = dbgen.OrganizationMember(t, db, database.OrganizationMember{
31+
UserID: user.ID,
32+
OrganizationID: organization.ID,
33+
})
3034
)
31-
r := httptest.NewRequest("GET", "/", nil)
32-
r.Header.Set(codersdk.SessionTokenHeader, fmt.Sprintf("%s-%s", id, secret))
33-
34-
userID := uuid.New()
35-
username, err := cryptorand.String(8)
36-
require.NoError(t, err)
37-
user, err := db.InsertUser(r.Context(), database.InsertUserParams{
38-
ID: userID,
39-
Email: "testaccount@coder.com",
40-
HashedPassword: hashed[:],
41-
Username: username,
42-
CreatedAt: database.Now(),
43-
UpdatedAt: database.Now(),
44-
LoginType: database.LoginTypePassword,
45-
})
46-
require.NoError(t, err)
47-
48-
_, err = db.InsertAPIKey(r.Context(), database.InsertAPIKeyParams{
49-
ID: id,
50-
UserID: user.ID,
51-
HashedSecret: hashed[:],
52-
LastUsed: database.Now(),
53-
ExpiresAt: database.Now().Add(time.Minute),
54-
LoginType: database.LoginTypePassword,
55-
Scope: database.APIKeyScopeAll,
56-
})
57-
require.NoError(t, err)
58-
59-
orgID := uuid.New()
60-
organization, err := db.InsertOrganization(r.Context(), database.InsertOrganizationParams{
61-
ID: orgID,
62-
Name: "banana",
63-
Description: "wowie",
64-
CreatedAt: database.Now(),
65-
UpdatedAt: database.Now(),
66-
})
67-
require.NoError(t, err)
6835

69-
_, err = db.InsertOrganizationMember(r.Context(), database.InsertOrganizationMemberParams{
70-
OrganizationID: orgID,
71-
UserID: user.ID,
72-
CreatedAt: database.Now(),
73-
UpdatedAt: database.Now(),
74-
})
75-
require.NoError(t, err)
36+
r := httptest.NewRequest("GET", "/", nil)
37+
r.Header.Set(codersdk.SessionTokenHeader, token)
7638

7739
ctx := chi.NewRouteContext()
7840
r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, ctx))
@@ -146,13 +108,11 @@ func TestTemplateParam(t *testing.T) {
146108
})
147109

148110
r, org := setupAuthentication(db)
149-
template, err := db.InsertTemplate(context.Background(), database.InsertTemplateParams{
150-
ID: uuid.New(),
111+
template := dbgen.Template(t, db, database.Template{
151112
OrganizationID: org.ID,
152-
Name: "moo",
153113
Provisioner: database.ProvisionerTypeEcho,
154114
})
155-
require.NoError(t, err)
115+
156116
chi.RouteContext(r.Context()).URLParams.Add("template", template.ID.String())
157117
rw := httptest.NewRecorder()
158118
rtr.ServeHTTP(rw, r)

0 commit comments

Comments
 (0)