Skip to content

Commit 2478012

Browse files
authored
chore: Add organizationmember and parameter gen functions (coder#6007)
1 parent 41e5231 commit 2478012

File tree

3 files changed

+116
-15
lines changed

3 files changed

+116
-15
lines changed

coderd/database/dbgen/generator.go

Lines changed: 74 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ func AuditLog(t *testing.T, db database.Store, seed database.AuditLog) database.
4040
ResourceID: takeFirst(seed.ResourceID, uuid.New()),
4141
ResourceTarget: takeFirst(seed.ResourceTarget, uuid.NewString()),
4242
Action: takeFirst(seed.Action, database.AuditActionCreate),
43-
Diff: takeFirstBytes(seed.Diff, []byte("{}")),
43+
Diff: takeFirstSlice(seed.Diff, []byte("{}")),
4444
StatusCode: takeFirst(seed.StatusCode, 200),
45-
AdditionalFields: takeFirstBytes(seed.Diff, []byte("{}")),
45+
AdditionalFields: takeFirstSlice(seed.Diff, []byte("{}")),
4646
RequestID: takeFirst(seed.RequestID, uuid.New()),
4747
ResourceIcon: takeFirst(seed.ResourceIcon, ""),
4848
})
@@ -81,7 +81,7 @@ func APIKey(t *testing.T, db database.Store, seed database.APIKey) (key database
8181
ID: takeFirst(seed.ID, id),
8282
// 0 defaults to 86400 at the db layer
8383
LifetimeSeconds: takeFirst(seed.LifetimeSeconds, 0),
84-
HashedSecret: takeFirstBytes(seed.HashedSecret, hashed[:]),
84+
HashedSecret: takeFirstSlice(seed.HashedSecret, hashed[:]),
8585
IPAddress: pqtype.Inet{},
8686
UserID: takeFirst(seed.UserID, uuid.New()),
8787
LastUsed: takeFirst(seed.LastUsed, time.Now()),
@@ -109,7 +109,7 @@ func WorkspaceAgent(t *testing.T, db database.Store, orig database.WorkspaceAgen
109109
},
110110
Architecture: takeFirst(orig.Architecture, "amd64"),
111111
EnvironmentVariables: pqtype.NullRawMessage{
112-
RawMessage: takeFirstBytes(orig.EnvironmentVariables.RawMessage, []byte("{}")),
112+
RawMessage: takeFirstSlice(orig.EnvironmentVariables.RawMessage, []byte("{}")),
113113
Valid: takeFirst(orig.EnvironmentVariables.Valid, false),
114114
},
115115
OperatingSystem: takeFirst(orig.OperatingSystem, "linux"),
@@ -119,11 +119,11 @@ func WorkspaceAgent(t *testing.T, db database.Store, orig database.WorkspaceAgen
119119
},
120120
Directory: takeFirst(orig.Directory, ""),
121121
InstanceMetadata: pqtype.NullRawMessage{
122-
RawMessage: takeFirstBytes(orig.ResourceMetadata.RawMessage, []byte("{}")),
122+
RawMessage: takeFirstSlice(orig.ResourceMetadata.RawMessage, []byte("{}")),
123123
Valid: takeFirst(orig.ResourceMetadata.Valid, false),
124124
},
125125
ResourceMetadata: pqtype.NullRawMessage{
126-
RawMessage: takeFirstBytes(orig.ResourceMetadata.RawMessage, []byte("{}")),
126+
RawMessage: takeFirstSlice(orig.ResourceMetadata.RawMessage, []byte("{}")),
127127
Valid: takeFirst(orig.ResourceMetadata.Valid, false),
128128
},
129129
ConnectionTimeoutSeconds: takeFirst(orig.ConnectionTimeoutSeconds, 3600),
@@ -163,7 +163,7 @@ func WorkspaceBuild(t *testing.T, db database.Store, orig database.WorkspaceBuil
163163
Transition: takeFirst(orig.Transition, database.WorkspaceTransitionStart),
164164
InitiatorID: takeFirst(orig.InitiatorID, uuid.New()),
165165
JobID: takeFirst(orig.JobID, uuid.New()),
166-
ProvisionerState: takeFirstBytes(orig.ProvisionerState, []byte{}),
166+
ProvisionerState: takeFirstSlice(orig.ProvisionerState, []byte{}),
167167
Deadline: takeFirst(orig.Deadline, time.Now().Add(time.Hour)),
168168
Reason: takeFirst(orig.Reason, database.BuildReasonInitiator),
169169
})
@@ -176,10 +176,10 @@ func User(t *testing.T, db database.Store, orig database.User) database.User {
176176
ID: takeFirst(orig.ID, uuid.New()),
177177
Email: takeFirst(orig.Email, namesgenerator.GetRandomName(1)),
178178
Username: takeFirst(orig.Username, namesgenerator.GetRandomName(1)),
179-
HashedPassword: takeFirstBytes(orig.HashedPassword, []byte{}),
179+
HashedPassword: takeFirstSlice(orig.HashedPassword, []byte{}),
180180
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
181181
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
182-
RBACRoles: []string{},
182+
RBACRoles: takeFirstSlice(orig.RBACRoles, []string{}),
183183
LoginType: takeFirst(orig.LoginType, database.LoginTypePassword),
184184
})
185185
require.NoError(t, err, "insert user")
@@ -198,6 +198,18 @@ func Organization(t *testing.T, db database.Store, orig database.Organization) d
198198
return org
199199
}
200200

