Skip to content

feat: add dbfake for workspace builds and resources #10426

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Nov 2, 2023
Prev Previous commit
Next Next commit
Try to fix tests
  • Loading branch information
kylecarbs committed Nov 1, 2023
commit 0422e417ebacb189e141c0e8f141702f6eb6eebd
38 changes: 20 additions & 18 deletions coderd/database/dbfake/dbfake.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
"github.com/coder/coder/v2/coderd/database/dbtime"
"github.com/coder/coder/v2/coderd/provisionerdserver"
"github.com/coder/coder/v2/coderd/telemetry"
"github.com/coder/coder/v2/provisionersdk/proto"
sdkproto "github.com/coder/coder/v2/provisionersdk/proto"
)

Expand Down Expand Up @@ -43,12 +42,12 @@ func WorkspaceWithAgent(t testing.TB, db database.Store, seed database.Workspace
t.Helper()
authToken := uuid.NewString()
ws := Workspace(t, db, seed)
WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &sdkproto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
Agents: []*sdkproto.Agent{{
Id: uuid.NewString(),
Auth: &proto.Agent_Token{
Auth: &sdkproto.Agent_Token{
Token: authToken,
},
}},
Expand All @@ -60,8 +59,25 @@ func WorkspaceWithAgent(t testing.TB, db database.Store, seed database.Workspace
func WorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace, seed database.WorkspaceBuild, resources ...*sdkproto.Resource) database.WorkspaceBuild {
t.Helper()
jobID := uuid.New()
seed.ID = uuid.New()
seed.JobID = jobID
seed.WorkspaceID = ws.ID

// Create a provisioner job for the build!
payload, err := json.Marshal(provisionerdserver.WorkspaceProvisionJob{
WorkspaceBuildID: seed.ID,
})
require.NoError(t, err)
job := dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{
ID: jobID,
Input: payload,
OrganizationID: ws.OrganizationID,
CompletedAt: sql.NullTime{
Time: dbtime.Now(),
Valid: true,
},
})

// This intentionally fulfills the minimum requirements of the schema.
// Tests can provide a custom version ID if necessary.
if seed.TemplateVersionID == uuid.Nil {
Expand Down Expand Up @@ -91,20 +107,6 @@ func WorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace, seed
seed.TemplateVersionID = templateVersion.ID
}
build := dbgen.WorkspaceBuild(t, db, seed)

payload, err := json.Marshal(provisionerdserver.WorkspaceProvisionJob{
WorkspaceBuildID: build.ID,
})
require.NoError(t, err)
job := dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{
ID: jobID,
Input: payload,
OrganizationID: ws.OrganizationID,
CompletedAt: sql.NullTime{
Time: dbtime.Now(),
Valid: true,
},
})
ProvisionerJobResources(t, db, job.ID, seed.Transition, resources...)
return build
}
Expand Down
3 changes: 0 additions & 3 deletions coderd/database/dbgen/dbgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,9 +395,6 @@ func ProvisionerJob(t testing.TB, db database.Store, ps pubsub.Pubsub, orig data
require.NoError(t, err)
}

job, err = db.GetProvisionerJobByID(genCtx, jobID)
require.NoError(t, err)

return job
}

Expand Down
6 changes: 0 additions & 6 deletions coderd/workspaceagents_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,8 @@ func TestWorkspaceAgent(t *testing.T) {
SshHelper: true,
}
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{
{
Id: uuid.NewString(),
Directory: tmpDir,
Auth: &proto.Agent_Token{
Token: authToken,
Expand Down Expand Up @@ -196,11 +193,8 @@ func TestWorkspaceAgent(t *testing.T) {
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{
{
Id: uuid.NewString(),
Directory: tmpDir,
Auth: &proto.Agent_Token{
Token: authToken,
Expand Down