@@ -197,4 +197,37 @@ func TestGetUserRepoPermission(t *testing.T) {
197197 assert .Equal (t , perm_model .AccessModeWrite , perm .unitsMode [unit .TypeCode ])
198198 assert .Equal (t , perm_model .AccessModeRead , perm .unitsMode [unit .TypeIssues ])
199199 })
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+ })
200233}
0 commit comments