mirror of
https://github.com/coder/coder.git
synced 2025-07-18 14:17:22 +00:00
chore: Add organizationmember and parameter gen functions (#6007)
This commit is contained in:
@ -40,9 +40,9 @@ func AuditLog(t *testing.T, db database.Store, seed database.AuditLog) database.
|
||||
ResourceID: takeFirst(seed.ResourceID, uuid.New()),
|
||||
ResourceTarget: takeFirst(seed.ResourceTarget, uuid.NewString()),
|
||||
Action: takeFirst(seed.Action, database.AuditActionCreate),
|
||||
Diff: takeFirstBytes(seed.Diff, []byte("{}")),
|
||||
Diff: takeFirstSlice(seed.Diff, []byte("{}")),
|
||||
StatusCode: takeFirst(seed.StatusCode, 200),
|
||||
AdditionalFields: takeFirstBytes(seed.Diff, []byte("{}")),
|
||||
AdditionalFields: takeFirstSlice(seed.Diff, []byte("{}")),
|
||||
RequestID: takeFirst(seed.RequestID, uuid.New()),
|
||||
ResourceIcon: takeFirst(seed.ResourceIcon, ""),
|
||||
})
|
||||
@ -81,7 +81,7 @@ func APIKey(t *testing.T, db database.Store, seed database.APIKey) (key database
|
||||
ID: takeFirst(seed.ID, id),
|
||||
// 0 defaults to 86400 at the db layer
|
||||
LifetimeSeconds: takeFirst(seed.LifetimeSeconds, 0),
|
||||
HashedSecret: takeFirstBytes(seed.HashedSecret, hashed[:]),
|
||||
HashedSecret: takeFirstSlice(seed.HashedSecret, hashed[:]),
|
||||
IPAddress: pqtype.Inet{},
|
||||
UserID: takeFirst(seed.UserID, uuid.New()),
|
||||
LastUsed: takeFirst(seed.LastUsed, time.Now()),
|
||||
@ -109,7 +109,7 @@ func WorkspaceAgent(t *testing.T, db database.Store, orig database.WorkspaceAgen
|
||||
},
|
||||
Architecture: takeFirst(orig.Architecture, "amd64"),
|
||||
EnvironmentVariables: pqtype.NullRawMessage{
|
||||
RawMessage: takeFirstBytes(orig.EnvironmentVariables.RawMessage, []byte("{}")),
|
||||
RawMessage: takeFirstSlice(orig.EnvironmentVariables.RawMessage, []byte("{}")),
|
||||
Valid: takeFirst(orig.EnvironmentVariables.Valid, false),
|
||||
},
|
||||
OperatingSystem: takeFirst(orig.OperatingSystem, "linux"),
|
||||
@ -119,11 +119,11 @@ func WorkspaceAgent(t *testing.T, db database.Store, orig database.WorkspaceAgen
|
||||
},
|
||||
Directory: takeFirst(orig.Directory, ""),
|
||||
InstanceMetadata: pqtype.NullRawMessage{
|
||||
RawMessage: takeFirstBytes(orig.ResourceMetadata.RawMessage, []byte("{}")),
|
||||
RawMessage: takeFirstSlice(orig.ResourceMetadata.RawMessage, []byte("{}")),
|
||||
Valid: takeFirst(orig.ResourceMetadata.Valid, false),
|
||||
},
|
||||
ResourceMetadata: pqtype.NullRawMessage{
|
||||
RawMessage: takeFirstBytes(orig.ResourceMetadata.RawMessage, []byte("{}")),
|
||||
RawMessage: takeFirstSlice(orig.ResourceMetadata.RawMessage, []byte("{}")),
|
||||
Valid: takeFirst(orig.ResourceMetadata.Valid, false),
|
||||
},
|
||||
ConnectionTimeoutSeconds: takeFirst(orig.ConnectionTimeoutSeconds, 3600),
|
||||
@ -163,7 +163,7 @@ func WorkspaceBuild(t *testing.T, db database.Store, orig database.WorkspaceBuil
|
||||
Transition: takeFirst(orig.Transition, database.WorkspaceTransitionStart),
|
||||
InitiatorID: takeFirst(orig.InitiatorID, uuid.New()),
|
||||
JobID: takeFirst(orig.JobID, uuid.New()),
|
||||
ProvisionerState: takeFirstBytes(orig.ProvisionerState, []byte{}),
|
||||
ProvisionerState: takeFirstSlice(orig.ProvisionerState, []byte{}),
|
||||
Deadline: takeFirst(orig.Deadline, time.Now().Add(time.Hour)),
|
||||
Reason: takeFirst(orig.Reason, database.BuildReasonInitiator),
|
||||
})
|
||||
@ -176,10 +176,10 @@ func User(t *testing.T, db database.Store, orig database.User) database.User {
|
||||
ID: takeFirst(orig.ID, uuid.New()),
|
||||
Email: takeFirst(orig.Email, namesgenerator.GetRandomName(1)),
|
||||
Username: takeFirst(orig.Username, namesgenerator.GetRandomName(1)),
|
||||
HashedPassword: takeFirstBytes(orig.HashedPassword, []byte{}),
|
||||
HashedPassword: takeFirstSlice(orig.HashedPassword, []byte{}),
|
||||
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
|
||||
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
|
||||
RBACRoles: []string{},
|
||||
RBACRoles: takeFirstSlice(orig.RBACRoles, []string{}),
|
||||
LoginType: takeFirst(orig.LoginType, database.LoginTypePassword),
|
||||
})
|
||||
require.NoError(t, err, "insert user")
|
||||
@ -198,6 +198,18 @@ func Organization(t *testing.T, db database.Store, orig database.Organization) d
|
||||
return org
|
||||
}
|
||||
|
||||
func OrganizationMember(t *testing.T, db database.Store, orig database.OrganizationMember) database.OrganizationMember {
|
||||
mem, err := db.InsertOrganizationMember(context.Background(), database.InsertOrganizationMemberParams{
|
||||
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
|
||||
UserID: takeFirst(orig.UserID, uuid.New()),
|
||||
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
|
||||
UpdatedAt: takeFirst(orig.UpdatedAt, time.Now()),
|
||||
Roles: takeFirstSlice(orig.Roles, []string{}),
|
||||
})
|
||||
require.NoError(t, err, "insert organization")
|
||||
return mem
|
||||
}
|
||||
|
||||
func Group(t *testing.T, db database.Store, orig database.Group) database.Group {
|
||||
group, err := db.InsertGroup(context.Background(), database.InsertGroupParams{
|
||||
ID: takeFirst(orig.ID, uuid.New()),
|
||||
@ -235,7 +247,7 @@ func ProvisionerJob(t *testing.T, db database.Store, orig database.ProvisionerJo
|
||||
StorageMethod: takeFirst(orig.StorageMethod, database.ProvisionerStorageMethodFile),
|
||||
FileID: takeFirst(orig.FileID, uuid.New()),
|
||||
Type: takeFirst(orig.Type, database.ProvisionerJobTypeWorkspaceBuild),
|
||||
Input: takeFirstBytes(orig.Input, []byte("{}")),
|
||||
Input: takeFirstSlice(orig.Input, []byte("{}")),
|
||||
Tags: orig.Tags,
|
||||
})
|
||||
require.NoError(t, err, "insert job")
|
||||
@ -262,6 +274,17 @@ func WorkspaceResource(t *testing.T, db database.Store, orig database.WorkspaceR
|
||||
return resource
|
||||
}
|
||||
|
||||
func WorkspaceResourceMetadatums(t *testing.T, db database.Store, seed database.WorkspaceResourceMetadatum) []database.WorkspaceResourceMetadatum {
|
||||
meta, err := db.InsertWorkspaceResourceMetadata(context.Background(), database.InsertWorkspaceResourceMetadataParams{
|
||||
WorkspaceResourceID: takeFirst(seed.WorkspaceResourceID, uuid.New()),
|
||||
Key: []string{takeFirst(seed.Key, namesgenerator.GetRandomName(1))},
|
||||
Value: []string{takeFirst(seed.Value.String, namesgenerator.GetRandomName(1))},
|
||||
Sensitive: []bool{takeFirst(seed.Sensitive, false)},
|
||||
})
|
||||
require.NoError(t, err, "insert meta data")
|
||||
return meta
|
||||
}
|
||||
|
||||
func File(t *testing.T, db database.Store, orig database.File) database.File {
|
||||
file, err := db.InsertFile(context.Background(), database.InsertFileParams{
|
||||
ID: takeFirst(orig.ID, uuid.New()),
|
||||
@ -269,7 +292,7 @@ func File(t *testing.T, db database.Store, orig database.File) database.File {
|
||||
CreatedAt: takeFirst(orig.CreatedAt, time.Now()),
|
||||
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
|
||||
Mimetype: takeFirst(orig.Mimetype, "application/x-tar"),
|
||||
Data: takeFirstBytes(orig.Data, []byte{}),
|
||||
Data: takeFirstSlice(orig.Data, []byte{}),
|
||||
})
|
||||
require.NoError(t, err, "insert file")
|
||||
return file
|
||||
@ -307,3 +330,43 @@ func TemplateVersion(t *testing.T, db database.Store, orig database.TemplateVers
|
||||
require.NoError(t, err, "insert template version")
|
||||
return version
|
||||
}
|
||||
|
||||
func ParameterSchema(t *testing.T, db database.Store, seed database.ParameterSchema) database.ParameterSchema {
|
||||
scheme, err := db.InsertParameterSchema(context.Background(), database.InsertParameterSchemaParams{
|
||||
ID: takeFirst(seed.ID, uuid.New()),
|
||||
JobID: takeFirst(seed.JobID, uuid.New()),
|
||||
CreatedAt: takeFirst(seed.CreatedAt, time.Now()),
|
||||
Name: takeFirst(seed.Name, namesgenerator.GetRandomName(1)),
|
||||
Description: takeFirst(seed.Description, namesgenerator.GetRandomName(1)),
|
||||
DefaultSourceScheme: takeFirst(seed.DefaultSourceScheme, database.ParameterSourceSchemeNone),
|
||||
DefaultSourceValue: takeFirst(seed.DefaultSourceValue, ""),
|
||||
AllowOverrideSource: takeFirst(seed.AllowOverrideSource, false),
|
||||
DefaultDestinationScheme: takeFirst(seed.DefaultDestinationScheme, database.ParameterDestinationSchemeNone),
|
||||
AllowOverrideDestination: takeFirst(seed.AllowOverrideDestination, false),
|
||||
DefaultRefresh: takeFirst(seed.DefaultRefresh, ""),
|
||||
RedisplayValue: takeFirst(seed.RedisplayValue, false),
|
||||
ValidationError: takeFirst(seed.ValidationError, ""),
|
||||
ValidationCondition: takeFirst(seed.ValidationCondition, ""),
|
||||
ValidationTypeSystem: takeFirst(seed.ValidationTypeSystem, database.ParameterTypeSystemNone),
|
||||
ValidationValueType: takeFirst(seed.ValidationValueType, ""),
|
||||
Index: takeFirst(seed.Index, 1),
|
||||
})
|
||||
require.NoError(t, err, "insert parameter scheme")
|
||||
return scheme
|
||||
}
|
||||
|
||||
func ParameterValue(t *testing.T, db database.Store, seed database.ParameterValue) database.ParameterValue {
|
||||
scheme, err := db.InsertParameterValue(context.Background(), database.InsertParameterValueParams{
|
||||
ID: takeFirst(seed.ID, uuid.New()),
|
||||
Name: takeFirst(seed.Name, namesgenerator.GetRandomName(1)),
|
||||
CreatedAt: takeFirst(seed.CreatedAt, time.Now()),
|
||||
UpdatedAt: takeFirst(seed.UpdatedAt, time.Now()),
|
||||
Scope: takeFirst(seed.Scope, database.ParameterScopeWorkspace),
|
||||
ScopeID: takeFirst(seed.ScopeID, uuid.New()),
|
||||
SourceScheme: takeFirst(seed.SourceScheme, database.ParameterSourceSchemeNone),
|
||||
SourceValue: takeFirst(seed.SourceValue, ""),
|
||||
DestinationScheme: takeFirst(seed.DestinationScheme, database.ParameterDestinationSchemeNone),
|
||||
})
|
||||
require.NoError(t, err, "insert parameter value")
|
||||
return scheme
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/coder/coder/coderd/database"
|
||||
@ -50,6 +51,13 @@ func TestGenerator(t *testing.T) {
|
||||
require.Equal(t, exp, must(db.GetWorkspaceResourceByID(context.Background(), exp.ID)))
|
||||
})
|
||||
|
||||
t.Run("WorkspaceResourceMetadatum", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := databasefake.New()
|
||||
exp := dbgen.WorkspaceResourceMetadatums(t, db, database.WorkspaceResourceMetadatum{})
|
||||
require.Equal(t, exp, must(db.GetWorkspaceResourceMetadataByResourceIDs(context.Background(), []uuid.UUID{exp[0].WorkspaceResourceID})))
|
||||
})
|
||||
|
||||
t.Run("Job", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := databasefake.New()
|
||||
@ -82,6 +90,16 @@ func TestGenerator(t *testing.T) {
|
||||
require.Equal(t, exp, must(db.GetOrganizationByID(context.Background(), exp.ID)))
|
||||
})
|
||||
|
||||
t.Run("OrganizationMember", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := databasefake.New()
|
||||
exp := dbgen.OrganizationMember(t, db, database.OrganizationMember{})
|
||||
require.Equal(t, exp, must(db.GetOrganizationMemberByUserID(context.Background(), database.GetOrganizationMemberByUserIDParams{
|
||||
OrganizationID: exp.OrganizationID,
|
||||
UserID: exp.UserID,
|
||||
})))
|
||||
})
|
||||
|
||||
t.Run("Workspace", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := databasefake.New()
|
||||
@ -110,6 +128,24 @@ func TestGenerator(t *testing.T) {
|
||||
require.Equal(t, exp, must(db.GetTemplateVersionByID(context.Background(), exp.ID)))
|
||||
})
|
||||
|
||||
t.Run("ParameterSchema", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := databasefake.New()
|
||||
exp := dbgen.ParameterSchema(t, db, database.ParameterSchema{})
|
||||
require.Equal(t, []database.ParameterSchema{exp}, must(db.GetParameterSchemasByJobID(context.Background(), exp.JobID)))
|
||||
})
|
||||
|
||||
t.Run("ParameterValue", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := databasefake.New()
|
||||
exp := dbgen.ParameterValue(t, db, database.ParameterValue{})
|
||||
require.Equal(t, exp, must(db.GetParameterValueByScopeAndName(context.Background(), database.GetParameterValueByScopeAndNameParams{
|
||||
Scope: exp.Scope,
|
||||
ScopeID: exp.ScopeID,
|
||||
Name: exp.Name,
|
||||
})))
|
||||
})
|
||||
|
||||
t.Run("WorkspaceBuild", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
db := databasefake.New()
|
||||
|
@ -3,15 +3,17 @@ package dbgen
|
||||
import "net"
|
||||
|
||||
func takeFirstIP(values ...net.IPNet) net.IPNet {
|
||||
takeFirstSlice([]string{})
|
||||
|
||||
return takeFirstF(values, func(v net.IPNet) bool {
|
||||
return len(v.IP) != 0 && len(v.Mask) != 0
|
||||
})
|
||||
}
|
||||
|
||||
// takeFirstBytes implements takeFirst for []byte.
|
||||
// []byte is not a comparable type.
|
||||
func takeFirstBytes(values ...[]byte) []byte {
|
||||
return takeFirstF(values, func(v []byte) bool {
|
||||
// takeFirstSlice implements takeFirst for []any.
|
||||
// []any is not a comparable type.
|
||||
func takeFirstSlice[T any](values ...[]T) []T {
|
||||
return takeFirstF(values, func(v []T) bool {
|
||||
return len(v) != 0
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user