Skip to content

Commit 50b2873

Browse files
committed
Fix permission issues of dbgen
1 parent c0e2804 commit 50b2873

File tree

1 file changed

+43
-26
lines changed

1 file changed

+43
-26
lines changed

coderd/database/dbgen/generator.go

+43-26
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import (
1111
"testing"
1212
"time"
1313

14+
"github.com/coder/coder/coderd/database/dbauthz"
15+
"github.com/coder/coder/coderd/rbac"
16+
1417
"github.com/google/uuid"
1518
"github.com/moby/moby/pkg/namesgenerator"
1619
"github.com/stretchr/testify/require"
@@ -23,8 +26,15 @@ import (
2326
// All methods take in a 'seed' object. Any provided fields in the seed will be
2427
// maintained. Any fields omitted will have sensible defaults generated.
2528

29+
var genCtx = dbauthz.As(context.Background(), rbac.Subject{
30+
ID: "owner",
31+
Roles: rbac.Roles(must(rbac.RoleNames{rbac.RoleOwner()}.Expand())),
32+
Groups: []string{},
33+
Scope: rbac.ExpandableScope(rbac.ScopeAll),
34+
})
35+
2636
func AuditLog(t testing.TB, db database.Store, seed database.AuditLog) database.AuditLog {
27-
log, err := db.InsertAuditLog(context.Background(), database.InsertAuditLogParams{
37+
log, err := db.InsertAuditLog(genCtx, database.InsertAuditLogParams{
2838
ID: takeFirst(seed.ID, uuid.New()),
2939
Time: takeFirst(seed.Time, database.Now()),
3040
UserID: takeFirst(seed.UserID, uuid.New()),
@@ -52,7 +62,7 @@ func AuditLog(t testing.TB, db database.Store, seed database.AuditLog) database.
5262
}
5363

5464
func Template(t testing.TB, db database.Store, seed database.Template) database.Template {
55-
template, err := db.InsertTemplate(context.Background(), database.InsertTemplateParams{
65+
template, err := db.InsertTemplate(genCtx, database.InsertTemplateParams{
5666
ID: takeFirst(seed.ID, uuid.New()),
5767
CreatedAt: takeFirst(seed.CreatedAt, database.Now()),
5868
UpdatedAt: takeFirst(seed.UpdatedAt, database.Now()),
@@ -88,7 +98,7 @@ func APIKey(t testing.TB, db database.Store, seed database.APIKey) (key database
8898
}
8999
}
90100

91-
key, err := db.InsertAPIKey(context.Background(), database.InsertAPIKeyParams{
101+
key, err := db.InsertAPIKey(genCtx, database.InsertAPIKeyParams{
92102
ID: takeFirst(seed.ID, id),
93103
// 0 defaults to 86400 at the db layer
94104
LifetimeSeconds: takeFirst(seed.LifetimeSeconds, 0),
@@ -108,7 +118,7 @@ func APIKey(t testing.TB, db database.Store, seed database.APIKey) (key database
108118
}
109119

110120
func WorkspaceAgent(t testing.TB, db database.Store, orig database.WorkspaceAgent) database.WorkspaceAgent {
111-
workspace, err := db.InsertWorkspaceAgent(context.Background(), database.InsertWorkspaceAgentParams{
121+
workspace, err := db.InsertWorkspaceAgent(genCtx, database.InsertWorkspaceAgentParams{
112122
ID: takeFirst(orig.ID, uuid.New()),
113123
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
114124
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
@@ -149,7 +159,7 @@ func WorkspaceAgent(t testing.TB, db database.Store, orig database.WorkspaceAgen
149159
}
150160

151161
func Workspace(t testing.TB, db database.Store, orig database.Workspace) database.Workspace {
152-
workspace, err := db.InsertWorkspace(context.Background(), database.InsertWorkspaceParams{
162+
workspace, err := db.InsertWorkspace(genCtx, database.InsertWorkspaceParams{
153163
ID: takeFirst(orig.ID, uuid.New()),
154164
OwnerID: takeFirst(orig.OwnerID, uuid.New()),
155165
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -166,7 +176,7 @@ func Workspace(t testing.TB, db database.Store, orig database.Workspace) databas
166176
}
167177

168178
func WorkspaceBuild(t testing.TB, db database.Store, orig database.WorkspaceBuild) database.WorkspaceBuild {
169-
build, err := db.InsertWorkspaceBuild(context.Background(), database.InsertWorkspaceBuildParams{
179+
build, err := db.InsertWorkspaceBuild(genCtx, database.InsertWorkspaceBuildParams{
170180
ID: takeFirst(orig.ID, uuid.New()),
171181
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
172182
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
@@ -185,7 +195,7 @@ func WorkspaceBuild(t testing.TB, db database.Store, orig database.WorkspaceBuil
185195
}
186196

187197
func User(t testing.TB, db database.Store, orig database.User) database.User {
188-
user, err := db.InsertUser(context.Background(), database.InsertUserParams{
198+
user, err := db.InsertUser(genCtx, database.InsertUserParams{
189199
ID: takeFirst(orig.ID, uuid.New()),
190200
Email: takeFirst(orig.Email, namesgenerator.GetRandomName(1)),
191201
Username: takeFirst(orig.Username, namesgenerator.GetRandomName(1)),
@@ -200,7 +210,7 @@ func User(t testing.TB, db database.Store, orig database.User) database.User {
200210
}
201211

202212
func GitSSHKey(t testing.TB, db database.Store, orig database.GitSSHKey) database.GitSSHKey {
203-
key, err := db.InsertGitSSHKey(context.Background(), database.InsertGitSSHKeyParams{
213+
key, err := db.InsertGitSSHKey(genCtx, database.InsertGitSSHKeyParams{
204214
UserID: takeFirst(orig.UserID, uuid.New()),
205215
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
206216
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
@@ -212,7 +222,7 @@ func GitSSHKey(t testing.TB, db database.Store, orig database.GitSSHKey) databas
212222
}
213223

214224
func Organization(t testing.TB, db database.Store, orig database.Organization) database.Organization {
215-
org, err := db.InsertOrganization(context.Background(), database.InsertOrganizationParams{
225+
org, err := db.InsertOrganization(genCtx, database.InsertOrganizationParams{
216226
ID: takeFirst(orig.ID, uuid.New()),
217227
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
218228
Description: takeFirst(orig.Description, namesgenerator.GetRandomName(1)),
@@ -224,7 +234,7 @@ func Organization(t testing.TB, db database.Store, orig database.Organization) d
224234
}
225235

226236
func OrganizationMember(t testing.TB, db database.Store, orig database.OrganizationMember) database.OrganizationMember {
227-
mem, err := db.InsertOrganizationMember(context.Background(), database.InsertOrganizationMemberParams{
237+
mem, err := db.InsertOrganizationMember(genCtx, database.InsertOrganizationMemberParams{
228238
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
229239
UserID: takeFirst(orig.UserID, uuid.New()),
230240
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -236,7 +246,7 @@ func OrganizationMember(t testing.TB, db database.Store, orig database.Organizat
236246
}
237247

238248
func Group(t testing.TB, db database.Store, orig database.Group) database.Group {
239-
group, err := db.InsertGroup(context.Background(), database.InsertGroupParams{
249+
group, err := db.InsertGroup(genCtx, database.InsertGroupParams{
240250
ID: takeFirst(orig.ID, uuid.New()),
241251
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
242252
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
@@ -253,7 +263,7 @@ func GroupMember(t testing.TB, db database.Store, orig database.GroupMember) dat
253263
GroupID: takeFirst(orig.GroupID, uuid.New()),
254264
}
255265
//nolint:gosimple
256-
err := db.InsertGroupMember(context.Background(), database.InsertGroupMemberParams{
266+
err := db.InsertGroupMember(genCtx, database.InsertGroupMemberParams{
257267
UserID: member.UserID,
258268
GroupID: member.GroupID,
259269
})
@@ -262,7 +272,7 @@ func GroupMember(t testing.TB, db database.Store, orig database.GroupMember) dat
262272
}
263273

264274
func ProvisionerJob(t testing.TB, db database.Store, orig database.ProvisionerJob) database.ProvisionerJob {
265-
job, err := db.InsertProvisionerJob(context.Background(), database.InsertProvisionerJobParams{
275+
job, err := db.InsertProvisionerJob(genCtx, database.InsertProvisionerJobParams{
266276
ID: takeFirst(orig.ID, uuid.New()),
267277
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
268278
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
@@ -280,7 +290,7 @@ func ProvisionerJob(t testing.TB, db database.Store, orig database.ProvisionerJo
280290
}
281291

282292
func WorkspaceApp(t testing.TB, db database.Store, orig database.WorkspaceApp) database.WorkspaceApp {
283-
resource, err := db.InsertWorkspaceApp(context.Background(), database.InsertWorkspaceAppParams{
293+
resource, err := db.InsertWorkspaceApp(genCtx, database.InsertWorkspaceAppParams{
284294
ID: takeFirst(orig.ID, uuid.New()),
285295
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
286296
AgentID: takeFirst(orig.AgentID, uuid.New()),
@@ -308,7 +318,7 @@ func WorkspaceApp(t testing.TB, db database.Store, orig database.WorkspaceApp) d
308318
}
309319

310320
func WorkspaceResource(t testing.TB, db database.Store, orig database.WorkspaceResource) database.WorkspaceResource {
311-
resource, err := db.InsertWorkspaceResource(context.Background(), database.InsertWorkspaceResourceParams{
321+
resource, err := db.InsertWorkspaceResource(genCtx, database.InsertWorkspaceResourceParams{
312322
ID: takeFirst(orig.ID, uuid.New()),
313323
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
314324
JobID: takeFirst(orig.JobID, uuid.New()),
@@ -328,7 +338,7 @@ func WorkspaceResource(t testing.TB, db database.Store, orig database.WorkspaceR
328338
}
329339

330340
func WorkspaceResourceMetadatums(t testing.TB, db database.Store, seed database.WorkspaceResourceMetadatum) []database.WorkspaceResourceMetadatum {
331-
meta, err := db.InsertWorkspaceResourceMetadata(context.Background(), database.InsertWorkspaceResourceMetadataParams{
341+
meta, err := db.InsertWorkspaceResourceMetadata(genCtx, database.InsertWorkspaceResourceMetadataParams{
332342
WorkspaceResourceID: takeFirst(seed.WorkspaceResourceID, uuid.New()),
333343
Key: []string{takeFirst(seed.Key, namesgenerator.GetRandomName(1))},
334344
Value: []string{takeFirst(seed.Value.String, namesgenerator.GetRandomName(1))},
@@ -343,7 +353,7 @@ func WorkspaceProxy(t testing.TB, db database.Store, orig database.WorkspaceProx
343353
require.NoError(t, err, "generate secret")
344354
hashedSecret := sha256.Sum256([]byte(secret))
345355

346-
proxy, err := db.InsertWorkspaceProxy(context.Background(), database.InsertWorkspaceProxyParams{
356+
proxy, err := db.InsertWorkspaceProxy(genCtx, database.InsertWorkspaceProxyParams{
347357
ID: takeFirst(orig.ID, uuid.New()),
348358
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
349359
DisplayName: takeFirst(orig.DisplayName, namesgenerator.GetRandomName(1)),
@@ -356,7 +366,7 @@ func WorkspaceProxy(t testing.TB, db database.Store, orig database.WorkspaceProx
356366

357367
// Also set these fields if the caller wants them.
358368
if orig.Url != "" || orig.WildcardHostname != "" {
359-
proxy, err = db.RegisterWorkspaceProxy(context.Background(), database.RegisterWorkspaceProxyParams{
369+
proxy, err = db.RegisterWorkspaceProxy(genCtx, database.RegisterWorkspaceProxyParams{
360370
Url: orig.Url,
361371
WildcardHostname: orig.WildcardHostname,
362372
ID: proxy.ID,
@@ -367,7 +377,7 @@ func WorkspaceProxy(t testing.TB, db database.Store, orig database.WorkspaceProx
367377
}
368378

369379
func File(t testing.TB, db database.Store, orig database.File) database.File {
370-
file, err := db.InsertFile(context.Background(), database.InsertFileParams{
380+
file, err := db.InsertFile(genCtx, database.InsertFileParams{
371381
ID: takeFirst(orig.ID, uuid.New()),
372382
Hash: takeFirst(orig.Hash, hex.EncodeToString(make([]byte, 32))),
373383
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
@@ -380,7 +390,7 @@ func File(t testing.TB, db database.Store, orig database.File) database.File {
380390
}
381391

382392
func UserLink(t testing.TB, db database.Store, orig database.UserLink) database.UserLink {
383-
link, err := db.InsertUserLink(context.Background(), database.InsertUserLinkParams{
393+
link, err := db.InsertUserLink(genCtx, database.InsertUserLinkParams{
384394
UserID: takeFirst(orig.UserID, uuid.New()),
385395
LoginType: takeFirst(orig.LoginType, database.LoginTypeGithub),
386396
LinkedID: takeFirst(orig.LinkedID),
@@ -394,7 +404,7 @@ func UserLink(t testing.TB, db database.Store, orig database.UserLink) database.
394404
}
395405

396406
func GitAuthLink(t testing.TB, db database.Store, orig database.GitAuthLink) database.GitAuthLink {
397-
link, err := db.InsertGitAuthLink(context.Background(), database.InsertGitAuthLinkParams{
407+
link, err := db.InsertGitAuthLink(genCtx, database.InsertGitAuthLinkParams{
398408
ProviderID: takeFirst(orig.ProviderID, uuid.New().String()),
399409
UserID: takeFirst(orig.UserID, uuid.New()),
400410
OAuthAccessToken: takeFirst(orig.OAuthAccessToken, uuid.NewString()),
@@ -409,7 +419,7 @@ func GitAuthLink(t testing.TB, db database.Store, orig database.GitAuthLink) dat
409419
}
410420

411421
func TemplateVersion(t testing.TB, db database.Store, orig database.TemplateVersion) database.TemplateVersion {
412-
version, err := db.InsertTemplateVersion(context.Background(), database.InsertTemplateVersionParams{
422+
version, err := db.InsertTemplateVersion(genCtx, database.InsertTemplateVersionParams{
413423
ID: takeFirst(orig.ID, uuid.New()),
414424
TemplateID: orig.TemplateID,
415425
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
@@ -425,7 +435,7 @@ func TemplateVersion(t testing.TB, db database.Store, orig database.TemplateVers
425435
}
426436

427437
func TemplateVersionVariable(t testing.TB, db database.Store, orig database.TemplateVersionVariable) database.TemplateVersionVariable {
428-
version, err := db.InsertTemplateVersionVariable(context.Background(), database.InsertTemplateVersionVariableParams{
438+
version, err := db.InsertTemplateVersionVariable(genCtx, database.InsertTemplateVersionVariableParams{
429439
TemplateVersionID: takeFirst(orig.TemplateVersionID, uuid.New()),
430440
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
431441
Description: takeFirst(orig.Description, namesgenerator.GetRandomName(1)),
@@ -440,7 +450,7 @@ func TemplateVersionVariable(t testing.TB, db database.Store, orig database.Temp
440450
}
441451

442452
func ParameterSchema(t testing.TB, db database.Store, seed database.ParameterSchema) database.ParameterSchema {
443-
scheme, err := db.InsertParameterSchema(context.Background(), database.InsertParameterSchemaParams{
453+
scheme, err := db.InsertParameterSchema(genCtx, database.InsertParameterSchemaParams{
444454
ID: takeFirst(seed.ID, uuid.New()),
445455
JobID: takeFirst(seed.JobID, uuid.New()),
446456
CreatedAt: takeFirst(seed.CreatedAt, database.Now()),
@@ -464,7 +474,7 @@ func ParameterSchema(t testing.TB, db database.Store, seed database.ParameterSch
464474
}
465475

466476
func ParameterValue(t testing.TB, db database.Store, seed database.ParameterValue) database.ParameterValue {
467-
scheme, err := db.InsertParameterValue(context.Background(), database.InsertParameterValueParams{
477+
scheme, err := db.InsertParameterValue(genCtx, database.InsertParameterValueParams{
468478
ID: takeFirst(seed.ID, uuid.New()),
469479
Name: takeFirst(seed.Name, namesgenerator.GetRandomName(1)),
470480
CreatedAt: takeFirst(seed.CreatedAt, database.Now()),
@@ -483,7 +493,7 @@ func WorkspaceAgentStat(t testing.TB, db database.Store, orig database.Workspace
483493
if orig.ConnectionsByProto == nil {
484494
orig.ConnectionsByProto = json.RawMessage([]byte("{}"))
485495
}
486-
scheme, err := db.InsertWorkspaceAgentStat(context.Background(), database.InsertWorkspaceAgentStatParams{
496+
scheme, err := db.InsertWorkspaceAgentStat(genCtx, database.InsertWorkspaceAgentStatParams{
487497
ID: takeFirst(orig.ID, uuid.New()),
488498
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
489499
UserID: takeFirst(orig.UserID, uuid.New()),
@@ -505,3 +515,10 @@ func WorkspaceAgentStat(t testing.TB, db database.Store, orig database.Workspace
505515
require.NoError(t, err, "insert workspace agent stat")
506516
return scheme
507517
}
518+
519+
func must[V any](v V, err error) V {
520+
if err != nil {
521+
panic(err)
522+
}
523+
return v
524+
}

0 commit comments

Comments
 (0)