@@ -197,4 +197,37 @@ func TestGetUserRepoPermission(t *testing.T) {
197
197
assert .Equal (t , perm_model .AccessModeWrite , perm .unitsMode [unit .TypeCode ])
198
198
assert .Equal (t , perm_model .AccessModeRead , perm .unitsMode [unit .TypeIssues ])
199
199
})
200
+
201
+ repo3 := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 3 }) // org private repo, same org as repo 32
202
+ require .NoError (t , repo3 .LoadOwner (ctx ))
203
+ require .True (t , repo3 .Owner .IsOrganization ())
204
+ require .NoError (t , db .TruncateBeans (ctx , & organization.TeamUnit {}, & Access {})) // The user has access set of that repo, remove it, it is useless for our test
205
+ require .NoError (t , db .Insert (ctx , & organization.TeamRepo {OrgID : org .ID , TeamID : team .ID , RepoID : repo3 .ID }))
206
+ t .Run ("DoerWithNoopTeamOnPrivateRepo" , func (t * testing.T ) {
207
+ perm , err := GetUserRepoPermission (ctx , repo3 , user )
208
+ require .NoError (t , err )
209
+ assert .Equal (t , perm_model .AccessModeNone , perm .AccessMode )
210
+ assert .Equal (t , perm_model .AccessModeNone , perm .unitsMode [unit .TypeCode ])
211
+ assert .Equal (t , perm_model .AccessModeNone , perm .unitsMode [unit .TypeIssues ])
212
+ })
213
+
214
+ require .NoError (t , db .Insert (ctx , & organization.TeamUnit {OrgID : org .ID , TeamID : team .ID , Type : unit .TypeCode , AccessMode : perm_model .AccessModeNone }))
215
+ require .NoError (t , db .Insert (ctx , & organization.TeamUnit {OrgID : org .ID , TeamID : team .ID , Type : unit .TypeIssues , AccessMode : perm_model .AccessModeRead }))
216
+ t .Run ("DoerWithReadIssueTeamOnPrivateRepo" , func (t * testing.T ) {
217
+ perm , err := GetUserRepoPermission (ctx , repo3 , user )
218
+ require .NoError (t , err )
219
+ assert .Equal (t , perm_model .AccessModeNone , perm .AccessMode )
220
+ assert .Equal (t , perm_model .AccessModeNone , perm .unitsMode [unit .TypeCode ])
221
+ assert .Equal (t , perm_model .AccessModeRead , perm .unitsMode [unit .TypeIssues ])
222
+ })
223
+
224
+ require .NoError (t , db .Insert (ctx , repo_model.Collaboration {RepoID : repo3 .ID , UserID : user .ID , Mode : perm_model .AccessModeWrite }))
225
+ require .NoError (t , db .Insert (ctx , Access {RepoID : repo3 .ID , UserID : user .ID , Mode : perm_model .AccessModeWrite }))
226
+ t .Run ("DoerWithReadIssueTeamAndWriteCollaboratorOnPrivateRepo" , func (t * testing.T ) {
227
+ perm , err := GetUserRepoPermission (ctx , repo3 , user )
228
+ require .NoError (t , err )
229
+ assert .Equal (t , perm_model .AccessModeWrite , perm .AccessMode )
230
+ assert .Equal (t , perm_model .AccessModeWrite , perm .unitsMode [unit .TypeCode ])
231
+ assert .Equal (t , perm_model .AccessModeWrite , perm .unitsMode [unit .TypeIssues ])
232
+ })
200
233
}
0 commit comments