Skip to content

Commit 88d422f

Browse files
committed
Add system functions
1 parent 837f66a commit 88d422f

File tree

1 file changed

+300
-0
lines changed

1 file changed

+300
-0
lines changed

coderd/authzquery/system_test.go

Lines changed: 300 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
package authzquery_test
2+
3+
import (
4+
"context"
5+
"database/sql"
6+
"testing"
7+
"time"
8+
9+
"github.com/google/uuid"
10+
"github.com/stretchr/testify/require"
11+
12+
"github.com/coder/coder/coderd/database"
13+
"github.com/coder/coder/coderd/database/dbgen"
14+
)
15+
16+
func (suite *MethodTestSuite) TestSystemFunctions() {
17+
suite.Run("UpdateUserLinkedID", func() {
18+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
19+
u := dbgen.User(t, db, database.User{})
20+
l := dbgen.UserLink(t, db, database.UserLink{UserID: u.ID})
21+
return methodCase(inputs(database.UpdateUserLinkedIDParams{
22+
UserID: u.ID,
23+
LinkedID: l.LinkedID,
24+
LoginType: database.LoginTypeGithub,
25+
}), asserts())
26+
})
27+
})
28+
suite.Run("GetUserLinkByLinkedID", func() {
29+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
30+
l := dbgen.UserLink(t, db, database.UserLink{})
31+
return methodCase(inputs(l.LinkedID), asserts())
32+
})
33+
})
34+
suite.Run("GetUserLinkByUserIDLoginType", func() {
35+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
36+
l := dbgen.UserLink(t, db, database.UserLink{})
37+
return methodCase(inputs(database.GetUserLinkByUserIDLoginTypeParams{
38+
UserID: l.UserID,
39+
LoginType: l.LoginType,
40+
}), asserts())
41+
})
42+
})
43+
suite.Run("GetLatestWorkspaceBuilds", func() {
44+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
45+
dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{})
46+
dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{})
47+
return methodCase(inputs(), asserts())
48+
})
49+
})
50+
suite.Run("GetWorkspaceAgentByAuthToken", func() {
51+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
52+
agent := dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{})
53+
return methodCase(inputs(agent.AuthToken), asserts())
54+
})
55+
})
56+
suite.Run("GetActiveUserCount", func() {
57+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
58+
return methodCase(inputs(), asserts())
59+
})
60+
})
61+
suite.Run("GetUnexpiredLicenses", func() {
62+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
63+
return methodCase(inputs(), asserts())
64+
})
65+
})
66+
suite.Run("GetAuthorizationUserRoles", func() {
67+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
68+
u := dbgen.User(t, db, database.User{})
69+
return methodCase(inputs(u.ID), asserts())
70+
})
71+
})
72+
suite.Run("GetDERPMeshKey", func() {
73+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
74+
return methodCase(inputs(), asserts())
75+
})
76+
})
77+
suite.Run("InsertDERPMeshKey", func() {
78+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
79+
return methodCase(inputs("value"), asserts())
80+
})
81+
})
82+
suite.Run("InsertDeploymentID", func() {
83+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
84+
return methodCase(inputs("value"), asserts())
85+
})
86+
})
87+
suite.Run("InsertReplica", func() {
88+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
89+
return methodCase(inputs(database.InsertReplicaParams{
90+
ID: uuid.New(),
91+
}), asserts())
92+
})
93+
})
94+
suite.Run("UpdateReplica", func() {
95+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
96+
replica, err := db.InsertReplica(context.Background(), database.InsertReplicaParams{ID: uuid.New()})
97+
require.NoError(t, err)
98+
return methodCase(inputs(database.UpdateReplicaParams{
99+
ID: replica.ID,
100+
DatabaseLatency: 100,
101+
}), asserts())
102+
})
103+
})
104+
suite.Run("DeleteReplicasUpdatedBefore", func() {
105+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
106+
_, err := db.InsertReplica(context.Background(), database.InsertReplicaParams{ID: uuid.New(), UpdatedAt: time.Now()})
107+
require.NoError(t, err)
108+
return methodCase(inputs(time.Now().Add(time.Hour)), asserts())
109+
})
110+
})
111+
suite.Run("GetReplicasUpdatedAfter", func() {
112+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
113+
_, err := db.InsertReplica(context.Background(), database.InsertReplicaParams{ID: uuid.New(), UpdatedAt: time.Now()})
114+
require.NoError(t, err)
115+
return methodCase(inputs(time.Now().Add(time.Hour*-1)), asserts())
116+
})
117+
})
118+
suite.Run("GetUserCount", func() {
119+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
120+
return methodCase(inputs(), asserts())
121+
})
122+
})
123+
suite.Run("GetTemplates", func() {
124+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
125+
_ = dbgen.Template(t, db, database.Template{})
126+
return methodCase(inputs(), asserts())
127+
})
128+
})
129+
suite.Run("UpdateWorkspaceBuildCostByID", func() {
130+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
131+
b := dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{})
132+
return methodCase(inputs(database.UpdateWorkspaceBuildCostByIDParams{
133+
ID: b.ID,
134+
DailyCost: 10,
135+
}), asserts())
136+
})
137+
})
138+
suite.Run("InsertOrUpdateLastUpdateCheck", func() {
139+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
140+
return methodCase(inputs("value"), asserts())
141+
})
142+
})
143+
suite.Run("GetLastUpdateCheck", func() {
144+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
145+
err := db.InsertOrUpdateLastUpdateCheck(context.Background(), "value")
146+
require.NoError(t, err)
147+
return methodCase(inputs(), asserts())
148+
})
149+
})
150+
suite.Run("GetWorkspaceBuildsCreatedAfter", func() {
151+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
152+
_ = dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{CreatedAt: time.Now().Add(-time.Hour)})
153+
return methodCase(inputs(time.Now()), asserts())
154+
})
155+
})
156+
suite.Run("GetWorkspaceAgentsCreatedAfter", func() {
157+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
158+
_ = dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{CreatedAt: time.Now().Add(-time.Hour)})
159+
return methodCase(inputs(time.Now()), asserts())
160+
})
161+
})
162+
suite.Run("GetWorkspaceAppsCreatedAfter", func() {
163+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
164+
// TODO: Implement this
165+
//_ = dbgen.WorkspaceApp(t, db, database.WorkspaceApp{CreatedAt: time.Now().Add(-time.Hour)})
166+
return methodCase(inputs(time.Now()), asserts())
167+
})
168+
})
169+
suite.Run("GetWorkspaceResourcesCreatedAfter", func() {
170+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
171+
_ = dbgen.WorkspaceResource(t, db, database.WorkspaceResource{CreatedAt: time.Now().Add(-time.Hour)})
172+
return methodCase(inputs(time.Now()), asserts())
173+
})
174+
})
175+
suite.Run("GetWorkspaceResourceMetadataCreatedAfter", func() {
176+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
177+
// TODO: Implement this
178+
//_ = dbgen.database.WorkspaceResourceMetadatum(t, db, database.WorkspaceResourceMetadatum{CreatedAt: time.Now().Add(-time.Hour)})
179+
return methodCase(inputs(time.Now()), asserts())
180+
})
181+
})
182+
suite.Run("DeleteOldAgentStats", func() {
183+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
184+
return methodCase(inputs(), asserts())
185+
})
186+
})
187+
suite.Run("GetParameterSchemasCreatedAfter", func() {
188+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
189+
// TODO: Implement this
190+
//schema := dbgen.ParameterSchema(t, db, database.ParameterSchema{CreatedAt: time.Now().Add(-time.Hour)})
191+
return methodCase(inputs(time.Now()), asserts())
192+
})
193+
})
194+
suite.Run("GetProvisionerJobsCreatedAfter", func() {
195+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
196+
_ = dbgen.ProvisionerJob(t, db, database.ProvisionerJob{CreatedAt: time.Now().Add(-time.Hour)})
197+
return methodCase(inputs(time.Now()), asserts())
198+
})
199+
})
200+
suite.Run("InsertWorkspaceAgent", func() {
201+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
202+
return methodCase(inputs(database.InsertWorkspaceAgentParams{
203+
ID: uuid.New(),
204+
}), asserts())
205+
})
206+
})
207+
suite.Run("InsertWorkspaceApp", func() {
208+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
209+
return methodCase(inputs(database.InsertWorkspaceAppParams{
210+
ID: uuid.New(),
211+
Health: database.WorkspaceAppHealthDisabled,
212+
SharingLevel: database.AppSharingLevelOwner,
213+
}), asserts())
214+
})
215+
})
216+
suite.Run("InsertWorkspaceResourceMetadata", func() {
217+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
218+
return methodCase(inputs(database.InsertWorkspaceResourceMetadataParams{
219+
WorkspaceResourceID: uuid.New(),
220+
}), asserts())
221+
})
222+
})
223+
suite.Run("AcquireProvisionerJob", func() {
224+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
225+
j := dbgen.ProvisionerJob(t, db, database.ProvisionerJob{
226+
StartedAt: sql.NullTime{Valid: false},
227+
})
228+
return methodCase(inputs(database.AcquireProvisionerJobParams{Types: []database.ProvisionerType{j.Provisioner}}), asserts())
229+
})
230+
})
231+
suite.Run("UpdateProvisionerJobWithCompleteByID", func() {
232+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
233+
j := dbgen.ProvisionerJob(t, db, database.ProvisionerJob{})
234+
return methodCase(inputs(database.UpdateProvisionerJobWithCompleteByIDParams{
235+
ID: j.ID,
236+
}), asserts())
237+
})
238+
})
239+
suite.Run("UpdateProvisionerJobByID", func() {
240+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
241+
j := dbgen.ProvisionerJob(t, db, database.ProvisionerJob{})
242+
return methodCase(inputs(database.UpdateProvisionerJobByIDParams{
243+
ID: j.ID,
244+
UpdatedAt: time.Now(),
245+
}), asserts())
246+
})
247+
})
248+
suite.Run("InsertProvisionerJob", func() {
249+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
250+
return methodCase(inputs(database.InsertProvisionerJobParams{
251+
ID: uuid.New(),
252+
Provisioner: database.ProvisionerTypeEcho,
253+
StorageMethod: database.ProvisionerStorageMethodFile,
254+
Type: database.ProvisionerJobTypeWorkspaceBuild,
255+
}), asserts())
256+
})
257+
})
258+
suite.Run("InsertProvisionerJobLogs", func() {
259+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
260+
j := dbgen.ProvisionerJob(t, db, database.ProvisionerJob{})
261+
return methodCase(inputs(database.InsertProvisionerJobLogsParams{
262+
JobID: j.ID,
263+
}), asserts())
264+
})
265+
})
266+
suite.Run("InsertProvisionerDaemon", func() {
267+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
268+
return methodCase(inputs(database.InsertProvisionerDaemonParams{
269+
ID: uuid.New(),
270+
}), asserts())
271+
})
272+
})
273+
suite.Run("InsertTemplateVersionParameter", func() {
274+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
275+
v := dbgen.TemplateVersion(t, db, database.TemplateVersion{})
276+
return methodCase(inputs(database.InsertTemplateVersionParameterParams{
277+
TemplateVersionID: v.ID,
278+
}), asserts())
279+
})
280+
})
281+
suite.Run("InsertWorkspaceResource", func() {
282+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
283+
r := dbgen.WorkspaceResource(t, db, database.WorkspaceResource{})
284+
return methodCase(inputs(database.InsertWorkspaceResourceParams{
285+
ID: r.ID,
286+
Transition: database.WorkspaceTransitionStart,
287+
}), asserts())
288+
})
289+
})
290+
suite.Run("InsertParameterSchema", func() {
291+
suite.RunMethodTest(func(t *testing.T, db database.Store) MethodCase {
292+
return methodCase(inputs(database.InsertParameterSchemaParams{
293+
ID: uuid.New(),
294+
DefaultSourceScheme: database.ParameterSourceSchemeNone,
295+
DefaultDestinationScheme: database.ParameterDestinationSchemeNone,
296+
ValidationTypeSystem: database.ParameterTypeSystemNone,
297+
}), asserts())
298+
})
299+
})
300+
}

0 commit comments

Comments
 (0)