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