@@ -108,15 +108,16 @@ func testAuthorizeFunction(t *testing.T, testCase *authorizeTest) {
108
108
for objectName , asserts := range testCase .Asserts {
109
109
object := data [objectName ]
110
110
for _ , assert := range asserts {
111
- pairs = append (pairs , rec .Pair (assert , object ))
111
+ canRBAC , ok := object .(rbac.Objecter )
112
+ require .True (t , ok , "object %q does not implement rbac.Objecter" , objectName )
113
+ pairs = append (pairs , rec .Pair (assert , canRBAC .RBACObject ()))
112
114
}
113
115
}
114
116
rec .UnorderedAssertActor (t , actor , pairs ... )
115
117
require .NoError (t , rec .AllAsserted (), "all authz checks asserted" )
116
118
}
117
119
118
- func setupTestData (t * testing.T , testCase * authorizeTest , db database.Store , ctx context.Context ) map [string ]rbac.Objecter {
119
- rbacObjects := make (map [string ]rbac.Objecter )
120
+ func setupTestData (t * testing.T , testCase * authorizeTest , db database.Store , ctx context.Context ) map [string ]interface {} {
120
121
// Setup the test data.
121
122
orgID := uuid .New ()
122
123
data := testCase .Data (t , testCase )
@@ -142,9 +143,7 @@ func setupTestData(t *testing.T, testCase *authorizeTest, db database.Store, ctx
142
143
})
143
144
require .NoError (t , err , "insert template" )
144
145
145
- // Reinsert the template.
146
146
data [name ] = template
147
- rbacObjects [name ] = template
148
147
case database.Workspace :
149
148
workspace , err := db .InsertWorkspace (ctx , database.InsertWorkspaceParams {
150
149
ID : testCase .Lookup (name ),
@@ -158,12 +157,42 @@ func setupTestData(t *testing.T, testCase *authorizeTest, db database.Store, ctx
158
157
})
159
158
require .NoError (t , err , "insert workspace" )
160
159
161
- // Reinsert the workspace.
162
160
data [name ] = workspace
163
- rbacObjects [name ] = workspace
161
+ case database.WorkspaceBuild :
162
+ build , err := db .InsertWorkspaceBuild (ctx , database.InsertWorkspaceBuildParams {
163
+ ID : testCase .Lookup (name ),
164
+ CreatedAt : time .Now (),
165
+ UpdatedAt : time .Now (),
166
+ WorkspaceID : takeFirst (orig .WorkspaceID , uuid .New ()),
167
+ TemplateVersionID : takeFirst (orig .TemplateVersionID , uuid .New ()),
168
+ BuildNumber : takeFirst (orig .BuildNumber , 0 ),
169
+ Transition : takeFirst (orig .Transition , database .WorkspaceTransitionStart ),
170
+ InitiatorID : takeFirst (orig .InitiatorID , uuid .New ()),
171
+ JobID : takeFirst (orig .InitiatorID , uuid .New ()),
172
+ ProvisionerState : []byte {},
173
+ Deadline : time .Now (),
174
+ Reason : takeFirst (orig .Reason , database .BuildReasonInitiator ),
175
+ })
176
+ require .NoError (t , err , "insert workspace build" )
177
+
178
+ data [name ] = build
179
+ case database.User :
180
+ user , err := db .InsertUser (ctx , database.InsertUserParams {
181
+ ID : testCase .Lookup (name ),
182
+ Email : takeFirst (orig .Email , namesgenerator .GetRandomName (1 )),
183
+ Username : takeFirst (orig .Username , namesgenerator .GetRandomName (1 )),
184
+ HashedPassword : []byte {},
185
+ CreatedAt : time .Now (),
186
+ UpdatedAt : time .Now (),
187
+ RBACRoles : []string {},
188
+ LoginType : takeFirst (orig .LoginType , database .LoginTypePassword ),
189
+ })
190
+ require .NoError (t , err , "insert user" )
191
+
192
+ data [name ] = user
164
193
}
165
194
}
166
- return rbacObjects
195
+ return data
167
196
}
168
197
169
198
// takeFirst will take the first non empty value.
0 commit comments