@@ -1447,6 +1447,62 @@ func TestWorkspaceFilterManual(t *testing.T) {
1447
1447
require .Len (t , res .Workspaces , 1 )
1448
1448
require .NotNil (t , res .Workspaces [0 ].LockedAt )
1449
1449
})
1450
+
1451
+ t .Run ("LastUsed" , func (t * testing.T ) {
1452
+ t .Parallel ()
1453
+ client , _ , api := coderdtest .NewWithAPI (t , & coderdtest.Options {
1454
+ IncludeProvisionerDaemon : true ,
1455
+ })
1456
+ user := coderdtest .CreateFirstUser (t , client )
1457
+ authToken := uuid .NewString ()
1458
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
1459
+ Parse : echo .ParseComplete ,
1460
+ ProvisionPlan : echo .ProvisionComplete ,
1461
+ ProvisionApply : echo .ProvisionApplyWithAgent (authToken ),
1462
+ })
1463
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
1464
+ _ = coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
1465
+
1466
+ // update template with inactivity ttl
1467
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
1468
+ defer cancel ()
1469
+
1470
+ now := database .Now ()
1471
+ before := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
1472
+ _ = coderdtest .AwaitWorkspaceBuildJob (t , client , before .LatestBuild .ID )
1473
+
1474
+ after := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
1475
+ _ = coderdtest .AwaitWorkspaceBuildJob (t , client , after .LatestBuild .ID )
1476
+
1477
+ //nolint:gocritic // Unit testing context
1478
+ err := api .Database .UpdateWorkspaceLastUsedAt (dbauthz .AsSystemRestricted (ctx ), database.UpdateWorkspaceLastUsedAtParams {
1479
+ ID : before .ID ,
1480
+ LastUsedAt : now .UTC ().Add (time .Hour * - 1 ),
1481
+ })
1482
+ require .NoError (t , err )
1483
+
1484
+ // Unit testing context
1485
+ //nolint:gocritic // Unit testing context
1486
+ err = api .Database .UpdateWorkspaceLastUsedAt (dbauthz .AsSystemRestricted (ctx ), database.UpdateWorkspaceLastUsedAtParams {
1487
+ ID : after .ID ,
1488
+ LastUsedAt : now .UTC ().Add (time .Hour * 1 ),
1489
+ })
1490
+ require .NoError (t , err )
1491
+
1492
+ beforeRes , err := client .Workspaces (ctx , codersdk.WorkspaceFilter {
1493
+ FilterQuery : fmt .Sprintf ("last_used_before:%q" , now .Format (time .RFC3339 )),
1494
+ })
1495
+ require .NoError (t , err )
1496
+ require .Len (t , beforeRes .Workspaces , 1 )
1497
+ require .Equal (t , before .ID , beforeRes .Workspaces [0 ].ID )
1498
+
1499
+ afterRes , err := client .Workspaces (ctx , codersdk.WorkspaceFilter {
1500
+ FilterQuery : fmt .Sprintf ("last_used_after:%q" , now .Format (time .RFC3339 )),
1501
+ })
1502
+ require .NoError (t , err )
1503
+ require .Len (t , afterRes .Workspaces , 1 )
1504
+ require .Equal (t , after .ID , afterRes .Workspaces [0 ].ID )
1505
+ })
1450
1506
}
1451
1507
1452
1508
func TestOffsetLimit (t * testing.T ) {
0 commit comments