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