Skip to content

Commit f1adaef

Browse files
ethantkoenigbkcsoft
authored andcommitted
Less verbose integration tests (#2123)
* Helper functions for intergration test boilerplate
1 parent 5651cc7 commit f1adaef

24 files changed

+122
-223
lines changed

integrations/api_branch_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func testAPIGetBranch(t *testing.T, branchName string, exists bool) {
1818

1919
session := loginUser(t, "user2")
2020
req := NewRequestf(t, "GET", "/api/v1/repos/user2/repo1/branches/%s", branchName)
21-
resp := session.MakeRequest(t, req)
21+
resp := session.MakeRequest(t, req, NoExpectedStatus)
2222
if !exists {
2323
assert.EqualValues(t, http.StatusNotFound, resp.HeaderCode)
2424
return

integrations/api_comment_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ func TestAPIListComments(t *testing.T) {
2626
session := loginUser(t, repoOwner.Name)
2727
req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues/%d/comments",
2828
repoOwner.Name, repo.Name, issue.Index)
29-
resp := session.MakeRequest(t, req)
30-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
29+
resp := session.MakeRequest(t, req, http.StatusOK)
3130

3231
var comments []*api.Comment
3332
DecodeJSON(t, resp, &comments)

integrations/api_issue_label_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ func TestAPIAddIssueLabels(t *testing.T) {
2929
Labels: []int64{label.ID},
3030
})
3131
session := loginUser(t, owner.Name)
32-
resp := session.MakeRequest(t, req)
33-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
32+
resp := session.MakeRequest(t, req, http.StatusOK)
3433
var apiLabels []*api.Label
3534
DecodeJSON(t, resp, &apiLabels)
3635
assert.Len(t, apiLabels, models.GetCount(t, &models.IssueLabel{IssueID: issue.ID}))
@@ -52,8 +51,7 @@ func TestAPIReplaceIssueLabels(t *testing.T) {
5251
Labels: []int64{label.ID},
5352
})
5453
session := loginUser(t, owner.Name)
55-
resp := session.MakeRequest(t, req)
56-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
54+
resp := session.MakeRequest(t, req, http.StatusOK)
5755
var apiLabels []*api.Label
5856
DecodeJSON(t, resp, &apiLabels)
5957
assert.Len(t, apiLabels, 1)

integrations/api_issue_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ func TestAPIListIssues(t *testing.T) {
2424
session := loginUser(t, owner.Name)
2525
req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues?state=all",
2626
owner.Name, repo.Name)
27-
resp := session.MakeRequest(t, req)
28-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
27+
resp := session.MakeRequest(t, req, http.StatusOK)
2928
var apiIssues []*api.Issue
3029
DecodeJSON(t, resp, &apiIssues)
3130
assert.Len(t, apiIssues, models.GetCount(t, &models.Issue{RepoID: repo.ID}))
@@ -49,8 +48,7 @@ func TestAPICreateIssue(t *testing.T) {
4948
Title: title,
5049
Assignee: owner.Name,
5150
})
52-
resp := session.MakeRequest(t, req)
53-
assert.EqualValues(t, http.StatusCreated, resp.HeaderCode)
51+
resp := session.MakeRequest(t, req, http.StatusCreated)
5452
var apiIssue api.Issue
5553
DecodeJSON(t, resp, &apiIssue)
5654
assert.Equal(t, apiIssue.Body, body)

