Skip to content

Commit a08a0c9

Browse files
committed
added enterprise test
1 parent 9697120 commit a08a0c9

File tree

2 files changed

+61
-3
lines changed

2 files changed

+61
-3
lines changed

coderd/workspaces_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,7 +1009,8 @@ func TestWorkspaceFilterManual(t *testing.T) {
10091009
}, testutil.IntervalMedium, "agent status timeout")
10101010
})
10111011

1012-
t.Run("FilterQueryHasDeletingBy", func(t *testing.T) {
1012+
t.Run("FilterQueryHasDeletingByAndUnlicensed", func(t *testing.T) {
1013+
// this test has a licensed counterpart in enterprise/coderd/workspaces_test.go: FilterQueryHasDeletingByAndLicensed
10131014
t.Parallel()
10141015
inactivityTTL := 1 * 24 * time.Hour
10151016
var setCalled int64
@@ -1059,8 +1060,9 @@ func TestWorkspaceFilterManual(t *testing.T) {
10591060
})
10601061

10611062
assert.NoError(t, err)
1062-
assert.Len(t, res.Workspaces, 1)
1063-
assert.Equal(t, workspace.ID, res.Workspaces[0].ID)
1063+
// we are expecting that no workspaces are returned as user is unlicensed
1064+
// and template.InactivityTTL should be 0
1065+
assert.Len(t, res.Workspaces, 0)
10641066
})
10651067
}
10661068

enterprise/coderd/workspaces_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@ package coderd_test
22

33
import (
44
"context"
5+
"fmt"
56
"net/http"
67
"testing"
78
"time"
89

10+
"github.com/stretchr/testify/assert"
911
"github.com/stretchr/testify/require"
1012

1113
"github.com/coder/coder/coderd/coderdtest"
14+
"github.com/coder/coder/coderd/database"
1215
"github.com/coder/coder/coderd/util/ptr"
1316
"github.com/coder/coder/codersdk"
1417
"github.com/coder/coder/enterprise/coderd/coderdenttest"
@@ -70,3 +73,56 @@ func TestCreateWorkspace(t *testing.T) {
7073
require.Error(t, err)
7174
})
7275
}
76+
77+
func TestWorkspacesFiltering(t *testing.T) {
78+
t.Parallel()
79+
80+
t.Run("FilterQueryHasDeletingByAndLicensed", func(t *testing.T) {
81+
t.Parallel()
82+
83+
inactivityTTL := 1 * 24 * time.Hour
84+
85+
client := coderdenttest.New(t, &coderdenttest.Options{
86+
Options: &coderdtest.Options{
87+
IncludeProvisionerDaemon: true,
88+
},
89+
})
90+
user := coderdtest.CreateFirstUser(t, client)
91+
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
92+
Features: license.Features{
93+
codersdk.FeatureAdvancedTemplateScheduling: 1,
94+
},
95+
})
96+
97+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
98+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
99+
100+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
101+
102+
// update template with inactivity ttl
103+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
104+
defer cancel()
105+
106+
template, err := client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
107+
InactivityTTLMillis: inactivityTTL.Milliseconds(),
108+
})
109+
110+
assert.NoError(t, err)
111+
assert.Equal(t, inactivityTTL.Milliseconds(), template.InactivityTTLMillis)
112+
113+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
114+
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
115+
116+
// stop build so workspace is inactive
117+
stopBuild := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop)
118+
coderdtest.AwaitWorkspaceBuildJob(t, client, stopBuild.ID)
119+
120+
res, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
121+
// adding a second to time.Now() to give some buffer in case test runs quickly
122+
FilterQuery: fmt.Sprintf("deleting_by:%s", time.Now().Add(time.Second).Add(inactivityTTL).Format("2006-01-02")),
123+
})
124+
assert.NoError(t, err)
125+
assert.Len(t, res.Workspaces, 1)
126+
assert.Equal(t, workspace.ID, res.Workspaces[0].ID)
127+
})
128+
}

0 commit comments

Comments
 (0)