@@ -1248,6 +1248,92 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
1248
1248
post (ctx , "unknown" , unknownKeyMetadata )
1249
1249
}
1250
1250
1251
+ func TestWorkspaceAgent_Metadata_DisplayOrder (t * testing.T ) {
1252
+ t .Parallel ()
1253
+
1254
+ client , db := coderdtest .NewWithDatabase (t , nil )
1255
+ user := coderdtest .CreateFirstUser (t , client )
1256
+ r := dbfake .WorkspaceBuild (t , db , database.Workspace {
1257
+ OrganizationID : user .OrganizationID ,
1258
+ OwnerID : user .UserID ,
1259
+ }).WithAgent (func (agents []* proto.Agent ) []* proto.Agent {
1260
+ agents [0 ].Metadata = []* proto.Agent_Metadata {
1261
+ {
1262
+ DisplayName : "First Meta" ,
1263
+ Key : "foo1" ,
1264
+ Script : "echo hi" ,
1265
+ Interval : 10 ,
1266
+ Timeout : 3 ,
1267
+ Order : 2 ,
1268
+ },
1269
+ {
1270
+ DisplayName : "Second Meta" ,
1271
+ Key : "foo2" ,
1272
+ Script : "echo howdy" ,
1273
+ Interval : 10 ,
1274
+ Timeout : 3 ,
1275
+ Order : 1 ,
1276
+ },
1277
+ {
1278
+ DisplayName : "Third Meta" ,
1279
+ Key : "foo3" ,
1280
+ Script : "echo howdy" ,
1281
+ Interval : 10 ,
1282
+ Timeout : 3 ,
1283
+ Order : 2 ,
1284
+ },
1285
+ {
1286
+ DisplayName : "Fourth Meta" ,
1287
+ Key : "foo4" ,
1288
+ Script : "echo howdy" ,
1289
+ Interval : 10 ,
1290
+ Timeout : 3 ,
1291
+ Order : 3 ,
1292
+ },
1293
+ }
1294
+ return agents
1295
+ }).Do ()
1296
+
1297
+ workspace , err := client .Workspace (context .Background (), r .Workspace .ID )
1298
+ require .NoError (t , err )
1299
+ for _ , res := range workspace .LatestBuild .Resources {
1300
+ for _ , a := range res .Agents {
1301
+ require .Equal (t , codersdk .WorkspaceAgentLifecycleCreated , a .LifecycleState )
1302
+ }
1303
+ }
1304
+
1305
+ ctx := testutil .Context (t , testutil .WaitMedium )
1306
+ workspace , err = client .Workspace (ctx , workspace .ID )
1307
+ require .NoError (t , err , "get workspace" )
1308
+
1309
+ agentID := workspace .LatestBuild .Resources [0 ].Agents [0 ].ID
1310
+
1311
+ var update []codersdk.WorkspaceAgentMetadata
1312
+
1313
+ // Setup is complete, reset the context.
1314
+ ctx = testutil .Context (t , testutil .WaitMedium )
1315
+ updates , errors := client .WatchWorkspaceAgentMetadata (ctx , agentID )
1316
+
1317
+ recvUpdate := func () []codersdk.WorkspaceAgentMetadata {
1318
+ select {
1319
+ case <- ctx .Done ():
1320
+ t .Fatalf ("context done: %v" , ctx .Err ())
1321
+ case err := <- errors :
1322
+ t .Fatalf ("error watching metadata: %v" , err )
1323
+ case update := <- updates :
1324
+ return update
1325
+ }
1326
+ return nil
1327
+ }
1328
+
1329
+ update = recvUpdate ()
1330
+ require .Len (t , update , 4 )
1331
+ require .Equal (t , "Second Meta" , update [0 ].Description .DisplayName )
1332
+ require .Equal (t , "First Meta" , update [1 ].Description .DisplayName )
1333
+ require .Equal (t , "Third Meta" , update [2 ].Description .DisplayName )
1334
+ require .Equal (t , "Fourth Meta" , update [3 ].Description .DisplayName )
1335
+ }
1336
+
1251
1337
type testWAMErrorStore struct {
1252
1338
database.Store
1253
1339
err atomic.Pointer [error ]
0 commit comments