@@ -5,7 +5,6 @@ package integration
5
5
6
6
import (
7
7
"net/http"
8
- "net/url"
9
8
"testing"
10
9
11
10
auth_model "code.gitea.io/gitea/models/auth"
@@ -14,132 +13,145 @@ import (
14
13
"code.gitea.io/gitea/models/unittest"
15
14
user_model "code.gitea.io/gitea/models/user"
16
15
api "code.gitea.io/gitea/modules/structs"
16
+ "code.gitea.io/gitea/tests"
17
17
18
18
"github.com/stretchr/testify/assert"
19
19
)
20
20
21
21
func 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 })
25
25
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 })
31
31
32
- testCtx := NewAPITestContext (t , repo2Owner .Name , repo2 .Name , auth_model .AccessTokenScopeWriteRepository )
32
+ testCtx := NewAPITestContext (t , repo2Owner .Name , repo2 .Name , auth_model .AccessTokenScopeWriteRepository )
33
33
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 )
38
38
39
- var repoPermission api.RepoCollaboratorPermission
40
- DecodeJSON (t , resp , & repoPermission )
39
+ var repoPermission api.RepoCollaboratorPermission
40
+ DecodeJSON (t , resp , & repoPermission )
41
41
42
- assert .Equal (t , "owner" , repoPermission .Permission )
43
- })
42
+ assert .Equal (t , "owner" , repoPermission .Permission )
43
+ })
44
44
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 ))
47
47
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 )
51
51
52
- var repoPermission api.RepoCollaboratorPermission
53
- DecodeJSON (t , resp , & repoPermission )
52
+ var repoPermission api.RepoCollaboratorPermission
53
+ DecodeJSON (t , resp , & repoPermission )
54
54
55
- assert .Equal (t , "read" , repoPermission .Permission )
56
- })
55
+ assert .Equal (t , "read" , repoPermission .Permission )
56
+ })
57
57
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 ))
60
60
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 )
64
64
65
- var repoPermission api.RepoCollaboratorPermission
66
- DecodeJSON (t , resp , & repoPermission )
65
+ var repoPermission api.RepoCollaboratorPermission
66
+ DecodeJSON (t , resp , & repoPermission )
67
67
68
- assert .Equal (t , "write" , repoPermission .Permission )
69
- })
68
+ assert .Equal (t , "write" , repoPermission .Permission )
69
+ })
70
70
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 ))
73
73
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 )
77
77
78
- var repoPermission api.RepoCollaboratorPermission
79
- DecodeJSON (t , resp , & repoPermission )
78
+ var repoPermission api.RepoCollaboratorPermission
79
+ DecodeJSON (t , resp , & repoPermission )
80
80
81
- assert .Equal (t , "admin" , repoPermission .Permission )
82
- })
81
+ assert .Equal (t , "admin" , repoPermission .Permission )
82
+ })
83
83
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
+ })
89
89
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 )
95
105
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 )
98
108
99
- _session := loginUser (t , user5 .Name )
100
- _testCtx := NewAPITestContext (t , user5 .Name , repo2 .Name , auth_model .AccessTokenScopeReadRepository )
109
+ assert .Equal (t , "read" , repoPermission .Permission )
101
110
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 )
105
114
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 )
108
117
109
- assert .Equal (t , "read" , repoPermission .Permission )
118
+ repoCollPerm := api.RepoCollaboratorPermission {}
119
+ DecodeJSON (t , resp , & repoCollPerm )
120
+
121
+ assert .Equal (t , "read" , repoCollPerm .Permission )
110
122
})
123
+ })
111
124
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 ))
114
127
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 )
117
130
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 )
121
134
122
- var repoPermission api.RepoCollaboratorPermission
123
- DecodeJSON (t , resp , & repoPermission )
135
+ var repoPermission api.RepoCollaboratorPermission
136
+ DecodeJSON (t , resp , & repoPermission )
124
137
125
- assert .Equal (t , "read" , repoPermission .Permission )
126
- })
138
+ assert .Equal (t , "read" , repoPermission .Permission )
139
+ })
127
140
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 ))
131
144
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 )
134
147
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 )
138
151
139
- var repoPermission api.RepoCollaboratorPermission
140
- DecodeJSON (t , resp , & repoPermission )
152
+ var repoPermission api.RepoCollaboratorPermission
153
+ DecodeJSON (t , resp , & repoPermission )
141
154
142
- assert .Equal (t , "read" , repoPermission .Permission )
143
- })
155
+ assert .Equal (t , "read" , repoPermission .Permission )
144
156
})
145
157
}
0 commit comments