Skip to content

Commit d03aea9

Browse files
committed
Fix tests
1 parent f305ad2 commit d03aea9

File tree

3 files changed

+83
-31
lines changed

3 files changed

+83
-31
lines changed

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4959,13 +4959,44 @@ func (s *MethodTestSuite) TestPrebuilds() {
49594959
template, policy.ActionUse,
49604960
).Errors(sql.ErrNoRows)
49614961
}))
4962-
s.Run("FindMatchingPresetID", s.Subtest(func(db database.Store, check *expects) {
4962+
s.Run("FindMatchingPresetID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
4963+
t1 := testutil.Fake(s.T(), faker, database.Template{})
4964+
tv := testutil.Fake(s.T(), faker, database.TemplateVersion{TemplateID: uuid.NullUUID{UUID: t1.ID, Valid: true}})
4965+
dbm.EXPECT().FindMatchingPresetID(gomock.Any(), database.FindMatchingPresetIDParams{
4966+
TemplateVersionID: tv.ID,
4967+
ParameterNames: []string{"test"},
4968+
ParameterValues: []string{"test"},
4969+
}).Return(uuid.Nil, nil).AnyTimes()
4970+
dbm.EXPECT().GetTemplateVersionByID(gomock.Any(), tv.ID).Return(tv, nil).AnyTimes()
4971+
dbm.EXPECT().GetTemplateByID(gomock.Any(), t1.ID).Return(t1, nil).AnyTimes()
49634972
check.Args(database.FindMatchingPresetIDParams{
4964-
TemplateVersionID: uuid.New(),
4973+
TemplateVersionID: tv.ID,
49654974
ParameterNames: []string{"test"},
49664975
ParameterValues: []string{"test"},
4967-
}).Asserts(rbac.ResourceTemplate, policy.ActionRead)
4968-
}))
4976+
}).Asserts(tv.RBACObject(t1), policy.ActionRead).Returns(uuid.Nil)
4977+
}))
4978+
// s.Run("FindMatchingPresetID", s.Subtest(func(db database.Store, check *expects) {
4979+
// org := dbgen.Organization(s.T(), db, database.Organization{})
4980+
// user := dbgen.User(s.T(), db, database.User{})
4981+
// templateVersion := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
4982+
// OrganizationID: org.ID,
4983+
// CreatedBy: user.ID,
4984+
// })
4985+
// template := dbgen.Template(s.T(), db, database.Template{
4986+
// OrganizationID: org.ID,
4987+
// CreatedBy: user.ID,
4988+
// ActiveVersionID: templateVersion.ID,
4989+
// })
4990+
// db.UpdateTemplateActiveVersionByID(context.Background(), database.UpdateTemplateActiveVersionByIDParams{
4991+
// ID: template.ID,
4992+
// ActiveVersionID: templateVersion.ID,
4993+
// })
4994+
// check.Args(database.FindMatchingPresetIDParams{
4995+
// TemplateVersionID: templateVersion.ID,
4996+
// ParameterNames: []string{"test"},
4997+
// ParameterValues: []string{"test"},
4998+
// }).Asserts(templateVersion.RBACObject(template), policy.ActionRead)
4999+
// }))
49695000
s.Run("GetPrebuildMetrics", s.Subtest(func(_ database.Store, check *expects) {
49705001
check.Args().
49715002
Asserts(rbac.ResourceWorkspace.All(), policy.ActionRead)

coderd/workspacebuilds_test.go

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,45 +1638,59 @@ func TestPostWorkspaceBuild(t *testing.T) {
16381638

16391639
t.Run("SetsPresetID", func(t *testing.T) {
16401640
t.Parallel()
1641+
ctx := testutil.Context(t, testutil.WaitLong)
1642+
16411643
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
16421644
user := coderdtest.CreateFirstUser(t, client)
16431645
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
16441646
Parse: echo.ParseComplete,
16451647
ProvisionPlan: []*proto.Response{{
16461648
Type: &proto.Response_Plan{
16471649
Plan: &proto.PlanComplete{
1648-
Presets: []*proto.Preset{{
1649-
Name: "test",
1650-
}},
1650+
Presets: []*proto.Preset{
1651+
{
1652+
Name: "autodetected",
1653+
},
1654+
{
1655+
Name: "manual",
1656+
Parameters: []*proto.PresetParameter{
1657+
{
1658+
Name: "param1",
1659+
Value: "value1",
1660+
},
1661+
},
1662+
},
1663+
},
16511664
},
16521665
},
16531666
}},
16541667
ProvisionApply: echo.ApplyComplete,
16551668
})
16561669
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
16571670
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
1658-
workspace := coderdtest.CreateWorkspace(t, client, template.ID)
1659-
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
1660-
require.Nil(t, workspace.LatestBuild.TemplateVersionPresetID)
1661-
1662-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1663-
defer cancel()
16641671

16651672
presets, err := client.TemplateVersionPresets(ctx, version.ID)
16661673
require.NoError(t, err)
1667-
require.Equal(t, 1, len(presets))
1668-
require.Equal(t, "test", presets[0].Name)
1674+
require.Equal(t, 2, len(presets))
1675+
require.Equal(t, "autodetected", presets[0].Name)
1676+
require.Equal(t, "manual", presets[1].Name)
1677+
1678+
workspace := coderdtest.CreateWorkspace(t, client, template.ID)
1679+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
1680+
// Preset ID was detected based on the workspace parameters:
1681+
require.Equal(t, presets[0].ID, *workspace.LatestBuild.TemplateVersionPresetID)
16691682

16701683
build, err := client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
16711684
TemplateVersionID: version.ID,
16721685
Transition: codersdk.WorkspaceTransitionStart,
1673-
TemplateVersionPresetID: presets[0].ID,
1686+
TemplateVersionPresetID: presets[1].ID,
16741687
})
16751688
require.NoError(t, err)
16761689
require.NotNil(t, build.TemplateVersionPresetID)
16771690

16781691
workspace, err = client.Workspace(ctx, workspace.ID)
16791692
require.NoError(t, err)
1693+
require.Equal(t, presets[1].ID, *workspace.LatestBuild.TemplateVersionPresetID)
16801694
require.Equal(t, build.TemplateVersionPresetID, workspace.LatestBuild.TemplateVersionPresetID)
16811695
})
16821696

