@@ -7,12 +7,92 @@ import (
77	"net/http" 
88	"testing" 
99
10+ 	"code.gitea.io/gitea/models" 
11+ 	auth_model "code.gitea.io/gitea/models/auth" 
12+ 	"code.gitea.io/gitea/models/db" 
13+ 	org_model "code.gitea.io/gitea/models/organization" 
14+ 	"code.gitea.io/gitea/models/unittest" 
15+ 	user_model "code.gitea.io/gitea/models/user" 
1016	api "code.gitea.io/gitea/modules/structs" 
1117	"code.gitea.io/gitea/tests" 
18+ 
19+ 	"github.com/stretchr/testify/assert" 
1220)
1321
1422func  TestCreateForkNoLogin (t  * testing.T ) {
1523	defer  tests .PrepareTestEnv (t )()
1624	req  :=  NewRequestWithJSON (t , "POST" , "/api/v1/repos/user2/repo1/forks" , & api.CreateForkOption {})
1725	MakeRequest (t , req , http .StatusUnauthorized )
1826}
27+ 
28+ func  TestAPIForkListLimitedAndPrivateRepos (t  * testing.T ) {
29+ 	defer  tests .PrepareTestEnv (t )()
30+ 
31+ 	user1Sess  :=  loginUser (t , "user1" )
32+ 	user1  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "user1" })
33+ 
34+ 	// fork into a limited org 
35+ 	limitedOrg  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 22 })
36+ 	assert .EqualValues (t , api .VisibleTypeLimited , limitedOrg .Visibility )
37+ 
38+ 	ownerTeam1 , err  :=  org_model .OrgFromUser (limitedOrg ).GetOwnerTeam (db .DefaultContext )
39+ 	assert .NoError (t , err )
40+ 	assert .NoError (t , models .AddTeamMember (db .DefaultContext , ownerTeam1 , user1 ))
41+ 	user1Token  :=  getTokenForLoggedInUser (t , user1Sess , auth_model .AccessTokenScopeWriteRepository , auth_model .AccessTokenScopeWriteOrganization )
42+ 	req  :=  NewRequestWithJSON (t , "POST" , "/api/v1/repos/user2/repo1/forks" , & api.CreateForkOption {
43+ 		Organization : & limitedOrg .Name ,
44+ 	}).AddTokenAuth (user1Token )
45+ 	MakeRequest (t , req , http .StatusAccepted )
46+ 
47+ 	// fork into a private org 
48+ 	user4Sess  :=  loginUser (t , "user4" )
49+ 	user4  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "user4" })
50+ 	privateOrg  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 23 })
51+ 	assert .EqualValues (t , api .VisibleTypePrivate , privateOrg .Visibility )
52+ 
53+ 	ownerTeam2 , err  :=  org_model .OrgFromUser (privateOrg ).GetOwnerTeam (db .DefaultContext )
54+ 	assert .NoError (t , err )
55+ 	assert .NoError (t , models .AddTeamMember (db .DefaultContext , ownerTeam2 , user4 ))
56+ 	user4Token  :=  getTokenForLoggedInUser (t , user4Sess , auth_model .AccessTokenScopeWriteRepository , auth_model .AccessTokenScopeWriteOrganization )
57+ 	req  =  NewRequestWithJSON (t , "POST" , "/api/v1/repos/user2/repo1/forks" , & api.CreateForkOption {
58+ 		Organization : & privateOrg .Name ,
59+ 	}).AddTokenAuth (user4Token )
60+ 	MakeRequest (t , req , http .StatusAccepted )
61+ 
62+ 	t .Run ("Anonymous" , func (t  * testing.T ) {
63+ 		defer  tests .PrintCurrentTest (t )()
64+ 
65+ 		req  :=  NewRequest (t , "GET" , "/api/v1/repos/user2/repo1/forks" )
66+ 		resp  :=  MakeRequest (t , req , http .StatusOK )
67+ 
68+ 		var  forks  []* api.Repository 
69+ 		DecodeJSON (t , resp , & forks )
70+ 
71+ 		assert .Empty (t , forks )
72+ 		assert .EqualValues (t , "0" , resp .Header ().Get ("X-Total-Count" ))
73+ 	})
74+ 
75+ 	t .Run ("Logged in" , func (t  * testing.T ) {
76+ 		defer  tests .PrintCurrentTest (t )()
77+ 
78+ 		req  :=  NewRequest (t , "GET" , "/api/v1/repos/user2/repo1/forks" ).AddTokenAuth (user1Token )
79+ 		resp  :=  MakeRequest (t , req , http .StatusOK )
80+ 
81+ 		var  forks  []* api.Repository 
82+ 		DecodeJSON (t , resp , & forks )
83+ 
84+ 		assert .Len (t , forks , 1 )
85+ 		assert .EqualValues (t , "1" , resp .Header ().Get ("X-Total-Count" ))
86+ 
87+ 		assert .NoError (t , models .AddTeamMember (db .DefaultContext , ownerTeam2 , user1 ))
88+ 
89+ 		req  =  NewRequest (t , "GET" , "/api/v1/repos/user2/repo1/forks" ).AddTokenAuth (user1Token )
90+ 		resp  =  MakeRequest (t , req , http .StatusOK )
91+ 
92+ 		forks  =  []* api.Repository {}
93+ 		DecodeJSON (t , resp , & forks )
94+ 
95+ 		assert .Len (t , forks , 2 )
96+ 		assert .EqualValues (t , "2" , resp .Header ().Get ("X-Total-Count" ))
97+ 	})
98+ }
0 commit comments