@@ -16,8 +16,9 @@ import (
16
16
"github.com/coder/coder/v2/agent"
17
17
"github.com/coder/coder/v2/cli/clitest"
18
18
"github.com/coder/coder/v2/coderd/coderdtest"
19
+ "github.com/coder/coder/v2/coderd/database"
20
+ "github.com/coder/coder/v2/coderd/database/dbfake"
19
21
"github.com/coder/coder/v2/codersdk"
20
- "github.com/coder/coder/v2/provisioner/echo"
21
22
"github.com/coder/coder/v2/provisionersdk/proto"
22
23
"github.com/coder/coder/v2/pty/ptytest"
23
24
)
@@ -28,20 +29,12 @@ func TestWorkspaceAgent(t *testing.T) {
28
29
t .Run ("LogDirectory" ,func (t * testing.T ) {
29
30
t .Parallel ()
30
31
31
- authToken := uuid .NewString ()
32
- client := coderdtest .New (t ,& coderdtest.Options {
33
- IncludeProvisionerDaemon :true ,
34
- })
32
+ client ,db := coderdtest .NewWithDatabase (t ,nil )
35
33
user := coderdtest .CreateFirstUser (t ,client )
36
- version := coderdtest . CreateTemplateVersion (t ,client , user . OrganizationID , & echo. Responses {
37
- Parse : echo . ParseComplete ,
38
- ProvisionApply : echo . ProvisionApplyWithAgent ( authToken ) ,
34
+ ws , authToken := dbfake . WorkspaceWithAgent (t ,db , database. Workspace {
35
+ OrganizationID : user . OrganizationID ,
36
+ OwnerID : user . UserID ,
39
37
})
40
- template := coderdtest .CreateTemplate (t ,client ,user .OrganizationID ,version .ID )
41
- coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
42
- workspace := coderdtest .CreateWorkspace (t ,client ,user .OrganizationID ,template .ID )
43
- coderdtest .AwaitWorkspaceBuildJobCompleted (t ,client ,workspace .LatestBuild .ID )
44
-
45
38
logDir := t .TempDir ()
46
39
inv ,_ := clitest .New (t ,
47
40
"agent" ,
@@ -57,7 +50,7 @@ func TestWorkspaceAgent(t *testing.T) {
57
50
ctx := inv .Context ()
58
51
pty .ExpectMatchContext (ctx ,"agent is starting now" )
59
52
60
- coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .ID )
53
+ coderdtest .AwaitWorkspaceAgents (t ,client ,ws .ID )
61
54
62
55
info ,err := os .Stat (filepath .Join (logDir ,"coder-agent.log" ))
63
56
require .NoError (t ,err )
@@ -68,33 +61,23 @@ func TestWorkspaceAgent(t *testing.T) {
68
61
t .Parallel ()
69
62
instanceID := "instanceidentifier"
70
63
certificates ,metadataClient := coderdtest .NewAzureInstanceIdentity (t ,instanceID )
71
- client := coderdtest .New (t ,& coderdtest.Options {
72
- AzureCertificates :certificates ,
73
- IncludeProvisionerDaemon :true ,
64
+ client ,db := coderdtest .NewWithDatabase (t ,& coderdtest.Options {
65
+ AzureCertificates :certificates ,
74
66
})
75
67
user := coderdtest .CreateFirstUser (t ,client )
76
- version := coderdtest .CreateTemplateVersion (t ,client ,user .OrganizationID ,& echo.Responses {
77
- Parse :echo .ParseComplete ,
78
- ProvisionApply : []* proto.Response {{
79
- Type :& proto.Response_Apply {
80
- Apply :& proto.ApplyComplete {
81
- Resources : []* proto.Resource {{
82
- Name :"somename" ,
83
- Type :"someinstance" ,
84
- Agents : []* proto.Agent {{
85
- Auth :& proto.Agent_InstanceId {
86
- InstanceId :instanceID ,
87
- },
88
- }},
89
- }},
90
- },
68
+ ws := dbfake .Workspace (t ,db , database.Workspace {
69
+ OrganizationID :user .OrganizationID ,
70
+ OwnerID :user .UserID ,
71
+ })
72
+ dbfake .WorkspaceBuild (t ,db ,ws , database.WorkspaceBuild {},& proto.Resource {
73
+ Name :"somename" ,
74
+ Type :"someinstance" ,
75
+ Agents : []* proto.Agent {{
76
+ Auth :& proto.Agent_InstanceId {
77
+ InstanceId :instanceID ,
91
78
},
92
79
}},
93
80
})
94
- template := coderdtest .CreateTemplate (t ,client ,user .OrganizationID ,version .ID )
95
- coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
96
- workspace := coderdtest .CreateWorkspace (t ,client ,user .OrganizationID ,template .ID )
97
- coderdtest .AwaitWorkspaceBuildJobCompleted (t ,client ,workspace .LatestBuild .ID )
98
81
99
82
inv ,_ := clitest .New (t ,"agent" ,"--auth" ,"azure-instance-identity" ,"--agent-url" ,client .URL .String ())
100
83
inv = inv .WithContext (
@@ -103,8 +86,8 @@ func TestWorkspaceAgent(t *testing.T) {
103
86
)
104
87
ctx := inv .Context ()
105
88
clitest .Start (t ,inv )
106
- coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .ID )
107
- workspace ,err := client .Workspace (ctx ,workspace .ID )
89
+ coderdtest .AwaitWorkspaceAgents (t ,client ,ws .ID )
90
+ workspace ,err := client .Workspace (ctx ,ws .ID )
108
91
require .NoError (t ,err )
109
92
resources := workspace .LatestBuild .Resources
110
93
if assert .NotEmpty (t ,workspace .LatestBuild .Resources )&& assert .NotEmpty (t ,resources [0 ].Agents ) {
@@ -120,33 +103,23 @@ func TestWorkspaceAgent(t *testing.T) {
120
103
t .Parallel ()
121
104
instanceID := "instanceidentifier"
122
105
certificates ,metadataClient := coderdtest .NewAWSInstanceIdentity (t ,instanceID )
123
- client := coderdtest .New (t ,& coderdtest.Options {
124
- AWSCertificates :certificates ,
125
- IncludeProvisionerDaemon :true ,
106
+ client ,db := coderdtest .NewWithDatabase (t ,& coderdtest.Options {
107
+ AWSCertificates :certificates ,
126
108
})
127
109
user := coderdtest .CreateFirstUser (t ,client )
128
- version := coderdtest .CreateTemplateVersion (t ,client ,user .OrganizationID ,& echo.Responses {
129
- Parse :echo .ParseComplete ,
130
- ProvisionApply : []* proto.Response {{
131
- Type :& proto.Response_Apply {
132
- Apply :& proto.ApplyComplete {
133
- Resources : []* proto.Resource {{
134
- Name :"somename" ,
135
- Type :"someinstance" ,
136
- Agents : []* proto.Agent {{
137
- Auth :& proto.Agent_InstanceId {
138
- InstanceId :instanceID ,
139
- },
140
- }},
141
- }},
142
- },
110
+ ws := dbfake .Workspace (t ,db , database.Workspace {
111
+ OrganizationID :user .OrganizationID ,
112
+ OwnerID :user .UserID ,
113
+ })
114
+ dbfake .WorkspaceBuild (t ,db ,ws , database.WorkspaceBuild {},& proto.Resource {
115
+ Name :"somename" ,
116
+ Type :"someinstance" ,
117
+ Agents : []* proto.Agent {{
118
+ Auth :& proto.Agent_InstanceId {
119
+ InstanceId :instanceID ,
143
120
},
144
121
}},
145
122
})
146
- template := coderdtest .CreateTemplate (t ,client ,user .OrganizationID ,version .ID )
147
- coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
148
- workspace := coderdtest .CreateWorkspace (t ,client ,user .OrganizationID ,template .ID )
149
- coderdtest .AwaitWorkspaceBuildJobCompleted (t ,client ,workspace .LatestBuild .ID )
150
123
151
124
inv ,_ := clitest .New (t ,"agent" ,"--auth" ,"aws-instance-identity" ,"--agent-url" ,client .URL .String ())
152
125
inv = inv .WithContext (
@@ -155,8 +128,8 @@ func TestWorkspaceAgent(t *testing.T) {
155
128
)
156
129
clitest .Start (t ,inv )
157
130
ctx := inv .Context ()
158
- coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .ID )
159
- workspace ,err := client .Workspace (ctx ,workspace .ID )
131
+ coderdtest .AwaitWorkspaceAgents (t ,client ,ws .ID )
132
+ workspace ,err := client .Workspace (ctx ,ws .ID )
160
133
require .NoError (t ,err )
161
134
resources := workspace .LatestBuild .Resources
162
135
if assert .NotEmpty (t ,resources )&& assert .NotEmpty (t ,resources [0 ].Agents ) {
@@ -172,35 +145,24 @@ func TestWorkspaceAgent(t *testing.T) {
172
145
t .Parallel ()
173
146
instanceID := "instanceidentifier"
174
147
validator ,metadataClient := coderdtest .NewGoogleInstanceIdentity (t ,instanceID ,false )
175
- client := coderdtest .New (t ,& coderdtest.Options {
176
- GoogleTokenValidator :validator ,
177
- IncludeProvisionerDaemon :true ,
148
+ client ,db := coderdtest .NewWithDatabase (t ,& coderdtest.Options {
149
+ GoogleTokenValidator :validator ,
178
150
})
179
151
owner := coderdtest .CreateFirstUser (t ,client )
180
- member ,_ := coderdtest .CreateAnotherUser (t ,client ,owner .OrganizationID )
181
- version := coderdtest .CreateTemplateVersion (t ,client ,owner .OrganizationID ,& echo.Responses {
182
- Parse :echo .ParseComplete ,
183
- ProvisionApply : []* proto.Response {{
184
- Type :& proto.Response_Apply {
185
- Apply :& proto.ApplyComplete {
186
- Resources : []* proto.Resource {{
187
- Name :"somename" ,
188
- Type :"someinstance" ,
189
- Agents : []* proto.Agent {{
190
- Auth :& proto.Agent_InstanceId {
191
- InstanceId :instanceID ,
192
- },
193
- }},
194
- }},
195
- },
152
+ member ,memberUser := coderdtest .CreateAnotherUser (t ,client ,owner .OrganizationID )
153
+ ws := dbfake .Workspace (t ,db , database.Workspace {
154
+ OrganizationID :owner .OrganizationID ,
155
+ OwnerID :memberUser .ID ,
156
+ })
157
+ dbfake .WorkspaceBuild (t ,db ,ws , database.WorkspaceBuild {},& proto.Resource {
158
+ Name :"somename" ,
159
+ Type :"someinstance" ,
160
+ Agents : []* proto.Agent {{
161
+ Auth :& proto.Agent_InstanceId {
162
+ InstanceId :instanceID ,
196
163
},
197
164
}},
198
165
})
199
- template := coderdtest .CreateTemplate (t ,client ,owner .OrganizationID ,version .ID )
200
- coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
201
- workspace := coderdtest .CreateWorkspace (t ,member ,owner .OrganizationID ,template .ID )
202
- coderdtest .AwaitWorkspaceBuildJobCompleted (t ,client ,workspace .LatestBuild .ID )
203
-
204
166
inv ,cfg := clitest .New (t ,"agent" ,"--auth" ,"google-instance-identity" ,"--agent-url" ,client .URL .String ())
205
167
ptytest .New (t ).Attach (inv )
206
168
clitest .SetupConfig (t ,member ,cfg )
@@ -212,9 +174,8 @@ func TestWorkspaceAgent(t *testing.T) {
212
174
)
213
175
214
176
ctx := inv .Context ()
215
-
216
- coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .ID )
217
- workspace ,err := client .Workspace (ctx ,workspace .ID )
177
+ coderdtest .AwaitWorkspaceAgents (t ,client ,ws .ID )
178
+ workspace ,err := client .Workspace (ctx ,ws .ID )
218
179
require .NoError (t ,err )
219
180
resources := workspace .LatestBuild .Resources
220
181
if assert .NotEmpty (t ,resources )&& assert .NotEmpty (t ,resources [0 ].Agents ) {
@@ -244,19 +205,12 @@ func TestWorkspaceAgent(t *testing.T) {
244
205
t .Run ("PostStartup" ,func (t * testing.T ) {
245
206
t .Parallel ()
246
207
247
- authToken := uuid .NewString ()
248
- client := coderdtest .New (t ,& coderdtest.Options {
249
- IncludeProvisionerDaemon :true ,
250
- })
208
+ client ,db := coderdtest .NewWithDatabase (t ,nil )
251
209
user := coderdtest .CreateFirstUser (t ,client )
252
- version := coderdtest . CreateTemplateVersion (t ,client , user . OrganizationID , & echo. Responses {
253
- Parse : echo . ParseComplete ,
254
- ProvisionApply : echo . ProvisionApplyWithAgent ( authToken ) ,
210
+ ws , authToken := dbfake . WorkspaceWithAgent (t ,db , database. Workspace {
211
+ OrganizationID : user . OrganizationID ,
212
+ OwnerID : user . UserID ,
255
213
})
256
- template := coderdtest .CreateTemplate (t ,client ,user .OrganizationID ,version .ID )
257
- coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
258
- workspace := coderdtest .CreateWorkspace (t ,client ,user .OrganizationID ,template .ID )
259
- coderdtest .AwaitWorkspaceBuildJobCompleted (t ,client ,workspace .LatestBuild .ID )
260
214
261
215
logDir := t .TempDir ()
262
216
inv ,_ := clitest .New (t ,
@@ -274,7 +228,7 @@ func TestWorkspaceAgent(t *testing.T) {
274
228
clitest .Start (t ,inv )
275
229
pty .ExpectMatchContext (inv .Context (),"agent is starting now" )
276
230
277
- resources := coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .ID )
231
+ resources := coderdtest .AwaitWorkspaceAgents (t ,client ,ws .ID )
278
232
require .Len (t ,resources ,1 )
279
233
require .Len (t ,resources [0 ].Agents ,1 )
280
234
require .Len (t ,resources [0 ].Agents [0 ].Subsystems ,2 )