@@ -3,12 +3,18 @@ package coderd_test
3
3
import (
4
4
"context"
5
5
"testing"
6
+ "time"
7
+
8
+ "github.com/google/uuid"
9
+ "github.com/stretchr/testify/require"
6
10
7
11
"github.com/coder/coder/coderd/coderdtest"
12
+ "github.com/coder/coder/coderd/util/ptr"
8
13
"github.com/coder/coder/codersdk"
9
14
"github.com/coder/coder/enterprise/coderd/coderdenttest"
15
+ "github.com/coder/coder/provisioner/echo"
16
+ "github.com/coder/coder/provisionersdk/proto"
10
17
"github.com/coder/coder/testutil"
11
- "github.com/stretchr/testify/require"
12
18
)
13
19
14
20
func TestWorkspaceQuota (t * testing.T ) {
@@ -22,7 +28,7 @@ func TestWorkspaceQuota(t *testing.T) {
22
28
coderdenttest .AddLicense (t , client , coderdenttest.LicenseOptions {
23
29
WorkspaceQuota : true ,
24
30
})
25
- q1 , err := client .WorkspaceQuota (ctx , "me" )
31
+ q1 , err := client .WorkspaceQuota (ctx , codersdk . Me )
26
32
require .NoError (t , err )
27
33
require .EqualValues (t , q1 .UserWorkspaceLimit , 0 )
28
34
@@ -39,7 +45,7 @@ func TestWorkspaceQuota(t *testing.T) {
39
45
coderdenttest .AddLicense (t , client , coderdenttest.LicenseOptions {
40
46
WorkspaceQuota : true ,
41
47
})
42
- q1 , err := client .WorkspaceQuota (ctx , "me" )
48
+ q1 , err := client .WorkspaceQuota (ctx , codersdk . Me )
43
49
require .NoError (t , err )
44
50
require .EqualValues (t , q1 .UserWorkspaceLimit , max )
45
51
@@ -50,8 +56,68 @@ func TestWorkspaceQuota(t *testing.T) {
50
56
Password : "laskjdnvkaj" ,
51
57
OrganizationID : user .OrganizationID ,
52
58
})
59
+ require .NoError (t , err )
53
60
q2 , err := client .WorkspaceQuota (ctx , u2 .ID .String ())
54
61
require .NoError (t , err )
55
62
require .EqualValues (t , q1 , q2 )
56
63
})
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
+ })
57
123
}
0 commit comments