diff --git a/cli/agent_test.go b/cli/agent_test.go index 1f366da8b4ced..6d43e088b04a7 100644 --- a/cli/agent_test.go +++ b/cli/agent_test.go @@ -69,7 +69,7 @@ func TestWorkspaceAgent(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: user.UserID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "somename", Type: "someinstance", Agents: []*proto.Agent{{ @@ -77,7 +77,7 @@ func TestWorkspaceAgent(t *testing.T) { InstanceId: instanceID, }, }}, - }) + }).Do() inv, _ := clitest.New(t, "agent", "--auth", "azure-instance-identity", "--agent-url", client.URL.String()) inv = inv.WithContext( @@ -112,7 +112,7 @@ func TestWorkspaceAgent(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: user.UserID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "somename", Type: "someinstance", Agents: []*proto.Agent{{ @@ -120,7 +120,7 @@ func TestWorkspaceAgent(t *testing.T) { InstanceId: instanceID, }, }}, - }) + }).Do() inv, _ := clitest.New(t, "agent", "--auth", "aws-instance-identity", "--agent-url", client.URL.String()) inv = inv.WithContext( @@ -156,7 +156,7 @@ func TestWorkspaceAgent(t *testing.T) { OrganizationID: owner.OrganizationID, OwnerID: memberUser.ID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "somename", Type: "someinstance", Agents: []*proto.Agent{{ @@ -164,7 +164,7 @@ func TestWorkspaceAgent(t *testing.T) { InstanceId: instanceID, }, }}, - }) + }).Do() inv, cfg := clitest.New(t, "agent", "--auth", "google-instance-identity", "--agent-url", client.URL.String()) clitest.SetupConfig(t, member, cfg) diff --git a/cli/configssh_test.go b/cli/configssh_test.go index d9ac073665108..c0d93836194c4 100644 --- a/cli/configssh_test.go +++ b/cli/configssh_test.go @@ -696,7 +696,7 @@ func TestConfigSSH_Hostnames(t *testing.T) { OrganizationID: owner.OrganizationID, OwnerID: memberUser.ID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, resources...) + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(resources...).Do() sshConfigFile := sshConfigFileName(t) inv, root := clitest.New(t, "config-ssh", "--ssh-config-file", sshConfigFile) diff --git a/cli/ssh_test.go b/cli/ssh_test.go index a58811b26baa2..ec88cfad5a59a 100644 --- a/cli/ssh_test.go +++ b/cli/ssh_test.go @@ -151,7 +151,7 @@ func TestSSH(t *testing.T) { pty.WriteLine("echo hell'o'") pty.ExpectMatchContext(ctx, "hello") - _ = dbfake.WorkspaceBuildBuilder(t, store, workspace). + _ = dbfake.NewWorkspaceBuildBuilder(t, store, workspace). Seed(database.WorkspaceBuild{ Transition: database.WorkspaceTransitionStop, BuildNumber: 2, @@ -520,7 +520,7 @@ func TestSSH(t *testing.T) { err = session.Shell() require.NoError(t, err) - _ = dbfake.WorkspaceBuildBuilder(t, store, workspace). + _ = dbfake.NewWorkspaceBuildBuilder(t, store, workspace). Seed(database.WorkspaceBuild{ Transition: database.WorkspaceTransitionStop, BuildNumber: 2, diff --git a/coderd/database/dbfake/dbfake.go b/coderd/database/dbfake/dbfake.go index 85164da329d6f..671e446056295 100644 --- a/coderd/database/dbfake/dbfake.go +++ b/coderd/database/dbfake/dbfake.go @@ -59,15 +59,15 @@ func WorkspaceWithAgent( agents = m(agents) } ws := Workspace(t, db, seed) - WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &sdkproto.Resource{ + NewWorkspaceBuildBuilder(t, db, ws).Resource(&sdkproto.Resource{ Name: "example", Type: "aws_instance", Agents: agents, - }) + }).Do() return ws, authToken } -type BuildBuilder struct { +type WorkspaceBuildBuilder struct { t testing.TB db database.Store ps pubsub.Pubsub @@ -76,29 +76,29 @@ type BuildBuilder struct { resources []*sdkproto.Resource } -func WorkspaceBuildBuilder(t testing.TB, db database.Store, ws database.Workspace) BuildBuilder { - return BuildBuilder{t: t, db: db, ws: ws} +func NewWorkspaceBuildBuilder(t testing.TB, db database.Store, ws database.Workspace) WorkspaceBuildBuilder { + return WorkspaceBuildBuilder{t: t, db: db, ws: ws} } -func (b BuildBuilder) Pubsub(ps pubsub.Pubsub) BuildBuilder { +func (b WorkspaceBuildBuilder) Pubsub(ps pubsub.Pubsub) WorkspaceBuildBuilder { //nolint: revive // returns modified struct b.ps = ps return b } -func (b BuildBuilder) Seed(seed database.WorkspaceBuild) BuildBuilder { +func (b WorkspaceBuildBuilder) Seed(seed database.WorkspaceBuild) WorkspaceBuildBuilder { //nolint: revive // returns modified struct b.seed = seed return b } -func (b BuildBuilder) Resource(resource *sdkproto.Resource) BuildBuilder { +func (b WorkspaceBuildBuilder) Resource(resource ...*sdkproto.Resource) WorkspaceBuildBuilder { //nolint: revive // returns modified struct - b.resources = append(b.resources, resource) + b.resources = append(b.resources, resource...) return b } -func (b BuildBuilder) Do() database.WorkspaceBuild { +func (b WorkspaceBuildBuilder) Do() database.WorkspaceBuild { b.t.Helper() jobID := uuid.New() b.seed.ID = uuid.New() @@ -177,15 +177,6 @@ func (b BuildBuilder) Do() database.WorkspaceBuild { return build } -// WorkspaceBuild inserts a build and a successful job into the database. -func WorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace, seed database.WorkspaceBuild, resources ...*sdkproto.Resource) database.WorkspaceBuild { - b := WorkspaceBuildBuilder(t, db, ws).Seed(seed) - for _, r := range resources { - b = b.Resource(r) - } - return b.Do() -} - // ProvisionerJobResources inserts a series of resources into a provisioner job. func ProvisionerJobResources(t testing.TB, db database.Store, job uuid.UUID, transition database.WorkspaceTransition, resources ...*sdkproto.Resource) { t.Helper() diff --git a/coderd/workspaceagents_test.go b/coderd/workspaceagents_test.go index e0c4c7f45ee4c..72cbe6fdcf26d 100644 --- a/coderd/workspaceagents_test.go +++ b/coderd/workspaceagents_test.go @@ -50,13 +50,13 @@ func TestWorkspaceAgent(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: anotherUser.ID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "aws_instance", Agents: []*proto.Agent{{ Id: uuid.NewString(), Directory: tmpDir, }}, - }) + }).Do() ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) defer cancel() workspace, err := anotherClient.Workspace(ctx, ws.ID) @@ -75,13 +75,13 @@ func TestWorkspaceAgent(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: user.UserID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "aws_instance", Agents: []*proto.Agent{{ Id: uuid.NewString(), Directory: tmpDir, }}, - }) + }).Do() ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium) defer cancel() @@ -107,7 +107,7 @@ func TestWorkspaceAgent(t *testing.T) { OwnerID: user.UserID, OrganizationID: user.OrganizationID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "example", Type: "aws_instance", Agents: []*proto.Agent{{ @@ -119,7 +119,7 @@ func TestWorkspaceAgent(t *testing.T) { ConnectionTimeoutSeconds: 1, TroubleshootingUrl: wantTroubleshootingURL, }}, - }) + }).Do() ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium) defer cancel() @@ -156,7 +156,7 @@ func TestWorkspaceAgent(t *testing.T) { PortForwardingHelper: true, SshHelper: true, } - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Agents: []*proto.Agent{ { Directory: tmpDir, @@ -166,7 +166,7 @@ func TestWorkspaceAgent(t *testing.T) { DisplayApps: apps, }, }, - }) + }).Do() ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) defer cancel() @@ -196,7 +196,7 @@ func TestWorkspaceAgent(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: user.UserID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Agents: []*proto.Agent{ { Directory: tmpDir, @@ -206,7 +206,7 @@ func TestWorkspaceAgent(t *testing.T) { DisplayApps: apps, }, }, - }) + }).Do() workspace, err = client.Workspace(ctx, ws.ID) require.NoError(t, err) @@ -543,14 +543,14 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) { OwnerID: user.UserID, }) authToken := uuid.NewString() - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Agents: []*proto.Agent{{ Apps: apps, Auth: &proto.Agent_Token{ Token: authToken, }, }}, - }) + }).Do() _ = agenttest.New(t, client.URL, authToken) resources := coderdtest.AwaitWorkspaceAgents(t, client, ws.ID) return client, uint16(coderdPort), resources[0].Agents[0].ID @@ -776,7 +776,7 @@ func TestWorkspaceAgentAppHealth(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: user.UserID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "example", Type: "aws_instance", Agents: []*proto.Agent{{ @@ -786,7 +786,7 @@ func TestWorkspaceAgentAppHealth(t *testing.T) { }, Apps: apps, }}, - }) + }).Do() ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) defer cancel() @@ -958,7 +958,7 @@ func TestWorkspaceAgent_Metadata(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: user.UserID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "example", Type: "aws_instance", Agents: []*proto.Agent{{ @@ -990,7 +990,7 @@ func TestWorkspaceAgent_Metadata(t *testing.T) { Token: authToken, }, }}, - }) + }).Do() workspace, err := client.Workspace(context.Background(), ws.ID) require.NoError(t, err) for _, res := range workspace.LatestBuild.Resources { @@ -1141,7 +1141,7 @@ func TestWorkspaceAgent_Metadata_CatchMemoryLeak(t *testing.T) { OrganizationID: user.OrganizationID, OwnerID: user.UserID, }) - dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{ + dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{ Name: "example", Type: "aws_instance", Agents: []*proto.Agent{{ @@ -1166,7 +1166,7 @@ func TestWorkspaceAgent_Metadata_CatchMemoryLeak(t *testing.T) { Token: authToken, }, }}, - }) + }).Do() workspace, err := client.Workspace(context.Background(), ws.ID) require.NoError(t, err) for _, res := range workspace.LatestBuild.Resources {