integrations/api_pull_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ func TestAPIViewPulls(t *testing.T) {
2121

2222
session := loginUser(t, "user2")
2323
req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/pulls?state=all", owner.Name, repo.Name)
24-
resp := session.MakeRequest(t, req)
25-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
24+
resp := session.MakeRequest(t, req, http.StatusOK)
2625

2726
var pulls []*api.PullRequest
2827
DecodeJSON(t, resp, &pulls)

integrations/api_repo_test.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,18 @@ package integrations
77
import (
88
"net/http"
99
"testing"
10-
11-
"github.com/stretchr/testify/assert"
1210
)
1311

1412
func TestAPIUserReposNotLogin(t *testing.T) {
1513
prepareTestEnv(t)
1614

1715
req := NewRequest(t, "GET", "/api/v1/users/user2/repos")
18-
resp := MakeRequest(req)
19-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
16+
MakeRequest(t, req, http.StatusOK)
2017
}
2118

2219
func TestAPISearchRepoNotLogin(t *testing.T) {
2320
prepareTestEnv(t)
2421

2522
req := NewRequest(t, "GET", "/api/v1/repos/search?q=Test")
26-
resp := MakeRequest(req)
27-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
23+
MakeRequest(t, req, http.StatusOK)
2824
}

integrations/api_team_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ func TestAPITeam(t *testing.T) {
2222

2323
session := loginUser(t, user.Name)
2424
req := NewRequestf(t, "GET", "/api/v1/teams/%d", teamUser.TeamID)
25-
resp := session.MakeRequest(t, req)
26-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
25+
resp := session.MakeRequest(t, req, http.StatusOK)
2726

2827
var apiTeam api.Team
2928
DecodeJSON(t, resp, &apiTeam)

integrations/change_default_branch_test.go

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import (
1010
"testing"
1111

1212
"code.gitea.io/gitea/models"
13-
14-
"github.com/stretchr/testify/assert"
1513
)
1614

1715
func TestChangeDefaultBranch(t *testing.T) {
@@ -22,29 +20,19 @@ func TestChangeDefaultBranch(t *testing.T) {
2220
session := loginUser(t, owner.Name)
2321
branchesURL := fmt.Sprintf("/%s/%s/settings/branches", owner.Name, repo.Name)
2422

25-
req := NewRequest(t, "GET", branchesURL)
26-
resp := session.MakeRequest(t, req)
27-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
28-
doc := NewHTMLParser(t, resp.Body)
29-
30-
req = NewRequestWithValues(t, "POST", branchesURL, map[string]string{
31-
"_csrf": doc.GetCSRF(),
23+
csrf := GetCSRF(t, session, branchesURL)
24+
req := NewRequestWithValues(t, "POST", branchesURL, map[string]string{
25+
"_csrf": csrf,
3226
"action": "default_branch",
3327
"branch": "DefaultBranch",
3428
})
35-
resp = session.MakeRequest(t, req)
36-
assert.EqualValues(t, http.StatusFound, resp.HeaderCode)
37-
38-
req = NewRequest(t, "GET", branchesURL)
39-
resp = session.MakeRequest(t, req)
40-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
41-
doc = NewHTMLParser(t, resp.Body)
29+
session.MakeRequest(t, req, http.StatusFound)
4230

31+
csrf = GetCSRF(t, session, branchesURL)
4332
req = NewRequestWithValues(t, "POST", branchesURL, map[string]string{
44-
"_csrf": doc.GetInputValueByName("_csrf"),
33+
"_csrf": csrf,
4534
"action": "default_branch",
4635
"branch": "does_not_exist",
4736
})
48-
resp = session.MakeRequest(t, req)
49-
assert.EqualValues(t, http.StatusNotFound, resp.HeaderCode)
37+
session.MakeRequest(t, req, http.StatusNotFound)
5038
}

integrations/delete_user_test.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,18 @@ import (
99
"testing"
1010

1111
"code.gitea.io/gitea/models"
12-
13-
"github.com/stretchr/testify/assert"
1412
)
1513

1614
func TestDeleteUser(t *testing.T) {
1715
prepareTestEnv(t)
1816

1917
session := loginUser(t, "user1")
2018

21-
req := NewRequest(t, "GET", "/admin/users/8")
22-
resp := session.MakeRequest(t, req)
23-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
24-
25-
doc := NewHTMLParser(t, resp.Body)
26-
req = NewRequestWithValues(t, "POST", "/admin/users/8/delete", map[string]string{
27-
"_csrf": doc.GetCSRF(),
19+
csrf := GetCSRF(t, session, "/admin/users/8")
20+
req := NewRequestWithValues(t, "POST", "/admin/users/8/delete", map[string]string{
21+
"_csrf": csrf,
2822
})
29-
resp = session.MakeRequest(t, req)
30-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
23+
session.MakeRequest(t, req, http.StatusOK)
3124

3225
models.AssertNotExistsBean(t, &models.User{ID: 8})
3326
models.CheckConsistencyFor(t, &models.User{})

integrations/editor_test.go

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ func TestCreateFile(t *testing.T) {
1919

2020
// Request editor page
2121
req := NewRequest(t, "GET", "/user2/repo1/_new/master/")
22-
resp := session.MakeRequest(t, req)
23-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
22+
resp := session.MakeRequest(t, req, http.StatusOK)
2423

2524
doc := NewHTMLParser(t, resp.Body)
2625
lastCommit := doc.GetInputValueByName("last_commit")
@@ -34,41 +33,32 @@ func TestCreateFile(t *testing.T) {
3433
"content": "Content",
3534
"commit_choice": "direct",
3635
})
37-
resp = session.MakeRequest(t, req)
38-
assert.EqualValues(t, http.StatusFound, resp.HeaderCode)
36+
resp = session.MakeRequest(t, req, http.StatusFound)
3937
}
4038

4139
func TestCreateFileOnProtectedBranch(t *testing.T) {
4240
prepareTestEnv(t)
4341

4442
session := loginUser(t, "user2")
4543

46-
// Open repository branch settings
47-
req := NewRequest(t, "GET", "/user2/repo1/settings/branches")
48-
resp := session.MakeRequest(t, req)
49-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
50-
51-
doc := NewHTMLParser(t, resp.Body)
52-
44+
csrf := GetCSRF(t, session, "/user2/repo1/settings/branches")
5345
// Change master branch to protected
54-
req = NewRequestWithValues(t, "POST", "/user2/repo1/settings/branches?action=protected_branch", map[string]string{
55-
"_csrf": doc.GetCSRF(),
46+
req := NewRequestWithValues(t, "POST", "/user2/repo1/settings/branches?action=protected_branch", map[string]string{
47+
"_csrf": csrf,
5648
"branchName": "master",
5749
"canPush": "true",
5850
})
59-
resp = session.MakeRequest(t, req)
60-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
51+
resp := session.MakeRequest(t, req, http.StatusOK)
6152
// Check if master branch has been locked successfully
6253
flashCookie := session.GetCookie("macaron_flash")
6354
assert.NotNil(t, flashCookie)
6455
assert.EqualValues(t, flashCookie.Value, "success%3Dmaster%2BLocked%2Bsuccessfully")
6556

6657
// Request editor page
6758
req = NewRequest(t, "GET", "/user2/repo1/_new/master/")
68-
resp = session.MakeRequest(t, req)
69-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
59+
resp = session.MakeRequest(t, req, http.StatusOK)
7060

71-
doc = NewHTMLParser(t, resp.Body)
61+
doc := NewHTMLParser(t, resp.Body)
7262
lastCommit := doc.GetInputValueByName("last_commit")
7363
assert.NotEmpty(t, lastCommit)
7464

@@ -81,8 +71,7 @@ func TestCreateFileOnProtectedBranch(t *testing.T) {
8171
"commit_choice": "direct",
8272
})
8373

84-
resp = session.MakeRequest(t, req)
85-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
74+
resp = session.MakeRequest(t, req, http.StatusOK)
8675
// Check body for error message
8776
assert.Contains(t, string(resp.Body), "Can not commit to protected branch 'master'.")
8877
}
@@ -93,8 +82,7 @@ func testEditFile(t *testing.T, session *TestSession, user, repo, branch, filePa
9382

9483
// Get to the 'edit this file' page
9584
req := NewRequest(t, "GET", path.Join(user, repo, "_edit", branch, filePath))
96-
resp := session.MakeRequest(t, req)
97-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
85+
resp := session.MakeRequest(t, req, http.StatusOK)
9886

9987
htmlDoc := NewHTMLParser(t, resp.Body)
10088
lastCommit := htmlDoc.GetInputValueByName("last_commit")
@@ -110,13 +98,11 @@ func testEditFile(t *testing.T, session *TestSession, user, repo, branch, filePa
11098
"commit_choice": "direct",
11199
},
112100
)
113-
resp = session.MakeRequest(t, req)
114-
assert.EqualValues(t, http.StatusFound, resp.HeaderCode)
101+
resp = session.MakeRequest(t, req, http.StatusFound)
115102

116103
// Verify the change
117104
req = NewRequest(t, "GET", path.Join(user, repo, "raw", branch, filePath))
118-
resp = session.MakeRequest(t, req)
119-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
105+
resp = session.MakeRequest(t, req, http.StatusOK)
120106
assert.EqualValues(t, newContent, string(resp.Body))
121107

122108
return resp
@@ -128,8 +114,7 @@ func testEditFileToNewBranch(t *testing.T, session *TestSession, user, repo, bra
128114

129115
// Get to the 'edit this file' page
130116
req := NewRequest(t, "GET", path.Join(user, repo, "_edit", branch, filePath))
131-
resp := session.MakeRequest(t, req)
132-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
117+
resp := session.MakeRequest(t, req, http.StatusOK)
133118

134119
htmlDoc := NewHTMLParser(t, resp.Body)
135120
lastCommit := htmlDoc.GetInputValueByName("last_commit")
@@ -146,13 +131,11 @@ func testEditFileToNewBranch(t *testing.T, session *TestSession, user, repo, bra
146131
"new_branch_name": targetBranch,
147132
},
148133
)
149-
resp = session.MakeRequest(t, req)
150-
assert.EqualValues(t, http.StatusFound, resp.HeaderCode)
134+
resp = session.MakeRequest(t, req, http.StatusFound)
151135

152136
// Verify the change
153137
req = NewRequest(t, "GET", path.Join(user, repo, "raw", targetBranch, filePath))
154-
resp = session.MakeRequest(t, req)
155-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
138+
resp = session.MakeRequest(t, req, http.StatusOK)
156139
assert.EqualValues(t, newContent, string(resp.Body))
157140

158141
return resp

integrations/integration_test.go

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,13 @@ func (s *TestSession) GetCookie(name string) *http.Cookie {
140140
return nil
141141
}
142142

143-
func (s *TestSession) MakeRequest(t testing.TB, req *http.Request) *TestResponse {
143+
func (s *TestSession) MakeRequest(t testing.TB, req *http.Request, expectedStatus int) *TestResponse {
144144
baseURL, err := url.Parse(setting.AppURL)
145145
assert.NoError(t, err)
146146
for _, c := range s.jar.Cookies(baseURL) {
147147
req.AddCookie(c)
148148
}
149-
resp := MakeRequest(req)
149+
resp := MakeRequest(t, req, expectedStatus)
150150

151151
ch := http.Header{}
152152
ch.Add("Cookie", strings.Join(resp.Headers["Set-Cookie"], ";"))
@@ -164,17 +164,15 @@ func loginUser(t testing.TB, userName string) *TestSession {
164164

165165
func loginUserWithPassword(t testing.TB, userName, password string) *TestSession {
166166
req := NewRequest(t, "GET", "/user/login")
167-
resp := MakeRequest(req)
168-
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
167+
resp := MakeRequest(t, req, http.StatusOK)
169168

170169
doc := NewHTMLParser(t, resp.Body)
171170
req = NewRequestWithValues(t, "POST", "/user/login", map[string]string{
172171
"_csrf": doc.GetCSRF(),
173172
"user_name": userName,
174173
"password": password,
175174
})
176-
resp = MakeRequest(req)
177-
assert.EqualValues(t, http.StatusFound, resp.HeaderCode)
175+
resp = MakeRequest(t, req, http.StatusFound)
178176

179177
ch := http.Header{}
180178
ch.Add("Cookie", strings.Join(resp.Headers["Set-Cookie"], ";"))
@@ -246,13 +244,18 @@ func NewRequestWithBody(t testing.TB, method, urlStr string, body io.Reader) *ht
246244
return request
247245
}
248246

249-
func MakeRequest(req *http.Request) *TestResponse {
247+
const NoExpectedStatus = -1
248+
249+
func MakeRequest(t testing.TB, req *http.Request, expectedStatus int) *TestResponse {
250250
buffer := bytes.NewBuffer(nil)
251251
respWriter := &TestResponseWriter{
252252
Writer: buffer,
253253
Headers: make(map[string][]string),
254254
}
255255
mac.ServeHTTP(respWriter, req)
256+
if expectedStatus != NoExpectedStatus {
257+
assert.EqualValues(t, expectedStatus, respWriter.HeaderCode)
258+
}
256259
return &TestResponse{
257260
HeaderCode: respWriter.HeaderCode,
258261
Body: buffer.Bytes(),
@@ -264,3 +267,16 @@ func DecodeJSON(t testing.TB, resp *TestResponse, v interface{}) {
264267
decoder := json.NewDecoder(bytes.NewBuffer(resp.Body))
265268
assert.NoError(t, decoder.Decode(v))
266269
}
270+
271+
func GetCSRF(t testing.TB, session *TestSession, urlStr string) string {
272+
req := NewRequest(t, "GET", urlStr)
273+
resp := session.MakeRequest(t, req, http.StatusOK)
274+
doc := NewHTMLParser(t, resp.Body)
275+
return doc.GetCSRF()
276+
}
277+
278+
func RedirectURL(t testing.TB, resp *TestResponse) string {
279+
urlSlice := resp.Headers["Location"]
280+
assert.NotEmpty(t, urlSlice, "No redirect URL founds")
281+
return urlSlice[0]
282+
}

integrations/internal_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ func assertProtectedBranch(t *testing.T, repoID int64, branchName string, isErr,
2323
t.Log(reqURL)
2424
req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", setting.InternalToken))
2525

26-
resp := MakeRequest(req)
26+
resp := MakeRequest(t, req, NoExpectedStatus)
2727
if isErr {
28-
assert.EqualValues(t, 500, resp.HeaderCode)
28+
assert.EqualValues(t, http.StatusInternalServerError, resp.HeaderCode)
2929
} else {
3030
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
3131
var branch models.ProtectedBranch

0 commit comments

Comments
 (0)