coderd/wsbuilder/wsbuilder_test.go

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ func TestBuilder_NoOptions(t *testing.T) {
8282
}),
8383

8484
withInTx,
85+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
8586
expectBuild(func(bld database.InsertWorkspaceBuildParams) {
8687
asrt.Equal(inactiveVersionID, bld.TemplateVersionID)
8788
asrt.Equal(workspaceID, bld.WorkspaceID)
@@ -132,6 +133,7 @@ func TestBuilder_Initiator(t *testing.T) {
132133
asrt.Equal(otherUserID, job.InitiatorID)
133134
}),
134135
withInTx,
136+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
135137
expectBuild(func(bld database.InsertWorkspaceBuildParams) {
136138
asrt.Equal(otherUserID, bld.InitiatorID)
137139
}),
@@ -180,6 +182,7 @@ func TestBuilder_Baggage(t *testing.T) {
180182
asrt.Contains(string(job.TraceMetadata.RawMessage), "ip=127.0.0.1")
181183
}),
182184
withInTx,
185+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
183186
expectBuild(func(bld database.InsertWorkspaceBuildParams) {
184187
}),
185188
expectBuildParameters(func(params database.InsertWorkspaceBuildParametersParams) {
@@ -219,6 +222,7 @@ func TestBuilder_Reason(t *testing.T) {
219222
expectProvisionerJob(func(_ database.InsertProvisionerJobParams) {
220223
}),
221224
withInTx,
225+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
222226
expectBuild(func(bld database.InsertWorkspaceBuildParams) {
223227
asrt.Equal(database.BuildReasonAutostart, bld.Reason)
224228
}),
@@ -261,6 +265,7 @@ func TestBuilder_ActiveVersion(t *testing.T) {
261265
}),
262266

263267
withInTx,
268+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
264269
expectBuild(func(bld database.InsertWorkspaceBuildParams) {
265270
asrt.Equal(activeVersionID, bld.TemplateVersionID)
266271
// no previous build...
@@ -386,10 +391,8 @@ func TestWorkspaceBuildWithTags(t *testing.T) {
386391
expectBuildParameters(func(_ database.InsertWorkspaceBuildParametersParams) {
387392
}),
388393
withBuild,
394+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
389395
)
390-
mDB.EXPECT().FindMatchingPresetID(gomock.Any(), gomock.Any()).
391-
Times(1).
392-
Return(uuid.Nil, sql.ErrNoRows)
393396
fc := files.New(prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
394397

395398
ws := database.Workspace{ID: workspaceID, TemplateID: templateID, OwnerID: userID}
@@ -473,10 +476,8 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
473476
}
474477
}),
475478
withBuild,
479+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
476480
)
477-
mDB.EXPECT().FindMatchingPresetID(gomock.Any(), gomock.Any()).
478-
Times(1).
479-
Return(uuid.Nil, sql.ErrNoRows)
480481
fc := files.New(prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
481482

482483
ws := database.Workspace{ID: workspaceID, TemplateID: templateID, OwnerID: userID}
@@ -525,10 +526,8 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
525526
}
526527
}),
527528
withBuild,
529+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
528530
)
529-
mDB.EXPECT().FindMatchingPresetID(gomock.Any(), gomock.Any()).
530-
Times(1).
531-
Return(uuid.Nil, sql.ErrNoRows)
532531
fc := files.New(prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
533532

534533
ws := database.Workspace{ID: workspaceID, TemplateID: templateID, OwnerID: userID}
@@ -670,10 +669,8 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
670669
}
671670
}),
672671
withBuild,
672+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
673673
)
674-
mDB.EXPECT().FindMatchingPresetID(gomock.Any(), gomock.Any()).
675-
Times(1).
676-
Return(uuid.Nil, sql.ErrNoRows)
677674
fc := files.New(prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
678675

679676
ws := database.Workspace{ID: workspaceID, TemplateID: templateID, OwnerID: userID}
@@ -725,6 +722,7 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
725722
withProvisionerDaemons([]database.GetEligibleProvisionerDaemonsByProvisionerJobIDsRow{}),
726723

727724
// Outputs
725+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
728726
expectProvisionerJob(func(job database.InsertProvisionerJobParams) {}),
729727
withInTx,
730728
expectBuild(func(bld database.InsertWorkspaceBuildParams) {}),
@@ -738,9 +736,6 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
738736
}),
739737
withBuild,
740738
)
741-
mDB.EXPECT().FindMatchingPresetID(gomock.Any(), gomock.Any()).
742-
Times(1).
743-
Return(uuid.Nil, sql.ErrNoRows)
744739
fc := files.New(prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
745740

746741
ws := database.Workspace{ID: workspaceID, TemplateID: templateID, OwnerID: userID}
@@ -790,6 +785,7 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
790785
withProvisionerDaemons([]database.GetEligibleProvisionerDaemonsByProvisionerJobIDsRow{}),
791786

792787
// Outputs
788+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
793789
expectProvisionerJob(func(job database.InsertProvisionerJobParams) {}),
794790
withInTx,
795791
expectBuild(func(bld database.InsertWorkspaceBuildParams) {}),
@@ -921,6 +917,7 @@ func TestWorkspaceBuildDeleteOrphan(t *testing.T) {
921917
}),
922918

