MCPcopy Index your code
hub / github.com/coder/coder / TestWorkspaceBuildUsageChecker

Function TestWorkspaceBuildUsageChecker

coderd/wsbuilder/wsbuilder_test.go:1053–1164  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1051}
1052
1053func TestWorkspaceBuildUsageChecker(t *testing.T) {
1054 t.Parallel()
1055
1056 t.Run("Permitted", func(t *testing.T) {
1057 t.Parallel()
1058
1059 ctx, cancel := context.WithCancel(context.Background())
1060 defer cancel()
1061
1062 var calls atomic.Int64
1063 fakeUsageChecker := &fakeUsageChecker{
1064 checkBuildUsageFunc: func(_ context.Context, _ database.Store, _ *database.TemplateVersion, _ *database.Task, _ database.WorkspaceTransition) (wsbuilder.UsageCheckResponse, error) {
1065 calls.Add(1)
1066 return wsbuilder.UsageCheckResponse{Permitted: true}, nil
1067 },
1068 }
1069
1070 mDB := expectDB(t,
1071 // Inputs
1072 withTemplate,
1073 withInactiveVersion(nil),
1074 withLastBuildFound,
1075 withLastBuildState,
1076 withTemplateVersionVariables(inactiveVersionID, nil),
1077 withRichParameters(nil),
1078 withParameterSchemas(inactiveJobID, nil),
1079 withWorkspaceTags(inactiveVersionID, nil),
1080 withProvisionerDaemons([]database.GetEligibleProvisionerDaemonsByProvisionerJobIDsRow{}),
1081
1082 // Outputs
1083 expectProvisionerJob(func(job database.InsertProvisionerJobParams) {}),
1084 withInTx,
1085 expectFindMatchingPresetID(uuid.Nil, sql.ErrNoRows),
1086 expectBuild(func(bld database.InsertWorkspaceBuildParams) {}),
1087 withBuild,
1088 withNoTask,
1089 expectBuildParameters(func(params database.InsertWorkspaceBuildParametersParams) {}),
1090 )
1091 fc := files.New(prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
1092
1093 ws := database.Workspace{ID: workspaceID, TemplateID: templateID, OwnerID: userID}
1094 uut := wsbuilder.New(ws, database.WorkspaceTransitionStart, fakeUsageChecker)
1095 // nolint: dogsled
1096 _, _, _, err := uut.Build(ctx, mDB, fc, nil, audit.WorkspaceBuildBaggage{})
1097 require.NoError(t, err)
1098 require.EqualValues(t, 1, calls.Load())
1099 })
1100
1101 // The failure cases are mostly identical from a test perspective.
1102 const message = "fake test message"
1103 cases := []struct {
1104 name string
1105 response wsbuilder.UsageCheckResponse
1106 responseErr error
1107 assertions func(t *testing.T, err error)
1108 }{
1109 {
1110 name: "NotPermitted",

Callers

nothing calls this directly

Calls 15

NewFunction · 0.92
NewFunction · 0.92
expectDBFunction · 0.85
withInactiveVersionFunction · 0.85
withRichParametersFunction · 0.85
withParameterSchemasFunction · 0.85
withWorkspaceTagsFunction · 0.85
withProvisionerDaemonsFunction · 0.85
expectProvisionerJobFunction · 0.85
expectBuildFunction · 0.85

Tested by

no test coverage detected