201+
func OrganizationMember(t *testing.T, db database.Store, orig database.OrganizationMember) database.OrganizationMember {
202+
mem, err := db.InsertOrganizationMember(context.Background(), database.InsertOrganizationMemberParams{
203+
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
204+
UserID: takeFirst(orig.UserID, uuid.New()),
205+
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
206+
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
207+
Roles: takeFirstSlice(orig.Roles, []string{}),
208+
})
209+
require.NoError(t, err, "insert organization")
210+
return mem
211+
}
212+
201213
func Group(t *testing.T, db database.Store, orig database.Group) database.Group {
202214
group, err := db.InsertGroup(context.Background(), database.InsertGroupParams{
203215
ID: takeFirst(orig.ID, uuid.New()),
@@ -235,7 +247,7 @@ func ProvisionerJob(t *testing.T, db database.Store, orig database.ProvisionerJo
235247
StorageMethod: takeFirst(orig.StorageMethod, database.ProvisionerStorageMethodFile),
236248
FileID: takeFirst(orig.FileID, uuid.New()),
237249
Type: takeFirst(orig.Type, database.ProvisionerJobTypeWorkspaceBuild),
238-
Input: takeFirstBytes(orig.Input, []byte("{}")),
250+
Input: takeFirstSlice(orig.Input, []byte("{}")),
239251
Tags: orig.Tags,
240252
})
241253
require.NoError(t, err, "insert job")
@@ -262,14 +274,25 @@ func WorkspaceResource(t *testing.T, db database.Store, orig database.WorkspaceR
262274
return resource
263275
}
264276

277+
func WorkspaceResourceMetadatums(t *testing.T, db database.Store, seed database.WorkspaceResourceMetadatum) []database.WorkspaceResourceMetadatum {
278+
meta, err := db.InsertWorkspaceResourceMetadata(context.Background(), database.InsertWorkspaceResourceMetadataParams{
279+
WorkspaceResourceID: takeFirst(seed.WorkspaceResourceID, uuid.New()),
280+
Key: []string{takeFirst(seed.Key, namesgenerator.GetRandomName(1))},
281+
Value: []string{takeFirst(seed.Value.String, namesgenerator.GetRandomName(1))},
282+
Sensitive: []bool{takeFirst(seed.Sensitive, false)},
283+
})
284+
require.NoError(t, err, "insert meta data")
285+
return meta
286+
}
287+
265288
func File(t *testing.T, db database.Store, orig database.File) database.File {
266289
file, err := db.InsertFile(context.Background(), database.InsertFileParams{
267290
ID: takeFirst(orig.ID, uuid.New()),
268291
Hash: takeFirst(orig.Hash, hex.EncodeToString(make([]byte, 32))),
269292
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
270293
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
271294
Mimetype: takeFirst(orig.Mimetype, "application/x-tar"),
272-
Data: takeFirstBytes(orig.Data, []byte{}),
295+
Data: takeFirstSlice(orig.Data, []byte{}),
273296
})
274297
require.NoError(t, err, "insert file")
275298
return file
@@ -307,3 +330,43 @@ func TemplateVersion(t *testing.T, db database.Store, orig database.TemplateVers
307330
require.NoError(t, err, "insert template version")
308331
return version
309332
}
333+
334+
func ParameterSchema(t *testing.T, db database.Store, seed database.ParameterSchema) database.ParameterSchema {
335+
scheme, err := db.InsertParameterSchema(context.Background(), database.InsertParameterSchemaParams{
336+
ID: takeFirst(seed.ID, uuid.New()),
337+
JobID: takeFirst(seed.JobID, uuid.New()),
338+
CreatedAt: takeFirst(seed.CreatedAt, time.Now()),
339+
Name: takeFirst(seed.Name, namesgenerator.GetRandomName(1)),
340+
Description: takeFirst(seed.Description, namesgenerator.GetRandomName(1)),
341+
DefaultSourceScheme: takeFirst(seed.DefaultSourceScheme, database.ParameterSourceSchemeNone),
342+
DefaultSourceValue: takeFirst(seed.DefaultSourceValue, ""),
343+
AllowOverrideSource: takeFirst(seed.AllowOverrideSource, false),
344+
DefaultDestinationScheme: takeFirst(seed.DefaultDestinationScheme, database.ParameterDestinationSchemeNone),
345+
AllowOverrideDestination: takeFirst(seed.AllowOverrideDestination, false),
346+
DefaultRefresh: takeFirst(seed.DefaultRefresh, ""),
347+
RedisplayValue: takeFirst(seed.RedisplayValue, false),
348+
ValidationError: takeFirst(seed.ValidationError, ""),
349+
ValidationCondition: takeFirst(seed.ValidationCondition, ""),
350+
ValidationTypeSystem: takeFirst(seed.ValidationTypeSystem, database.ParameterTypeSystemNone),
351+
ValidationValueType: takeFirst(seed.ValidationValueType, ""),
352+
Index: takeFirst(seed.Index, 1),
353+
})
354+
require.NoError(t, err, "insert parameter scheme")
355+
return scheme
356+
}
357+
358+
func ParameterValue(t *testing.T, db database.Store, seed database.ParameterValue) database.ParameterValue {
359+
scheme, err := db.InsertParameterValue(context.Background(), database.InsertParameterValueParams{
360+
ID: takeFirst(seed.ID, uuid.New()),
361+
Name: takeFirst(seed.Name, namesgenerator.GetRandomName(1)),
362+
CreatedAt: takeFirst(seed.CreatedAt, time.Now()),
363+
UpdatedAt: takeFirst(seed.UpdatedAt, time.Now()),
364+
Scope: takeFirst(seed.Scope, database.ParameterScopeWorkspace),
365+
ScopeID: takeFirst(seed.ScopeID, uuid.New()),
366+
SourceScheme: takeFirst(seed.SourceScheme, database.ParameterSourceSchemeNone),
367+
SourceValue: takeFirst(seed.SourceValue, ""),
368+
DestinationScheme: takeFirst(seed.DestinationScheme, database.ParameterDestinationSchemeNone),
369+
})
370+
require.NoError(t, err, "insert parameter value")
371+
return scheme
372+
}

coderd/database/dbgen/generator_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"testing"
66

7+
"github.com/google/uuid"
78
"github.com/stretchr/testify/require"
89

910
"github.com/coder/coder/coderd/database"
@@ -50,6 +51,13 @@ func TestGenerator(t *testing.T) {
5051
require.Equal(t, exp, must(db.GetWorkspaceResourceByID(context.Background(), exp.ID)))
5152
})
5253

54+
t.Run("WorkspaceResourceMetadatum", func(t *testing.T) {
55+
t.Parallel()
56+
db := databasefake.New()
57+
exp := dbgen.WorkspaceResourceMetadatums(t, db, database.WorkspaceResourceMetadatum{})
58+
require.Equal(t, exp, must(db.GetWorkspaceResourceMetadataByResourceIDs(context.Background(), []uuid.UUID{exp[0].WorkspaceResourceID})))
59+
})
60+
5361
t.Run("Job", func(t *testing.T) {
5462
t.Parallel()
5563
db := databasefake.New()
@@ -82,6 +90,16 @@ func TestGenerator(t *testing.T) {
8290
require.Equal(t, exp, must(db.GetOrganizationByID(context.Background(), exp.ID)))
8391
})
8492

93+
t.Run("OrganizationMember", func(t *testing.T) {
94+
t.Parallel()
95+
db := databasefake.New()
96+
exp := dbgen.OrganizationMember(t, db, database.OrganizationMember{})
97+
require.Equal(t, exp, must(db.GetOrganizationMemberByUserID(context.Background(), database.GetOrganizationMemberByUserIDParams{
98+
OrganizationID: exp.OrganizationID,
99+
UserID: exp.UserID,
100+
})))
101+
})
102+
85103
t.Run("Workspace", func(t *testing.T) {
86104
t.Parallel()
87105
db := databasefake.New()
@@ -110,6 +128,24 @@ func TestGenerator(t *testing.T) {
110128
require.Equal(t, exp, must(db.GetTemplateVersionByID(context.Background(), exp.ID)))
111129
})
112130

131+
t.Run("ParameterSchema", func(t *testing.T) {
132+
t.Parallel()
133+
db := databasefake.New()
134+
exp := dbgen.ParameterSchema(t, db, database.ParameterSchema{})
135+
require.Equal(t, []database.ParameterSchema{exp}, must(db.GetParameterSchemasByJobID(context.Background(), exp.JobID)))
136+
})
137+
138+
t.Run("ParameterValue", func(t *testing.T) {
139+
t.Parallel()
140+
db := databasefake.New()
141+
exp := dbgen.ParameterValue(t, db, database.ParameterValue{})
142+
require.Equal(t, exp, must(db.GetParameterValueByScopeAndName(context.Background(), database.GetParameterValueByScopeAndNameParams{
143+
Scope: exp.Scope,
144+
ScopeID: exp.ScopeID,
145+
Name: exp.Name,
146+
})))
147+
})
148+
113149
t.Run("WorkspaceBuild", func(t *testing.T) {
114150
t.Parallel()
115151
db := databasefake.New()

coderd/database/dbgen/take.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@ package dbgen
33
import "net"
44

55
func takeFirstIP(values ...net.IPNet) net.IPNet {
6+
takeFirstSlice([]string{})
7+
68
return takeFirstF(values, func(v net.IPNet) bool {
79
return len(v.IP) != 0 && len(v.Mask) != 0
810
})
911
}
1012

11-
// takeFirstBytes implements takeFirst for []byte.
12-
// []byte is not a comparable type.
13-
func takeFirstBytes(values ...[]byte) []byte {
14-
return takeFirstF(values, func(v []byte) bool {
13+
// takeFirstSlice implements takeFirst for []any.
14+
// []any is not a comparable type.
15+
func takeFirstSlice[T any](values ...[]T) []T {
16+
return takeFirstF(values, func(v []T) bool {
1517
return len(v) != 0
1618
})
1719
}

0 commit comments

Comments
 (0)