923919
withInTx,
920+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
924921
expectBuild(func(bld database.InsertWorkspaceBuildParams) {
925922
asrt.Equal(inactiveVersionID, bld.TemplateVersionID)
926923
asrt.Equal(workspaceID, bld.WorkspaceID)
@@ -983,6 +980,7 @@ func TestWorkspaceBuildDeleteOrphan(t *testing.T) {
983980
}),
984981

985982
withInTx,
983+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
986984
expectBuild(func(bld database.InsertWorkspaceBuildParams) {
987985
asrt.Equal(inactiveVersionID, bld.TemplateVersionID)
988986
asrt.Equal(workspaceID, bld.WorkspaceID)
@@ -1056,6 +1054,7 @@ func TestWorkspaceBuildUsageChecker(t *testing.T) {
10561054
// Outputs
10571055
expectProvisionerJob(func(job database.InsertProvisionerJobParams) {}),
10581056
withInTx,
1057+
expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
10591058
expectBuild(func(bld database.InsertWorkspaceBuildParams) {}),
10601059
withBuild,
10611060
expectBuildParameters(func(params database.InsertWorkspaceBuildParametersParams) {}),
@@ -1500,6 +1499,14 @@ func withProvisionerDaemons(provisionerDaemons []database.GetEligibleProvisioner
15001499
}
15011500
}
15021501

1502+
func expectFindMatchingPresetID(id uuid.UUID, err error) func(mTx *dbmock.MockStore) {
1503+
return func(mTx *dbmock.MockStore) {
1504+
mTx.EXPECT().FindMatchingPresetID(gomock.Any(), gomock.Any()).
1505+
Times(1).
1506+
Return(id, err)
1507+
}
1508+
}
1509+
15031510
type fakeUsageChecker struct {
15041511
checkBuildUsageFunc func(ctx context.Context, store database.Store, templateVersion *database.TemplateVersion) (wsbuilder.UsageCheckResponse, error)
15051512
}

0 commit comments

Comments
 (0)