@@ -5,7 +5,6 @@ package integration
55
66import  (
77	"net/http" 
8- 	"net/url" 
98	"testing" 
109
1110	auth_model "code.gitea.io/gitea/models/auth" 
@@ -14,132 +13,145 @@ import (
1413	"code.gitea.io/gitea/models/unittest" 
1514	user_model "code.gitea.io/gitea/models/user" 
1615	api "code.gitea.io/gitea/modules/structs" 
16+ 	"code.gitea.io/gitea/tests" 
1717
1818	"github.com/stretchr/testify/assert" 
1919)
2020
2121func  TestAPIRepoCollaboratorPermission (t  * testing.T ) {
22- 	onGiteaRun ( t ,  func ( t   * testing. T ,  u   * url. URL ) { 
23- 		 repo2  :=  unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 2 })
24- 		 repo2Owner  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : repo2 .OwnerID })
22+ 	defer   tests . PrepareTestEnv ( t )() 
23+ 	repo2  :=  unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 2 })
24+ 	repo2Owner  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : repo2 .OwnerID })
2525
26- 		 user4  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 4 })
27- 		 user5  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 5 })
28- 		 user10  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 10 })
29- 		 user11  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 11 })
30- 		 user34  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 34 })
26+ 	user4  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 4 })
27+ 	user5  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 5 })
28+ 	user10  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 10 })
29+ 	user11  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 11 })
30+ 	user34  :=  unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 34 })
3131
32- 		 testCtx  :=  NewAPITestContext (t , repo2Owner .Name , repo2 .Name , auth_model .AccessTokenScopeWriteRepository )
32+ 	testCtx  :=  NewAPITestContext (t , repo2Owner .Name , repo2 .Name , auth_model .AccessTokenScopeWriteRepository )
3333
34- 		 t .Run ("RepoOwnerShouldBeOwner" , func (t  * testing.T ) {
35- 			 req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , repo2Owner .Name ).
36- 				 AddTokenAuth (testCtx .Token )
37- 			 resp  :=  MakeRequest (t , req , http .StatusOK )
34+ 	t .Run ("RepoOwnerShouldBeOwner" , func (t  * testing.T ) {
35+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , repo2Owner .Name ).
36+ 			AddTokenAuth (testCtx .Token )
37+ 		resp  :=  MakeRequest (t , req , http .StatusOK )
3838
39- 			 var  repoPermission  api.RepoCollaboratorPermission 
40- 			 DecodeJSON (t , resp , & repoPermission )
39+ 		var  repoPermission  api.RepoCollaboratorPermission 
40+ 		DecodeJSON (t , resp , & repoPermission )
4141
42- 			 assert .Equal (t , "owner" , repoPermission .Permission )
43- 		 })
42+ 		assert .Equal (t , "owner" , repoPermission .Permission )
43+ 	})
4444
45- 		 t .Run ("CollaboratorWithReadAccess" , func (t  * testing.T ) {
46- 			 t .Run ("AddUserAsCollaboratorWithReadAccess" , doAPIAddCollaborator (testCtx , user4 .Name , perm .AccessModeRead ))
45+ 	t .Run ("CollaboratorWithReadAccess" , func (t  * testing.T ) {
46+ 		t .Run ("AddUserAsCollaboratorWithReadAccess" , doAPIAddCollaborator (testCtx , user4 .Name , perm .AccessModeRead ))
4747
48- 			 req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user4 .Name ).
49- 				 AddTokenAuth (testCtx .Token )
50- 			 resp  :=  MakeRequest (t , req , http .StatusOK )
48+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user4 .Name ).
49+ 			AddTokenAuth (testCtx .Token )
50+ 		resp  :=  MakeRequest (t , req , http .StatusOK )
5151
52- 			 var  repoPermission  api.RepoCollaboratorPermission 
53- 			 DecodeJSON (t , resp , & repoPermission )
52+ 		var  repoPermission  api.RepoCollaboratorPermission 
53+ 		DecodeJSON (t , resp , & repoPermission )
5454
55- 			 assert .Equal (t , "read" , repoPermission .Permission )
56- 		 })
55+ 		assert .Equal (t , "read" , repoPermission .Permission )
56+ 	})
5757
58- 		 t .Run ("CollaboratorWithWriteAccess" , func (t  * testing.T ) {
59- 			 t .Run ("AddUserAsCollaboratorWithWriteAccess" , doAPIAddCollaborator (testCtx , user4 .Name , perm .AccessModeWrite ))
58+ 	t .Run ("CollaboratorWithWriteAccess" , func (t  * testing.T ) {
59+ 		t .Run ("AddUserAsCollaboratorWithWriteAccess" , doAPIAddCollaborator (testCtx , user4 .Name , perm .AccessModeWrite ))
6060
61- 			 req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user4 .Name ).
62- 				 AddTokenAuth (testCtx .Token )
63- 			 resp  :=  MakeRequest (t , req , http .StatusOK )
61+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user4 .Name ).
62+ 			AddTokenAuth (testCtx .Token )
63+ 		resp  :=  MakeRequest (t , req , http .StatusOK )
6464
65- 			 var  repoPermission  api.RepoCollaboratorPermission 
66- 			 DecodeJSON (t , resp , & repoPermission )
65+ 		var  repoPermission  api.RepoCollaboratorPermission 
66+ 		DecodeJSON (t , resp , & repoPermission )
6767
68- 			 assert .Equal (t , "write" , repoPermission .Permission )
69- 		 })
68+ 		assert .Equal (t , "write" , repoPermission .Permission )
69+ 	})
7070
71- 		 t .Run ("CollaboratorWithAdminAccess" , func (t  * testing.T ) {
72- 			 t .Run ("AddUserAsCollaboratorWithAdminAccess" , doAPIAddCollaborator (testCtx , user4 .Name , perm .AccessModeAdmin ))
71+ 	t .Run ("CollaboratorWithAdminAccess" , func (t  * testing.T ) {
72+ 		t .Run ("AddUserAsCollaboratorWithAdminAccess" , doAPIAddCollaborator (testCtx , user4 .Name , perm .AccessModeAdmin ))
7373
74- 			 req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user4 .Name ).
75- 				 AddTokenAuth (testCtx .Token )
76- 			 resp  :=  MakeRequest (t , req , http .StatusOK )
74+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user4 .Name ).
75+ 			AddTokenAuth (testCtx .Token )
76+ 		resp  :=  MakeRequest (t , req , http .StatusOK )
7777
78- 			 var  repoPermission  api.RepoCollaboratorPermission 
79- 			 DecodeJSON (t , resp , & repoPermission )
78+ 		var  repoPermission  api.RepoCollaboratorPermission 
79+ 		DecodeJSON (t , resp , & repoPermission )
8080
81- 			 assert .Equal (t , "admin" , repoPermission .Permission )
82- 		 })
81+ 		assert .Equal (t , "admin" , repoPermission .Permission )
82+ 	})
8383
84- 		 t .Run ("CollaboratorNotFound" , func (t  * testing.T ) {
85- 			 req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , "non-existent-user" ).
86- 				 AddTokenAuth (testCtx .Token )
87- 			 MakeRequest (t , req , http .StatusNotFound )
88- 		 })
84+ 	t .Run ("CollaboratorNotFound" , func (t  * testing.T ) {
85+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , "non-existent-user" ).
86+ 			AddTokenAuth (testCtx .Token )
87+ 		MakeRequest (t , req , http .StatusNotFound )
88+ 	})
8989
90- 		t .Run ("CollaboratorBlocked" , func (t  * testing.T ) {
91- 			ctx  :=  NewAPITestContext (t , repo2Owner .Name , repo2 .Name , auth_model .AccessTokenScopeWriteRepository )
92- 			ctx .ExpectedCode  =  http .StatusForbidden 
93- 			doAPIAddCollaborator (ctx , user34 .Name , perm .AccessModeAdmin )(t )
94- 		})
90+ 	t .Run ("CollaboratorBlocked" , func (t  * testing.T ) {
91+ 		ctx  :=  NewAPITestContext (t , repo2Owner .Name , repo2 .Name , auth_model .AccessTokenScopeWriteRepository )
92+ 		ctx .ExpectedCode  =  http .StatusForbidden 
93+ 		doAPIAddCollaborator (ctx , user34 .Name , perm .AccessModeAdmin )(t )
94+ 	})
95+ 
96+ 	t .Run ("CollaboratorCanQueryItsPermissions" , func (t  * testing.T ) {
97+ 		t .Run ("AddUserAsCollaboratorWithReadAccess" , doAPIAddCollaborator (testCtx , user5 .Name , perm .AccessModeRead ))
98+ 
99+ 		_session  :=  loginUser (t , user5 .Name )
100+ 		_testCtx  :=  NewAPITestContext (t , user5 .Name , repo2 .Name , auth_model .AccessTokenScopeReadRepository )
101+ 
102+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user5 .Name ).
103+ 			AddTokenAuth (_testCtx .Token )
104+ 		resp  :=  _session .MakeRequest (t , req , http .StatusOK )
95105
96- 		t . Run ( "CollaboratorCanQueryItsPermissions" ,  func ( t   * testing. T ) { 
97- 			 t . Run ( "AddUserAsCollaboratorWithReadAccess" ,  doAPIAddCollaborator ( testCtx ,  user5 . Name ,  perm . AccessModeRead ) )
106+ 		var   repoPermission  api. RepoCollaboratorPermission 
107+ 		DecodeJSON ( t ,  resp ,  & repoPermission )
98108
99- 			_session  :=  loginUser (t , user5 .Name )
100- 			_testCtx  :=  NewAPITestContext (t , user5 .Name , repo2 .Name , auth_model .AccessTokenScopeReadRepository )
109+ 		assert .Equal (t , "read" , repoPermission .Permission )
101110
102- 			 req   :=   NewRequestf ( t ,  "GET " , "/api/v1/repos/%s/%s/collaborators/%s/permission" ,  repo2Owner . Name ,  repo2 . Name ,  user5 . Name ). 
103- 				 AddTokenAuth ( _testCtx . Token )
104- 			resp  :=  _session . MakeRequest (t , req ,  http . StatusOK )
111+ 		t . Run ( "CollaboratorCanReadOwnPermission " , func ( t   * testing. T ) { 
112+ 			session   :=   loginUser ( t ,  user5 . Name )
113+ 			token  :=  getTokenForLoggedInUser (t , session ,  auth_model . AccessTokenScopeReadRepository )
105114
106- 			var   repoPermission   api. RepoCollaboratorPermission 
107- 			DecodeJSON (t , resp ,  & repoPermission )
115+ 			req   =   NewRequestf ( t ,  "GET" ,  "/ api/v1/repos/%s/%s/collaborators/%s/permission" ,  repo2Owner . Name ,  repo2 . Name ,  user5 . Name ). AddTokenAuth ( token ) 
116+ 			resp   =   MakeRequest (t , req ,  http . StatusOK )
108117
109- 			assert .Equal (t , "read" , repoPermission .Permission )
118+ 			repoCollPerm  :=  api.RepoCollaboratorPermission {}
119+ 			DecodeJSON (t , resp , & repoCollPerm )
120+ 
121+ 			assert .Equal (t , "read" , repoCollPerm .Permission )
110122		})
123+ 	})
111124
112- 		 t .Run ("CollaboratorCanQueryItsPermissions" , func (t  * testing.T ) {
113- 			 t .Run ("AddUserAsCollaboratorWithReadAccess" , doAPIAddCollaborator (testCtx , user5 .Name , perm .AccessModeRead ))
125+ 	t .Run ("CollaboratorCanQueryItsPermissions" , func (t  * testing.T ) {
126+ 		t .Run ("AddUserAsCollaboratorWithReadAccess" , doAPIAddCollaborator (testCtx , user5 .Name , perm .AccessModeRead ))
114127
115- 			 _session  :=  loginUser (t , user5 .Name )
116- 			 _testCtx  :=  NewAPITestContext (t , user5 .Name , repo2 .Name , auth_model .AccessTokenScopeReadRepository )
128+ 		_session  :=  loginUser (t , user5 .Name )
129+ 		_testCtx  :=  NewAPITestContext (t , user5 .Name , repo2 .Name , auth_model .AccessTokenScopeReadRepository )
117130
118- 			 req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user5 .Name ).
119- 				 AddTokenAuth (_testCtx .Token )
120- 			 resp  :=  _session .MakeRequest (t , req , http .StatusOK )
131+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user5 .Name ).
132+ 			AddTokenAuth (_testCtx .Token )
133+ 		resp  :=  _session .MakeRequest (t , req , http .StatusOK )
121134
122- 			 var  repoPermission  api.RepoCollaboratorPermission 
123- 			 DecodeJSON (t , resp , & repoPermission )
135+ 		var  repoPermission  api.RepoCollaboratorPermission 
136+ 		DecodeJSON (t , resp , & repoPermission )
124137
125- 			 assert .Equal (t , "read" , repoPermission .Permission )
126- 		 })
138+ 		assert .Equal (t , "read" , repoPermission .Permission )
139+ 	})
127140
128- 		 t .Run ("RepoAdminCanQueryACollaboratorsPermissions" , func (t  * testing.T ) {
129- 			 t .Run ("AddUserAsCollaboratorWithAdminAccess" , doAPIAddCollaborator (testCtx , user10 .Name , perm .AccessModeAdmin ))
130- 			 t .Run ("AddUserAsCollaboratorWithReadAccess" , doAPIAddCollaborator (testCtx , user11 .Name , perm .AccessModeRead ))
141+ 	t .Run ("RepoAdminCanQueryACollaboratorsPermissions" , func (t  * testing.T ) {
142+ 		t .Run ("AddUserAsCollaboratorWithAdminAccess" , doAPIAddCollaborator (testCtx , user10 .Name , perm .AccessModeAdmin ))
143+ 		t .Run ("AddUserAsCollaboratorWithReadAccess" , doAPIAddCollaborator (testCtx , user11 .Name , perm .AccessModeRead ))
131144
132- 			 _session  :=  loginUser (t , user10 .Name )
133- 			 _testCtx  :=  NewAPITestContext (t , user10 .Name , repo2 .Name , auth_model .AccessTokenScopeReadRepository )
145+ 		_session  :=  loginUser (t , user10 .Name )
146+ 		_testCtx  :=  NewAPITestContext (t , user10 .Name , repo2 .Name , auth_model .AccessTokenScopeReadRepository )
134147
135- 			 req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user11 .Name ).
136- 				 AddTokenAuth (_testCtx .Token )
137- 			 resp  :=  _session .MakeRequest (t , req , http .StatusOK )
148+ 		req  :=  NewRequestf (t , "GET" , "/api/v1/repos/%s/%s/collaborators/%s/permission" , repo2Owner .Name , repo2 .Name , user11 .Name ).
149+ 			AddTokenAuth (_testCtx .Token )
150+ 		resp  :=  _session .MakeRequest (t , req , http .StatusOK )
138151
139- 			 var  repoPermission  api.RepoCollaboratorPermission 
140- 			 DecodeJSON (t , resp , & repoPermission )
152+ 		var  repoPermission  api.RepoCollaboratorPermission 
153+ 		DecodeJSON (t , resp , & repoPermission )
141154
142- 			assert .Equal (t , "read" , repoPermission .Permission )
143- 		})
155+ 		assert .Equal (t , "read" , repoPermission .Permission )
144156	})
145157}
0 commit comments