@@ -174,6 +174,93 @@ func TestWorkspaceAgent(t *testing.T) {
174
174
require .False (t , workspace .LatestBuild .Resources [0 ].Agents [0 ].Health .Healthy )
175
175
require .NotEmpty (t , workspace .LatestBuild .Resources [0 ].Agents [0 ].Health .Reason )
176
176
})
177
+
178
+ t .Run ("DisplayApps" , func (t * testing.T ) {
179
+ t .Parallel ()
180
+ client := coderdtest .New (t , & coderdtest.Options {
181
+ IncludeProvisionerDaemon : true ,
182
+ })
183
+ user := coderdtest .CreateFirstUser (t , client )
184
+ authToken := uuid .NewString ()
185
+ tmpDir := t .TempDir ()
186
+ apps := & proto.DisplayApps {
187
+ Vscode : true ,
188
+ VscodeInsiders : true ,
189
+ WebTerminal : true ,
190
+ PortForwardingHelper : true ,
191
+ SshHelper : true ,
192
+ }
193
+
194
+ echoResp := & echo.Responses {
195
+ Parse : echo .ParseComplete ,
196
+ ProvisionPlan : echo .PlanComplete ,
197
+ ProvisionApply : []* proto.Response {{
198
+ Type : & proto.Response_Apply {
199
+ Apply : & proto.ApplyComplete {
200
+ Resources : []* proto.Resource {{
201
+ Name : "example" ,
202
+ Type : "aws_instance" ,
203
+ Agents : []* proto.Agent {{
204
+ Id : uuid .NewString (),
205
+ Directory : tmpDir ,
206
+ Auth : & proto.Agent_Token {
207
+ Token : authToken ,
208
+ },
209
+ DisplayApps : apps ,
210
+ },
211
+ }},
212
+ }},
213
+ },
214
+ }},
215
+ }
216
+
217
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , echoResp )
218
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
219
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
220
+ workspace := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
221
+ coderdtest .AwaitWorkspaceBuildJob (t , client , workspace .LatestBuild .ID )
222
+
223
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
224
+ defer cancel ()
225
+
226
+ workspace , err := client .Workspace (ctx , workspace .ID )
227
+ require .NoError (t , err )
228
+ agent , err := client .WorkspaceAgent (ctx , workspace .LatestBuild .Resources [0 ].Agents [0 ].ID )
229
+ require .NoError (t , err )
230
+ expectedApps := []codersdk.DisplayApp {
231
+ codersdk .DisplayAppPortForward ,
232
+ codersdk .DisplayAppSSH ,
233
+ codersdk .DisplayAppVSCodeDesktop ,
234
+ codersdk .DisplayAppVSCodeInsiders ,
235
+ codersdk .DisplayAppWebTerminal ,
236
+ }
237
+ require .ElementsMatch (t , expectedApps , agent .DisplayApps )
238
+
239
+ // Flips all the apps to false.
240
+ apps .PortForwardingHelper = false
241
+ apps .Vscode = false
242
+ apps .VscodeInsiders = false
243
+ apps .SshHelper = false
244
+ apps .WebTerminal = false
245
+
246
+ version = coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , echoResp ,
247
+ func (req * codersdk.CreateTemplateVersionRequest ) {
248
+ req .TemplateID = template .ID
249
+ })
250
+
251
+ err = client .UpdateActiveTemplateVersion (ctx , template .ID , codersdk.UpdateActiveTemplateVersion {
252
+ ID : version .ID ,
253
+ })
254
+ require .NoError (t , err )
255
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
256
+ // Creating another workspace is just easier.
257
+ workspace = coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
258
+ build := coderdtest .AwaitWorkspaceBuildJob (t , client , workspace .LatestBuild .ID )
259
+ require .NoError (t , err )
260
+ agent , err = client .WorkspaceAgent (ctx , build .Resources [0 ].Agents [0 ].ID )
261
+ require .NoError (t , err )
262
+ require .Len (t , agent .DisplayApps , 0 )
263
+ })
177
264
}
178
265
179
266
func TestWorkspaceAgentStartupLogs (t * testing.T ) {
0 commit comments