feat: add last_used search params to workspaces (#9230)

* feat: add last_used search params to workspaces
This commit is contained in:
Steven Masley
2023-08-22 08:41:58 -05:00
committed by GitHub
parent e57d635739
commit 37a3b42c55
7 changed files with 107 additions and 8 deletions
+56
View File
@@ -1447,6 +1447,62 @@ func TestWorkspaceFilterManual(t *testing.T) {
require.Len(t, res.Workspaces, 1)
require.NotNil(t, res.Workspaces[0].LockedAt)
})
t.Run("LastUsed", func(t *testing.T) {
t.Parallel()
client, _, api := coderdtest.NewWithAPI(t, &coderdtest.Options{
IncludeProvisionerDaemon: true,
})
user := coderdtest.CreateFirstUser(t, client)
authToken := uuid.NewString()
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
Parse: echo.ParseComplete,
ProvisionPlan: echo.ProvisionComplete,
ProvisionApply: echo.ProvisionApplyWithAgent(authToken),
})
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
_ = coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
// update template with inactivity ttl
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
defer cancel()
now := database.Now()
before := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
_ = coderdtest.AwaitWorkspaceBuildJob(t, client, before.LatestBuild.ID)
after := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
_ = coderdtest.AwaitWorkspaceBuildJob(t, client, after.LatestBuild.ID)
//nolint:gocritic // Unit testing context
err := api.Database.UpdateWorkspaceLastUsedAt(dbauthz.AsSystemRestricted(ctx), database.UpdateWorkspaceLastUsedAtParams{
ID: before.ID,
LastUsedAt: now.UTC().Add(time.Hour * -1),
})
require.NoError(t, err)
// Unit testing context
//nolint:gocritic // Unit testing context
err = api.Database.UpdateWorkspaceLastUsedAt(dbauthz.AsSystemRestricted(ctx), database.UpdateWorkspaceLastUsedAtParams{
ID: after.ID,
LastUsedAt: now.UTC().Add(time.Hour * 1),
})
require.NoError(t, err)
beforeRes, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
FilterQuery: fmt.Sprintf("last_used_before:%q", now.Format(time.RFC3339)),
})
require.NoError(t, err)
require.Len(t, beforeRes.Workspaces, 1)
require.Equal(t, before.ID, beforeRes.Workspaces[0].ID)
afterRes, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
FilterQuery: fmt.Sprintf("last_used_after:%q", now.Format(time.RFC3339)),
})
require.NoError(t, err)
require.Len(t, afterRes.Workspaces, 1)
require.Equal(t, after.ID, afterRes.Workspaces[0].ID)
})
}
func TestOffsetLimit(t *testing.T) {