@@ -135,6 +135,57 @@ func TestCreateWorkspace(t *testing.T) {
135
135
_ , err = client1 .CreateWorkspace (ctx , user .OrganizationID , user1 .ID .String (), req )
136
136
require .Error (t , err )
137
137
})
138
+
139
+ t .Run ("NoTemplateAccess" , func (t * testing.T ) {
140
+ t .Parallel ()
141
+ ownerClient , owner := coderdenttest .New (t , & coderdenttest.Options {
142
+ Options : & coderdtest.Options {
143
+ IncludeProvisionerDaemon : true ,
144
+ },
145
+ LicenseOptions : & coderdenttest.LicenseOptions {
146
+ Features : license.Features {
147
+ codersdk .FeatureTemplateRBAC : 1 ,
148
+ },
149
+ }})
150
+
151
+ templateAdmin , _ := coderdtest .CreateAnotherUser (t , ownerClient , owner .OrganizationID , rbac .RoleTemplateAdmin ())
152
+ user , _ := coderdtest .CreateAnotherUser (t , ownerClient , owner .OrganizationID , rbac .RoleMember ())
153
+
154
+ version := coderdtest .CreateTemplateVersion (t , templateAdmin , owner .OrganizationID , nil )
155
+ coderdtest .AwaitTemplateVersionJobCompleted (t , templateAdmin , version .ID )
156
+ template := coderdtest .CreateTemplate (t , templateAdmin , owner .OrganizationID , version .ID )
157
+
158
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
159
+ defer cancel ()
160
+
161
+ // Remove everyone access
162
+ err := templateAdmin .UpdateTemplateACL (ctx , template .ID , codersdk.UpdateTemplateACL {
163
+ UserPerms : map [string ]codersdk.TemplateRole {},
164
+ GroupPerms : map [string ]codersdk.TemplateRole {
165
+ owner .OrganizationID .String (): codersdk .TemplateRoleDeleted ,
166
+ },
167
+ })
168
+ require .NoError (t , err )
169
+
170
+ // Test "everyone" access is revoked to the regular user
171
+ _ , err = user .Template (ctx , template .ID )
172
+ require .Error (t , err )
173
+ var apiErr * codersdk.Error
174
+ require .ErrorAs (t , err , & apiErr )
175
+ require .Equal (t , http .StatusNotFound , apiErr .StatusCode ())
176
+
177
+ _ , err = user .CreateUserWorkspace (ctx , codersdk .Me , codersdk.CreateWorkspaceRequest {
178
+ TemplateID : template .ID ,
179
+ Name : "random" ,
180
+ AutostartSchedule : ptr .Ref ("CRON_TZ=US/Central 30 9 * * 1-5" ),
181
+ TTLMillis : ptr .Ref ((8 * time .Hour ).Milliseconds ()),
182
+ AutomaticUpdates : codersdk .AutomaticUpdatesNever ,
183
+ })
184
+ require .Error (t , err )
185
+ require .ErrorAs (t , err , & apiErr )
186
+ require .Equal (t , http .StatusBadRequest , apiErr .StatusCode ())
187
+ require .Contains (t , apiErr .Message , "doesn't exist" )
188
+ })
138
189
}
139
190
140
191
func TestCreateUserWorkspace (t * testing.T ) {
0 commit comments