Skip to content

Commit c1ad329

Browse files
committed
add more tests
1 parent 31c1baa commit c1ad329

File tree

1 file changed

+69
-3
lines changed

1 file changed

+69
-3
lines changed

enterprise/coderd/workspacequota_test.go

Lines changed: 69 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@ package coderd_test
33
import (
44
"context"
55
"testing"
6+
"time"
7+
8+
"github.com/google/uuid"
9+
"github.com/stretchr/testify/require"
610

711
"github.com/coder/coder/coderd/coderdtest"
12+
"github.com/coder/coder/coderd/util/ptr"
813
"github.com/coder/coder/codersdk"
914
"github.com/coder/coder/enterprise/coderd/coderdenttest"
15+
"github.com/coder/coder/provisioner/echo"
16+
"github.com/coder/coder/provisionersdk/proto"
1017
"github.com/coder/coder/testutil"
11-
"github.com/stretchr/testify/require"
1218
)
1319

1420
func TestWorkspaceQuota(t *testing.T) {
@@ -22,7 +28,7 @@ func TestWorkspaceQuota(t *testing.T) {
2228
coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
2329
WorkspaceQuota: true,
2430
})
25-
q1, err := client.WorkspaceQuota(ctx, "me")
31+
q1, err := client.WorkspaceQuota(ctx, codersdk.Me)
2632
require.NoError(t, err)
2733
require.EqualValues(t, q1.UserWorkspaceLimit, 0)
2834

@@ -39,7 +45,7 @@ func TestWorkspaceQuota(t *testing.T) {
3945
coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
4046
WorkspaceQuota: true,
4147
})
42-
q1, err := client.WorkspaceQuota(ctx, "me")
48+
q1, err := client.WorkspaceQuota(ctx, codersdk.Me)
4349
require.NoError(t, err)
4450
require.EqualValues(t, q1.UserWorkspaceLimit, max)
4551

@@ -50,8 +56,68 @@ func TestWorkspaceQuota(t *testing.T) {
5056
Password: "laskjdnvkaj",
5157
OrganizationID: user.OrganizationID,
5258
})
59+
require.NoError(t, err)
5360
q2, err := client.WorkspaceQuota(ctx, u2.ID.String())
5461
require.NoError(t, err)
5562
require.EqualValues(t, q1, q2)
5663
})
64+
t.Run("BlocksBuild", func(t *testing.T) {
65+
t.Parallel()
66+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
67+
defer cancel()
68+
max := 1
69+
client := coderdenttest.New(t, &coderdenttest.Options{
70+
UserWorkspaceQuota: max,
71+
Options: &coderdtest.Options{
72+
IncludeProvisionerDaemon: true,
73+
},
74+
})
75+
user := coderdtest.CreateFirstUser(t, client)
76+
coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
77+
WorkspaceQuota: true,
78+
})
79+
q1, err := client.WorkspaceQuota(ctx, codersdk.Me)
80+
require.NoError(t, err)
81+
require.EqualValues(t, q1.UserWorkspaceCount, 0)
82+
require.EqualValues(t, q1.UserWorkspaceLimit, max)
83+
84+
authToken := uuid.NewString()
85+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
86+
Parse: echo.ParseComplete,
87+
Provision: []*proto.Provision_Response{{
88+
Type: &proto.Provision_Response_Complete{
89+
Complete: &proto.Provision_Complete{
90+
Resources: []*proto.Resource{{
91+
Name: "example",
92+
Type: "aws_instance",
93+
Agents: []*proto.Agent{{
94+
Id: uuid.NewString(),
95+
Name: "example",
96+
Auth: &proto.Agent_Token{
97+
Token: authToken,
98+
},
99+
}},
100+
}},
101+
},
102+
},
103+
}},
104+
})
105+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
106+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
107+
_ = coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
108+
_, err = client.CreateWorkspace(context.Background(), user.OrganizationID, codersdk.Me, codersdk.CreateWorkspaceRequest{
109+
TemplateID: template.ID,
110+
Name: "ajksdnvksjd",
111+
AutostartSchedule: ptr.Ref("CRON_TZ=US/Central 30 9 * * 1-5"),
112+
TTLMillis: ptr.Ref((8 * time.Hour).Milliseconds()),
113+
})
114+
require.Error(t, err)
115+
require.ErrorContains(t, err, "User workspace limit")
116+
117+
// ensure count increments
118+
q1, err = client.WorkspaceQuota(ctx, codersdk.Me)
119+
require.NoError(t, err)
120+
require.EqualValues(t, q1.UserWorkspaceCount, 1)
121+
require.EqualValues(t, q1.UserWorkspaceLimit, max)
122+
})
57123
}

0 commit comments

Comments
 (0)