@@ -1326,3 +1326,85 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
1326
1326
err = agentClient .PostMetadata (ctx , "unknown" , unknownKeyMetadata )
1327
1327
require .NoError (t , err )
1328
1328
}
1329
+
1330
+ func TestWorkspaceAgent_Startup (t * testing.T ) {
1331
+ t .Parallel ()
1332
+
1333
+ t .Run ("OK" , func (t * testing.T ) {
1334
+ t .Parallel ()
1335
+
1336
+ client := coderdtest .New (t , & coderdtest.Options {
1337
+ IncludeProvisionerDaemon : true ,
1338
+ })
1339
+ user := coderdtest .CreateFirstUser (t , client )
1340
+ authToken := uuid .NewString ()
1341
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
1342
+ Parse : echo .ParseComplete ,
1343
+ ProvisionPlan : echo .ProvisionComplete ,
1344
+ ProvisionApply : echo .ProvisionApplyWithAgent (authToken ),
1345
+ })
1346
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
1347
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
1348
+ workspace := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
1349
+ coderdtest .AwaitWorkspaceBuildJob (t , client , workspace .LatestBuild .ID )
1350
+
1351
+ agentClient := agentsdk .New (client .URL )
1352
+ agentClient .SetSessionToken (authToken )
1353
+
1354
+ ctx := testutil .Context (t , testutil .WaitMedium )
1355
+
1356
+ const (
1357
+ expectedVersion = "v1.2.3"
1358
+ expectedDir = "/home/coder"
1359
+ expectedSubsystem = codersdk .AgentSubsystemEnvbox
1360
+ )
1361
+
1362
+ err := agentClient .PostStartup (ctx , agentsdk.PostStartupRequest {
1363
+ Version : expectedVersion ,
1364
+ ExpandedDirectory : expectedDir ,
1365
+ Subsystem : expectedSubsystem ,
1366
+ })
1367
+ require .NoError (t , err )
1368
+
1369
+ workspace , err = client .Workspace (ctx , workspace .ID )
1370
+ require .NoError (t , err )
1371
+
1372
+ wsagent , err := client .WorkspaceAgent (ctx , workspace .LatestBuild .Resources [0 ].Agents [0 ].ID )
1373
+ require .NoError (t , err )
1374
+ require .Equal (t , expectedVersion , wsagent .Version )
1375
+ require .Equal (t , expectedDir , wsagent .ExpandedDirectory )
1376
+ require .Equal (t , expectedSubsystem , wsagent .Subsystem )
1377
+ })
1378
+
1379
+ t .Run ("InvalidSemver" , func (t * testing.T ) {
1380
+ t .Parallel ()
1381
+
1382
+ client := coderdtest .New (t , & coderdtest.Options {
1383
+ IncludeProvisionerDaemon : true ,
1384
+ })
1385
+ user := coderdtest .CreateFirstUser (t , client )
1386
+ authToken := uuid .NewString ()
1387
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
1388
+ Parse : echo .ParseComplete ,
1389
+ ProvisionPlan : echo .ProvisionComplete ,
1390
+ ProvisionApply : echo .ProvisionApplyWithAgent (authToken ),
1391
+ })
1392
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
1393
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
1394
+ workspace := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
1395
+ coderdtest .AwaitWorkspaceBuildJob (t , client , workspace .LatestBuild .ID )
1396
+
1397
+ agentClient := agentsdk .New (client .URL )
1398
+ agentClient .SetSessionToken (authToken )
1399
+
1400
+ ctx := testutil .Context (t , testutil .WaitMedium )
1401
+
1402
+ err := agentClient .PostStartup (ctx , agentsdk.PostStartupRequest {
1403
+ Version : "1.2.3" ,
1404
+ })
1405
+ require .Error (t , err )
1406
+ cerr , ok := codersdk .AsError (err )
1407
+ require .True (t , ok )
1408
+ require .Equal (t , http .StatusBadRequest , cerr .StatusCode ())
1409
+ })
1410
+ }
0 commit comments