@@ -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 ) {