Skip to content

Commit 066d661

Browse files
committed
fix tests
1 parent fde7447 commit 066d661

File tree

1 file changed

+139
-160
lines changed

1 file changed

+139
-160
lines changed

tests/integration/api_org_test.go

Lines changed: 139 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package integration
66
import (
77
"fmt"
88
"net/http"
9-
"net/url"
109
"strings"
1110
"testing"
1211

@@ -19,46 +18,52 @@ import (
1918
user_model "code.gitea.io/gitea/models/user"
2019
"code.gitea.io/gitea/modules/setting"
2120
api "code.gitea.io/gitea/modules/structs"
21+
"code.gitea.io/gitea/modules/test"
2222
"code.gitea.io/gitea/tests"
2323

2424
"github.com/stretchr/testify/assert"
2525
)
2626

27-
func TestAPIOrgCreate(t *testing.T) {
28-
onGiteaRun(t, func(*testing.T, *url.URL) {
29-
token := getUserToken(t, "user1", auth_model.AccessTokenScopeWriteOrganization)
30-
31-
org := api.CreateOrgOption{
32-
UserName: "user1_org",
33-
FullName: "User1's organization",
34-
Description: "This organization created by user1",
35-
Website: "https://try.gitea.io",
36-
Location: "Shanghai",
37-
Visibility: "limited",
38-
}
39-
req := NewRequestWithJSON(t, "POST", "/api/v1/orgs", &org).
40-
AddTokenAuth(token)
41-
resp := MakeRequest(t, req, http.StatusCreated)
42-
43-
var apiOrg api.Organization
44-
DecodeJSON(t, resp, &apiOrg)
45-
46-
assert.Equal(t, org.UserName, apiOrg.Name)
47-
assert.Equal(t, org.FullName, apiOrg.FullName)
48-
assert.Equal(t, org.Description, apiOrg.Description)
49-
assert.Equal(t, org.Website, apiOrg.Website)
50-
assert.Equal(t, org.Location, apiOrg.Location)
51-
assert.Equal(t, org.Visibility, apiOrg.Visibility)
52-
53-
unittest.AssertExistsAndLoadBean(t, &user_model.User{
54-
Name: org.UserName,
55-
LowerName: strings.ToLower(org.UserName),
56-
FullName: org.FullName,
57-
})
27+
func TestAPIOrgCreateRename(t *testing.T) {
28+
defer tests.PrepareTestEnv(t)()
29+
token := getUserToken(t, "user1", auth_model.AccessTokenScopeWriteOrganization)
30+
31+
org := api.CreateOrgOption{
32+
UserName: "user1_org",
33+
FullName: "User1's organization",
34+
Description: "This organization created by user1",
35+
Website: "https://try.gitea.io",
36+
Location: "Shanghai",
37+
Visibility: "limited",
38+
}
39+
req := NewRequestWithJSON(t, "POST", "/api/v1/orgs", &org).AddTokenAuth(token)
40+
resp := MakeRequest(t, req, http.StatusCreated)
41+
42+
var apiOrg api.Organization
43+
DecodeJSON(t, resp, &apiOrg)
44+
45+
assert.Equal(t, org.UserName, apiOrg.Name)
46+
assert.Equal(t, org.FullName, apiOrg.FullName)
47+
assert.Equal(t, org.Description, apiOrg.Description)
48+
assert.Equal(t, org.Website, apiOrg.Website)
49+
assert.Equal(t, org.Location, apiOrg.Location)
50+
assert.Equal(t, org.Visibility, apiOrg.Visibility)
51+
52+
unittest.AssertExistsAndLoadBean(t, &user_model.User{
53+
Name: org.UserName,
54+
LowerName: strings.ToLower(org.UserName),
55+
FullName: org.FullName,
56+
})
57+
58+
// check org name
59+
req = NewRequestf(t, "GET", "/api/v1/orgs/%s", org.UserName).AddTokenAuth(token)
60+
resp = MakeRequest(t, req, http.StatusOK)
61+
DecodeJSON(t, resp, &apiOrg)
62+
assert.EqualValues(t, org.UserName, apiOrg.Name)
5863

64+
t.Run("CheckPermission", func(t *testing.T) {
5965
// Check owner team permission
6066
ownerTeam, _ := org_model.GetOwnerTeam(db.DefaultContext, apiOrg.ID)
61-
6267
for _, ut := range unit_model.AllRepoUnitTypes {
6368
up := perm.AccessModeOwner
6469
if ut == unit_model.TypeExternalTracker || ut == unit_model.TypeExternalWiki {
@@ -71,103 +76,101 @@ func TestAPIOrgCreate(t *testing.T) {
7176
AccessMode: up,
7277
})
7378
}
79+
})
7480

75-
req = NewRequestf(t, "GET", "/api/v1/orgs/%s", org.UserName).
76-
AddTokenAuth(token)
81+
t.Run("CheckMembers", func(t *testing.T) {
82+
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", org.UserName).AddTokenAuth(token)
7783
resp = MakeRequest(t, req, http.StatusOK)
78-
DecodeJSON(t, resp, &apiOrg)
79-
assert.EqualValues(t, org.UserName, apiOrg.Name)
8084

81-
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", org.UserName).
82-
AddTokenAuth(token)
83-
resp = MakeRequest(t, req, http.StatusOK)
85+
// user1 on this org is public
86+
var users []*api.User
87+
DecodeJSON(t, resp, &users)
88+
assert.Len(t, users, 1)
89+
assert.EqualValues(t, "user1", users[0].UserName)
90+
})
8491

92+
t.Run("RenameOrg", func(t *testing.T) {
93+
req = NewRequestWithJSON(t, "POST", "/api/v1/orgs/user1_org/rename", &api.RenameOrgOption{
94+
NewName: "renamed_org",
95+
}).AddTokenAuth(token)
96+
MakeRequest(t, req, http.StatusNoContent)
97+
unittest.AssertExistsAndLoadBean(t, &org_model.Organization{Name: "renamed_org"})
98+
org.UserName = "renamed_org" // update the variable so the following tests could still use it
99+
})
100+
101+
t.Run("ListRepos", func(t *testing.T) {
102+
// FIXME: this test is wrong, there is no repository at all, so the for-loop is empty
103+
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", org.UserName).AddTokenAuth(token)
104+
resp = MakeRequest(t, req, http.StatusOK)
85105
var repos []*api.Repository
86106
DecodeJSON(t, resp, &repos)
87107
for _, repo := range repos {
88108
assert.False(t, repo.Private)
89109
}
90-
91-
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", org.UserName).
92-
AddTokenAuth(token)
93-
resp = MakeRequest(t, req, http.StatusOK)
94-
95-
// user1 on this org is public
96-
var users []*api.User
97-
DecodeJSON(t, resp, &users)
98-
assert.Len(t, users, 1)
99-
assert.EqualValues(t, "user1", users[0].UserName)
100110
})
101111
}
102112

103113
func TestAPIOrgEdit(t *testing.T) {
104-
onGiteaRun(t, func(*testing.T, *url.URL) {
105-
session := loginUser(t, "user1")
106-
107-
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
108-
org := api.EditOrgOption{
109-
FullName: "Org3 organization new full name",
110-
Description: "A new description",
111-
Website: "https://try.gitea.io/new",
112-
Location: "Beijing",
113-
Visibility: "private",
114-
}
115-
req := NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &org).
116-
AddTokenAuth(token)
117-
resp := MakeRequest(t, req, http.StatusOK)
118-
119-
var apiOrg api.Organization
120-
DecodeJSON(t, resp, &apiOrg)
121-
122-
assert.Equal(t, "org3", apiOrg.Name)
123-
assert.Equal(t, org.FullName, apiOrg.FullName)
124-
assert.Equal(t, org.Description, apiOrg.Description)
125-
assert.Equal(t, org.Website, apiOrg.Website)
126-
assert.Equal(t, org.Location, apiOrg.Location)
127-
assert.Equal(t, org.Visibility, apiOrg.Visibility)
128-
})
114+
defer tests.PrepareTestEnv(t)()
115+
session := loginUser(t, "user1")
116+
117+
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
118+
org := api.EditOrgOption{
119+
FullName: "Org3 organization new full name",
120+
Description: "A new description",
121+
Website: "https://try.gitea.io/new",
122+
Location: "Beijing",
123+
Visibility: "private",
124+
}
125+
req := NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &org).
126+
AddTokenAuth(token)
127+
resp := MakeRequest(t, req, http.StatusOK)
128+
129+
var apiOrg api.Organization
130+
DecodeJSON(t, resp, &apiOrg)
131+
132+
assert.Equal(t, "org3", apiOrg.Name)
133+
assert.Equal(t, org.FullName, apiOrg.FullName)
134+
assert.Equal(t, org.Description, apiOrg.Description)
135+
assert.Equal(t, org.Website, apiOrg.Website)
136+
assert.Equal(t, org.Location, apiOrg.Location)
137+
assert.Equal(t, org.Visibility, apiOrg.Visibility)
129138
}
130139

131140
func TestAPIOrgEditBadVisibility(t *testing.T) {
132-
onGiteaRun(t, func(*testing.T, *url.URL) {
133-
session := loginUser(t, "user1")
134-
135-
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
136-
org := api.EditOrgOption{
137-
FullName: "Org3 organization new full name",
138-
Description: "A new description",
139-
Website: "https://try.gitea.io/new",
140-
Location: "Beijing",
141-
Visibility: "badvisibility",
142-
}
143-
req := NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &org).
144-
AddTokenAuth(token)
145-
MakeRequest(t, req, http.StatusUnprocessableEntity)
146-
})
141+
defer tests.PrepareTestEnv(t)()
142+
session := loginUser(t, "user1")
143+
144+
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
145+
org := api.EditOrgOption{
146+
FullName: "Org3 organization new full name",
147+
Description: "A new description",
148+
Website: "https://try.gitea.io/new",
149+
Location: "Beijing",
150+
Visibility: "badvisibility",
151+
}
152+
req := NewRequestWithJSON(t, "PATCH", "/api/v1/orgs/org3", &org).
153+
AddTokenAuth(token)
154+
MakeRequest(t, req, http.StatusUnprocessableEntity)
147155
}
148156

149157
func TestAPIOrgDeny(t *testing.T) {
150-
onGiteaRun(t, func(*testing.T, *url.URL) {
151-
setting.Service.RequireSignInView = true
152-
defer func() {
153-
setting.Service.RequireSignInView = false
154-
}()
158+
defer tests.PrepareTestEnv(t)()
159+
defer test.MockVariableValue(&setting.Service.RequireSignInView, true)()
155160

156-
orgName := "user1_org"
157-
req := NewRequestf(t, "GET", "/api/v1/orgs/%s", orgName)
158-
MakeRequest(t, req, http.StatusNotFound)
161+
orgName := "user1_org"
162+
req := NewRequestf(t, "GET", "/api/v1/orgs/%s", orgName)
163+
MakeRequest(t, req, http.StatusNotFound)
159164

160-
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", orgName)
161-
MakeRequest(t, req, http.StatusNotFound)
165+
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", orgName)
166+
MakeRequest(t, req, http.StatusNotFound)
162167

163-
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", orgName)
164-
MakeRequest(t, req, http.StatusNotFound)
165-
})
168+
req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", orgName)
169+
MakeRequest(t, req, http.StatusNotFound)
166170
}
167171

168172
func TestAPIGetAll(t *testing.T) {
169173
defer tests.PrepareTestEnv(t)()
170-
171174
token := getUserToken(t, "user1", auth_model.AccessTokenScopeReadOrganization)
172175

173176
// accessing with a token will return all orgs
@@ -192,60 +195,36 @@ func TestAPIGetAll(t *testing.T) {
192195
}
193196

194197
func TestAPIOrgSearchEmptyTeam(t *testing.T) {
195-
onGiteaRun(t, func(*testing.T, *url.URL) {
196-
token := getUserToken(t, "user1", auth_model.AccessTokenScopeWriteOrganization)
197-
orgName := "org_with_empty_team"
198-
199-
// create org
200-
req := NewRequestWithJSON(t, "POST", "/api/v1/orgs", &api.CreateOrgOption{
201-
UserName: orgName,
202-
}).AddTokenAuth(token)
203-
MakeRequest(t, req, http.StatusCreated)
204-
205-
// create team with no member
206-
req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/orgs/%s/teams", orgName), &api.CreateTeamOption{
207-
Name: "Empty",
208-
IncludesAllRepositories: true,
209-
Permission: "read",
210-
Units: []string{"repo.code", "repo.issues", "repo.ext_issues", "repo.wiki", "repo.pulls"},
211-
}).AddTokenAuth(token)
212-
MakeRequest(t, req, http.StatusCreated)
213-
214-
// case-insensitive search for teams that have no members
215-
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/orgs/%s/teams/search?q=%s", orgName, "empty")).
216-
AddTokenAuth(token)
217-
resp := MakeRequest(t, req, http.StatusOK)
218-
data := struct {
219-
Ok bool
220-
Data []*api.Team
221-
}{}
222-
DecodeJSON(t, resp, &data)
223-
assert.True(t, data.Ok)
224-
if assert.Len(t, data.Data, 1) {
225-
assert.EqualValues(t, "Empty", data.Data[0].Name)
226-
}
227-
})
228-
}
229-
230-
func TestAPIOrgRename(t *testing.T) {
231-
onGiteaRun(t, func(*testing.T, *url.URL) {
232-
token := getUserToken(t, "user1", auth_model.AccessTokenScopeWriteOrganization)
233-
orgName := "org_to_rename"
234-
newOrgName := "renamed_org"
235-
236-
// create org
237-
req := NewRequestWithJSON(t, "POST", "/api/v1/orgs", &api.CreateOrgOption{
238-
UserName: orgName,
239-
}).AddTokenAuth(token)
240-
MakeRequest(t, req, http.StatusCreated)
241-
242-
req = NewRequestWithJSON(t, "POST", "/api/v1/orgs/org_to_rename/rename", &api.RenameOrgOption{
243-
NewName: newOrgName,
244-
}).AddTokenAuth(token)
245-
MakeRequest(t, req, http.StatusNoContent)
246-
247-
unittest.AssertExistsAndLoadBean(t, &org_model.Organization{
248-
Name: newOrgName,
249-
})
250-
})
198+
defer tests.PrepareTestEnv(t)()
199+
token := getUserToken(t, "user1", auth_model.AccessTokenScopeWriteOrganization)
200+
orgName := "org_with_empty_team"
201+
202+
// create org
203+
req := NewRequestWithJSON(t, "POST", "/api/v1/orgs", &api.CreateOrgOption{
204+
UserName: orgName,
205+
}).AddTokenAuth(token)
206+
MakeRequest(t, req, http.StatusCreated)
207+
208+
// create team with no member
209+
req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/orgs/%s/teams", orgName), &api.CreateTeamOption{
210+
Name: "Empty",
211+
IncludesAllRepositories: true,
212+
Permission: "read",
213+
Units: []string{"repo.code", "repo.issues", "repo.ext_issues", "repo.wiki", "repo.pulls"},
214+
}).AddTokenAuth(token)
215+
MakeRequest(t, req, http.StatusCreated)
216+
217+
// case-insensitive search for teams that have no members
218+
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/orgs/%s/teams/search?q=%s", orgName, "empty")).
219+
AddTokenAuth(token)
220+
resp := MakeRequest(t, req, http.StatusOK)
221+
data := struct {
222+
Ok bool
223+
Data []*api.Team
224+
}{}
225+
DecodeJSON(t, resp, &data)
226+
assert.True(t, data.Ok)
227+
if assert.Len(t, data.Data, 1) {
228+
assert.EqualValues(t, "Empty", data.Data[0].Name)
229+
}
251230
}

0 commit comments

Comments
 (0)