1
1
mirror of https://github.com/go-gitea/gitea synced 2024-10-31 23:34:25 +00:00

Update HTTP status codes to modern codes (#18063)

* 2xx/3xx/4xx/5xx -> http.Status...
* http.StatusFound -> http.StatusTemporaryRedirect
* http.StatusMovedPermanently -> http.StatusPermanentRedirect
This commit is contained in:
KN4CK3R 2022-03-23 05:54:07 +01:00 committed by GitHub
parent 395117d301
commit 3f280f89e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
76 changed files with 211 additions and 212 deletions

View File

@ -128,5 +128,5 @@ func runLetsEncryptFallbackHandler(w http.ResponseWriter, r *http.Request) {
// URI always contains a leading slash, which would result in a double // URI always contains a leading slash, which would result in a double
// slash // slash
target := strings.TrimSuffix(setting.AppURL, "/") + r.URL.RequestURI() target := strings.TrimSuffix(setting.AppURL, "/") + r.URL.RequestURI()
http.Redirect(w, r, target, http.StatusFound) http.Redirect(w, r, target, http.StatusTemporaryRedirect)
} }

View File

@ -46,7 +46,7 @@ func TestAdminEditUser(t *testing.T) {
} }
func testSuccessfullEdit(t *testing.T, formData user_model.User) { func testSuccessfullEdit(t *testing.T, formData user_model.User) {
makeRequest(t, formData, http.StatusFound) makeRequest(t, formData, http.StatusSeeOther)
} }
func makeRequest(t *testing.T, formData user_model.User, headerCode int) { func makeRequest(t *testing.T, formData user_model.User, headerCode int) {

View File

@ -37,7 +37,7 @@ func testAPIGetBranchProtection(t *testing.T, branchName string, expectedHTTPSta
req := NewRequestf(t, "GET", "/api/v1/repos/user2/repo1/branch_protections/%s?token=%s", branchName, token) req := NewRequestf(t, "GET", "/api/v1/repos/user2/repo1/branch_protections/%s?token=%s", branchName, token)
resp := session.MakeRequest(t, req, expectedHTTPStatus) resp := session.MakeRequest(t, req, expectedHTTPStatus)
if resp.Code == 200 { if resp.Code == http.StatusOK {
var branchProtection api.BranchProtection var branchProtection api.BranchProtection
DecodeJSON(t, resp, &branchProtection) DecodeJSON(t, resp, &branchProtection)
assert.EqualValues(t, branchName, branchProtection.BranchName) assert.EqualValues(t, branchName, branchProtection.BranchName)
@ -52,7 +52,7 @@ func testAPICreateBranchProtection(t *testing.T, branchName string, expectedHTTP
}) })
resp := session.MakeRequest(t, req, expectedHTTPStatus) resp := session.MakeRequest(t, req, expectedHTTPStatus)
if resp.Code == 201 { if resp.Code == http.StatusCreated {
var branchProtection api.BranchProtection var branchProtection api.BranchProtection
DecodeJSON(t, resp, &branchProtection) DecodeJSON(t, resp, &branchProtection)
assert.EqualValues(t, branchName, branchProtection.BranchName) assert.EqualValues(t, branchName, branchProtection.BranchName)
@ -65,7 +65,7 @@ func testAPIEditBranchProtection(t *testing.T, branchName string, body *api.Bran
req := NewRequestWithJSON(t, "PATCH", "/api/v1/repos/user2/repo1/branch_protections/"+branchName+"?token="+token, body) req := NewRequestWithJSON(t, "PATCH", "/api/v1/repos/user2/repo1/branch_protections/"+branchName+"?token="+token, body)
resp := session.MakeRequest(t, req, expectedHTTPStatus) resp := session.MakeRequest(t, req, expectedHTTPStatus)
if resp.Code == 200 { if resp.Code == http.StatusOK {
var branchProtection api.BranchProtection var branchProtection api.BranchProtection
DecodeJSON(t, resp, &branchProtection) DecodeJSON(t, resp, &branchProtection)
assert.EqualValues(t, branchName, branchProtection.BranchName) assert.EqualValues(t, branchName, branchProtection.BranchName)

View File

@ -227,7 +227,7 @@ func doAPICreatePullRequest(ctx APITestContext, owner, repo, baseBranch, headBra
Title: fmt.Sprintf("create a pr from %s to %s", headBranch, baseBranch), Title: fmt.Sprintf("create a pr from %s to %s", headBranch, baseBranch),
}) })
expected := 201 expected := http.StatusCreated
if ctx.ExpectedCode != 0 { if ctx.ExpectedCode != 0 {
expected = ctx.ExpectedCode expected = ctx.ExpectedCode
} }
@ -246,7 +246,7 @@ func doAPIGetPullRequest(ctx APITestContext, owner, repo string, index int64) fu
owner, repo, index, ctx.Token) owner, repo, index, ctx.Token)
req := NewRequest(t, http.MethodGet, urlStr) req := NewRequest(t, http.MethodGet, urlStr)
expected := 200 expected := http.StatusOK
if ctx.ExpectedCode != 0 { if ctx.ExpectedCode != 0 {
expected = ctx.ExpectedCode expected = ctx.ExpectedCode
} }
@ -287,7 +287,7 @@ func doAPIMergePullRequest(ctx APITestContext, owner, repo string, index int64)
expected := ctx.ExpectedCode expected := ctx.ExpectedCode
if expected == 0 { if expected == 0 {
expected = 200 expected = http.StatusOK
} }
if !assert.EqualValues(t, expected, resp.Code, if !assert.EqualValues(t, expected, resp.Code,
@ -310,7 +310,7 @@ func doAPIManuallyMergePullRequest(ctx APITestContext, owner, repo, commitID str
ctx.Session.MakeRequest(t, req, ctx.ExpectedCode) ctx.Session.MakeRequest(t, req, ctx.ExpectedCode)
return return
} }
ctx.Session.MakeRequest(t, req, 200) ctx.Session.MakeRequest(t, req, http.StatusOK)
} }
} }

View File

@ -77,7 +77,7 @@ func TestAPICreatePullSuccess(t *testing.T) {
Base: "master", Base: "master",
Title: "create a failure pr", Title: "create a failure pr",
}) })
session.MakeRequest(t, req, 201) session.MakeRequest(t, req, http.StatusCreated)
session.MakeRequest(t, req, http.StatusUnprocessableEntity) // second request should fail session.MakeRequest(t, req, http.StatusUnprocessableEntity) // second request should fail
} }
@ -105,7 +105,7 @@ func TestAPICreatePullWithFieldsSuccess(t *testing.T) {
req := NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls?token=%s", owner10.Name, repo10.Name, token), opts) req := NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls?token=%s", owner10.Name, repo10.Name, token), opts)
res := session.MakeRequest(t, req, 201) res := session.MakeRequest(t, req, http.StatusCreated)
pull := new(api.PullRequest) pull := new(api.PullRequest)
DecodeJSON(t, res, pull) DecodeJSON(t, res, pull)
@ -165,7 +165,7 @@ func TestAPIEditPull(t *testing.T) {
Title: "create a success pr", Title: "create a success pr",
}) })
pull := new(api.PullRequest) pull := new(api.PullRequest)
resp := session.MakeRequest(t, req, 201) resp := session.MakeRequest(t, req, http.StatusCreated)
DecodeJSON(t, resp, pull) DecodeJSON(t, resp, pull)
assert.EqualValues(t, "master", pull.Base.Name) assert.EqualValues(t, "master", pull.Base.Name)
@ -173,12 +173,12 @@ func TestAPIEditPull(t *testing.T) {
Base: "feature/1", Base: "feature/1",
Title: "edit a this pr", Title: "edit a this pr",
}) })
resp = session.MakeRequest(t, req, 201) resp = session.MakeRequest(t, req, http.StatusCreated)
DecodeJSON(t, resp, pull) DecodeJSON(t, resp, pull)
assert.EqualValues(t, "feature/1", pull.Base.Name) assert.EqualValues(t, "feature/1", pull.Base.Name)
req = NewRequestWithJSON(t, http.MethodPatch, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d?token=%s", owner10.Name, repo10.Name, pull.Index, token), &api.EditPullRequestOption{ req = NewRequestWithJSON(t, http.MethodPatch, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d?token=%s", owner10.Name, repo10.Name, pull.Index, token), &api.EditPullRequestOption{
Base: "not-exist", Base: "not-exist",
}) })
session.MakeRequest(t, req, 404) session.MakeRequest(t, req, http.StatusNotFound)
} }

View File

@ -33,7 +33,7 @@ func TestRepoLanguages(t *testing.T) {
"content": "package main", "content": "package main",
"commit_choice": "direct", "commit_choice": "direct",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
// let gitea calculate language stats // let gitea calculate language stats
time.Sleep(time.Second) time.Sleep(time.Second)

View File

@ -59,7 +59,7 @@ func createAttachment(t *testing.T, session *TestSession, repoURL, filename stri
func TestCreateAnonymousAttachment(t *testing.T) { func TestCreateAnonymousAttachment(t *testing.T) {
defer prepareTestEnv(t)() defer prepareTestEnv(t)()
session := emptyTestSession(t) session := emptyTestSession(t)
createAttachment(t, session, "user2/repo1", "image.png", generateImg(), http.StatusFound) createAttachment(t, session, "user2/repo1", "image.png", generateImg(), http.StatusSeeOther)
} }
func TestCreateIssueAttachment(t *testing.T) { func TestCreateIssueAttachment(t *testing.T) {
@ -83,7 +83,7 @@ func TestCreateIssueAttachment(t *testing.T) {
} }
req = NewRequestWithValues(t, "POST", link, postData) req = NewRequestWithValues(t, "POST", link, postData)
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
test.RedirectURL(resp) // check that redirect URL exists test.RedirectURL(resp) // check that redirect URL exists
// Validate that attachment is available // Validate that attachment is available

View File

@ -135,7 +135,7 @@ func addAuthSourceLDAP(t *testing.T, sshKeyAttribute string, groupMapParams ...s
"group_team_map_removal": groupTeamMapRemoval, "group_team_map_removal": groupTeamMapRemoval,
"user_uid": "DN", "user_uid": "DN",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
} }
func TestLDAPUserSignin(t *testing.T) { func TestLDAPUserSignin(t *testing.T) {
@ -202,7 +202,7 @@ func TestLDAPAuthChange(t *testing.T) {
"is_sync_enabled": "on", "is_sync_enabled": "on",
"is_active": "on", "is_active": "on",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
req = NewRequest(t, "GET", href) req = NewRequest(t, "GET", href)
resp = session.MakeRequest(t, req, http.StatusOK) resp = session.MakeRequest(t, req, http.StatusOK)

View File

@ -28,7 +28,7 @@ func TestChangeDefaultBranch(t *testing.T) {
"action": "default_branch", "action": "default_branch",
"branch": "DefaultBranch", "branch": "DefaultBranch",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
csrf = GetCSRF(t, session, branchesURL) csrf = GetCSRF(t, session, branchesURL)
req = NewRequestWithValues(t, "POST", branchesURL, map[string]string{ req = NewRequestWithValues(t, "POST", branchesURL, map[string]string{

View File

@ -110,7 +110,7 @@ func TestSessionFileCreation(t *testing.T) {
"user_name": "user2", "user_name": "user2",
"password": userPassword, "password": userPassword,
}) })
resp = MakeRequest(t, req, http.StatusFound) resp = MakeRequest(t, req, http.StatusSeeOther)
sessionID = getSessionID(t, resp) sessionID = getSessionID(t, resp)
assert.FileExists(t, sessionFile(tmpDir, sessionID)) assert.FileExists(t, sessionFile(tmpDir, sessionID))

View File

@ -36,7 +36,7 @@ func TestUserDeleteAccount(t *testing.T) {
req := NewRequestWithValues(t, "POST", urlStr, map[string]string{ req := NewRequestWithValues(t, "POST", urlStr, map[string]string{
"_csrf": csrf, "_csrf": csrf,
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
assertUserDeleted(t, 8) assertUserDeleted(t, 8)
unittest.CheckConsistencyFor(t, &user_model.User{}) unittest.CheckConsistencyFor(t, &user_model.User{})
@ -51,7 +51,7 @@ func TestUserDeleteAccountStillOwnRepos(t *testing.T) {
req := NewRequestWithValues(t, "POST", urlStr, map[string]string{ req := NewRequestWithValues(t, "POST", urlStr, map[string]string{
"_csrf": csrf, "_csrf": csrf,
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
// user should not have been deleted, because the user still owns repos // user should not have been deleted, because the user still owns repos
unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})

View File

@ -34,7 +34,7 @@ func TestCreateFile(t *testing.T) {
"content": "Content", "content": "Content",
"commit_choice": "direct", "commit_choice": "direct",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
}) })
} }
@ -48,7 +48,7 @@ func TestCreateFileOnProtectedBranch(t *testing.T) {
"_csrf": csrf, "_csrf": csrf,
"protected": "on", "protected": "on",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
// Check if master branch has been locked successfully // Check if master branch has been locked successfully
flashCookie := session.GetCookie("macaron_flash") flashCookie := session.GetCookie("macaron_flash")
assert.NotNil(t, flashCookie) assert.NotNil(t, flashCookie)
@ -82,7 +82,7 @@ func TestCreateFileOnProtectedBranch(t *testing.T) {
"_csrf": csrf, "_csrf": csrf,
"protected": "off", "protected": "off",
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
// Check if master branch has been locked successfully // Check if master branch has been locked successfully
flashCookie = session.GetCookie("macaron_flash") flashCookie = session.GetCookie("macaron_flash")
assert.NotNil(t, flashCookie) assert.NotNil(t, flashCookie)
@ -109,7 +109,7 @@ func testEditFile(t *testing.T, session *TestSession, user, repo, branch, filePa
"commit_choice": "direct", "commit_choice": "direct",
}, },
) )
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
// Verify the change // Verify the change
req = NewRequest(t, "GET", path.Join(user, repo, "raw/branch", branch, filePath)) req = NewRequest(t, "GET", path.Join(user, repo, "raw/branch", branch, filePath))
@ -139,7 +139,7 @@ func testEditFileToNewBranch(t *testing.T, session *TestSession, user, repo, bra
"new_branch_name": targetBranch, "new_branch_name": targetBranch,
}, },
) )
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
// Verify the change // Verify the change
req = NewRequest(t, "GET", path.Join(user, repo, "raw/branch", targetBranch, filePath)) req = NewRequest(t, "GET", path.Join(user, repo, "raw/branch", targetBranch, filePath))

View File

@ -24,31 +24,31 @@ func testGitSmartHTTP(t *testing.T, u *url.URL) {
}{ }{
{ {
p: "user2/repo1/info/refs", p: "user2/repo1/info/refs",
code: 200, code: http.StatusOK,
}, },
{ {
p: "user2/repo1/HEAD", p: "user2/repo1/HEAD",
code: 200, code: http.StatusOK,
}, },
{ {
p: "user2/repo1/objects/info/alternates", p: "user2/repo1/objects/info/alternates",
code: 404, code: http.StatusNotFound,
}, },
{ {
p: "user2/repo1/objects/info/http-alternates", p: "user2/repo1/objects/info/http-alternates",
code: 404, code: http.StatusNotFound,
}, },
{ {
p: "user2/repo1/../../custom/conf/app.ini", p: "user2/repo1/../../custom/conf/app.ini",
code: 404, code: http.StatusNotFound,
}, },
{ {
p: "user2/repo1/objects/info/../../../../custom/conf/app.ini", p: "user2/repo1/objects/info/../../../../custom/conf/app.ini",
code: 404, code: http.StatusNotFound,
}, },
{ {
p: `user2/repo1/objects/info/..\..\..\..\custom\conf\app.ini`, p: `user2/repo1/objects/info/..\..\..\..\custom\conf\app.ini`,
code: 400, code: http.StatusBadRequest,
}, },
} }

View File

@ -435,7 +435,7 @@ func doProtectBranch(ctx APITestContext, branch, userToWhitelist, unprotectedFil
"protected": "on", "protected": "on",
"unprotected_file_patterns": unprotectedFilePatterns, "unprotected_file_patterns": unprotectedFilePatterns,
}) })
ctx.Session.MakeRequest(t, req, http.StatusFound) ctx.Session.MakeRequest(t, req, http.StatusSeeOther)
} else { } else {
user, err := user_model.GetUserByName(userToWhitelist) user, err := user_model.GetUserByName(userToWhitelist)
assert.NoError(t, err) assert.NoError(t, err)
@ -448,7 +448,7 @@ func doProtectBranch(ctx APITestContext, branch, userToWhitelist, unprotectedFil
"whitelist_users": strconv.FormatInt(user.ID, 10), "whitelist_users": strconv.FormatInt(user.ID, 10),
"unprotected_file_patterns": unprotectedFilePatterns, "unprotected_file_patterns": unprotectedFilePatterns,
}) })
ctx.Session.MakeRequest(t, req, http.StatusFound) ctx.Session.MakeRequest(t, req, http.StatusSeeOther)
} }
// Check if master branch has been locked successfully // Check if master branch has been locked successfully
flashCookie := ctx.Session.GetCookie("macaron_flash") flashCookie := ctx.Session.GetCookie("macaron_flash")

View File

@ -380,7 +380,7 @@ func loginUserWithPassword(t testing.TB, userName, password string) *TestSession
"user_name": userName, "user_name": userName,
"password": password, "password": password,
}) })
resp = MakeRequest(t, req, http.StatusFound) resp = MakeRequest(t, req, http.StatusSeeOther)
ch := http.Header{} ch := http.Header{}
ch.Add("Cookie", strings.Join(resp.Header()["Set-Cookie"], ";")) ch.Add("Cookie", strings.Join(resp.Header()["Set-Cookie"], ";"))
@ -408,7 +408,7 @@ func getTokenForLoggedInUser(t testing.TB, session *TestSession) string {
"_csrf": doc.GetCSRF(), "_csrf": doc.GetCSRF(),
"name": fmt.Sprintf("api-testing-token-%d", tokenCounter), "name": fmt.Sprintf("api-testing-token-%d", tokenCounter),
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
req = NewRequest(t, "GET", "/user/settings/applications") req = NewRequest(t, "GET", "/user/settings/applications")
resp = session.MakeRequest(t, req, http.StatusOK) resp = session.MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body) htmlDoc := NewHTMLParser(t, resp.Body)

View File

@ -132,7 +132,7 @@ func testNewIssue(t *testing.T, session *TestSession, user, repo, title, content
"title": title, "title": title,
"content": content, "content": content,
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
issueURL := test.RedirectURL(resp) issueURL := test.RedirectURL(resp)
req = NewRequest(t, "GET", issueURL) req = NewRequest(t, "GET", issueURL)
@ -162,7 +162,7 @@ func testIssueAddComment(t *testing.T, session *TestSession, issueURL, content,
"content": content, "content": content,
"status": status, "status": status,
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
req = NewRequest(t, "GET", test.RedirectURL(resp)) req = NewRequest(t, "GET", test.RedirectURL(resp))
resp = session.MakeRequest(t, req, http.StatusOK) resp = session.MakeRequest(t, req, http.StatusOK)
@ -334,16 +334,16 @@ func TestIssueRedirect(t *testing.T) {
// Test external tracker where style not set (shall default numeric) // Test external tracker where style not set (shall default numeric)
req := NewRequest(t, "GET", path.Join("org26", "repo_external_tracker", "issues", "1")) req := NewRequest(t, "GET", path.Join("org26", "repo_external_tracker", "issues", "1"))
resp := session.MakeRequest(t, req, http.StatusFound) resp := session.MakeRequest(t, req, http.StatusSeeOther)
assert.Equal(t, "https://tracker.com/org26/repo_external_tracker/issues/1", test.RedirectURL(resp)) assert.Equal(t, "https://tracker.com/org26/repo_external_tracker/issues/1", test.RedirectURL(resp))
// Test external tracker with numeric style // Test external tracker with numeric style
req = NewRequest(t, "GET", path.Join("org26", "repo_external_tracker_numeric", "issues", "1")) req = NewRequest(t, "GET", path.Join("org26", "repo_external_tracker_numeric", "issues", "1"))
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
assert.Equal(t, "https://tracker.com/org26/repo_external_tracker_numeric/issues/1", test.RedirectURL(resp)) assert.Equal(t, "https://tracker.com/org26/repo_external_tracker_numeric/issues/1", test.RedirectURL(resp))
// Test external tracker with alphanumeric style (for a pull request) // Test external tracker with alphanumeric style (for a pull request)
req = NewRequest(t, "GET", path.Join("org26", "repo_external_tracker_alpha", "issues", "1")) req = NewRequest(t, "GET", path.Join("org26", "repo_external_tracker_alpha", "issues", "1"))
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
assert.Equal(t, "/"+path.Join("org26", "repo_external_tracker_alpha", "pulls", "1"), test.RedirectURL(resp)) assert.Equal(t, "/"+path.Join("org26", "repo_external_tracker_alpha", "pulls", "1"), test.RedirectURL(resp))
} }

View File

@ -59,7 +59,7 @@ func TestRedirectsNoLogin(t *testing.T) {
} }
for link, redirectLink := range redirects { for link, redirectLink := range redirects {
req := NewRequest(t, "GET", link) req := NewRequest(t, "GET", link)
resp := MakeRequest(t, req, http.StatusFound) resp := MakeRequest(t, req, http.StatusSeeOther)
assert.EqualValues(t, path.Join(setting.AppSubURL, redirectLink), test.RedirectURL(resp)) assert.EqualValues(t, path.Join(setting.AppSubURL, redirectLink), test.RedirectURL(resp))
} }
} }

View File

@ -89,7 +89,7 @@ func doCreatePushMirror(ctx APITestContext, address, username, password string)
"push_mirror_password": password, "push_mirror_password": password,
"push_mirror_interval": "0", "push_mirror_interval": "0",
}) })
ctx.Session.MakeRequest(t, req, http.StatusFound) ctx.Session.MakeRequest(t, req, http.StatusSeeOther)
flashCookie := ctx.Session.GetCookie("macaron_flash") flashCookie := ctx.Session.GetCookie("macaron_flash")
assert.NotNil(t, flashCookie) assert.NotNil(t, flashCookie)
@ -110,7 +110,7 @@ func doRemovePushMirror(ctx APITestContext, address, username, password string,
"push_mirror_password": password, "push_mirror_password": password,
"push_mirror_interval": "0", "push_mirror_interval": "0",
}) })
ctx.Session.MakeRequest(t, req, http.StatusFound) ctx.Session.MakeRequest(t, req, http.StatusSeeOther)
flashCookie := ctx.Session.GetCookie("macaron_flash") flashCookie := ctx.Session.GetCookie("macaron_flash")
assert.NotNil(t, flashCookie) assert.NotNil(t, flashCookie)

View File

@ -18,7 +18,7 @@ func testSrcRouteRedirect(t *testing.T, session *TestSession, user, repo, route,
// Make request // Make request
req := NewRequest(t, "GET", path.Join(prefix, route)) req := NewRequest(t, "GET", path.Join(prefix, route))
resp := session.MakeRequest(t, req, http.StatusFound) resp := session.MakeRequest(t, req, http.StatusSeeOther)
// Check Location header // Check Location header
location := resp.HeaderMap.Get("Location") location := resp.HeaderMap.Get("Location")
@ -37,7 +37,7 @@ func setDefaultBranch(t *testing.T, session *TestSession, user, repo, branch str
"action": "default_branch", "action": "default_branch",
"branch": branch, "branch": branch,
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
} }
func TestNonasciiBranches(t *testing.T) { func TestNonasciiBranches(t *testing.T) {

View File

@ -7,6 +7,7 @@ package integrations
import ( import (
"bytes" "bytes"
"io" "io"
"net/http"
"testing" "testing"
"code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/json"
@ -21,20 +22,20 @@ func TestNoClientID(t *testing.T) {
defer prepareTestEnv(t)() defer prepareTestEnv(t)()
req := NewRequest(t, "GET", "/login/oauth/authorize") req := NewRequest(t, "GET", "/login/oauth/authorize")
ctx := loginUser(t, "user2") ctx := loginUser(t, "user2")
ctx.MakeRequest(t, req, 400) ctx.MakeRequest(t, req, http.StatusBadRequest)
} }
func TestLoginRedirect(t *testing.T) { func TestLoginRedirect(t *testing.T) {
defer prepareTestEnv(t)() defer prepareTestEnv(t)()
req := NewRequest(t, "GET", "/login/oauth/authorize") req := NewRequest(t, "GET", "/login/oauth/authorize")
assert.Contains(t, MakeRequest(t, req, 302).Body.String(), "/user/login") assert.Contains(t, MakeRequest(t, req, http.StatusSeeOther).Body.String(), "/user/login")
} }
func TestShowAuthorize(t *testing.T) { func TestShowAuthorize(t *testing.T) {
defer prepareTestEnv(t)() defer prepareTestEnv(t)()
req := NewRequest(t, "GET", defaultAuthorize) req := NewRequest(t, "GET", defaultAuthorize)
ctx := loginUser(t, "user4") ctx := loginUser(t, "user4")
resp := ctx.MakeRequest(t, req, 200) resp := ctx.MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body) htmlDoc := NewHTMLParser(t, resp.Body)
htmlDoc.AssertElement(t, "#authorize-app", true) htmlDoc.AssertElement(t, "#authorize-app", true)
@ -45,7 +46,7 @@ func TestRedirectWithExistingGrant(t *testing.T) {
defer prepareTestEnv(t)() defer prepareTestEnv(t)()
req := NewRequest(t, "GET", defaultAuthorize) req := NewRequest(t, "GET", defaultAuthorize)
ctx := loginUser(t, "user1") ctx := loginUser(t, "user1")
resp := ctx.MakeRequest(t, req, 302) resp := ctx.MakeRequest(t, req, http.StatusSeeOther)
u, err := resp.Result().Location() u, err := resp.Result().Location()
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, "thestate", u.Query().Get("state")) assert.Equal(t, "thestate", u.Query().Get("state"))
@ -62,7 +63,7 @@ func TestAccessTokenExchange(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
resp := MakeRequest(t, req, 200) resp := MakeRequest(t, req, http.StatusOK)
type response struct { type response struct {
AccessToken string `json:"access_token"` AccessToken string `json:"access_token"`
TokenType string `json:"token_type"` TokenType string `json:"token_type"`
@ -86,7 +87,7 @@ func TestAccessTokenExchangeWithoutPKCE(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
resp := MakeRequest(t, req, 200) resp := MakeRequest(t, req, http.StatusOK)
type response struct { type response struct {
AccessToken string `json:"access_token"` AccessToken string `json:"access_token"`
TokenType string `json:"token_type"` TokenType string `json:"token_type"`
@ -109,7 +110,7 @@ func TestAccessTokenExchangeJSON(t *testing.T) {
"redirect_uri": "a", "redirect_uri": "a",
"code": "authcode", "code": "authcode",
}) })
MakeRequest(t, req, 400) MakeRequest(t, req, http.StatusBadRequest)
} }
func TestAccessTokenExchangeWithInvalidCredentials(t *testing.T) { func TestAccessTokenExchangeWithInvalidCredentials(t *testing.T) {
@ -123,7 +124,7 @@ func TestAccessTokenExchangeWithInvalidCredentials(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
MakeRequest(t, req, 400) MakeRequest(t, req, http.StatusBadRequest)
// invalid client secret // invalid client secret
req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{ req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{
"grant_type": "authorization_code", "grant_type": "authorization_code",
@ -133,7 +134,7 @@ func TestAccessTokenExchangeWithInvalidCredentials(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
MakeRequest(t, req, 400) MakeRequest(t, req, http.StatusBadRequest)
// invalid redirect uri // invalid redirect uri
req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{ req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{
"grant_type": "authorization_code", "grant_type": "authorization_code",
@ -143,7 +144,7 @@ func TestAccessTokenExchangeWithInvalidCredentials(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
MakeRequest(t, req, 400) MakeRequest(t, req, http.StatusBadRequest)
// invalid authorization code // invalid authorization code
req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{ req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{
"grant_type": "authorization_code", "grant_type": "authorization_code",
@ -153,7 +154,7 @@ func TestAccessTokenExchangeWithInvalidCredentials(t *testing.T) {
"code": "???", "code": "???",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
MakeRequest(t, req, 400) MakeRequest(t, req, http.StatusBadRequest)
// invalid grant_type // invalid grant_type
req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{ req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{
"grant_type": "???", "grant_type": "???",
@ -163,7 +164,7 @@ func TestAccessTokenExchangeWithInvalidCredentials(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
MakeRequest(t, req, 400) MakeRequest(t, req, http.StatusBadRequest)
} }
func TestAccessTokenExchangeWithBasicAuth(t *testing.T) { func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
@ -175,7 +176,7 @@ func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
req.Header.Add("Authorization", "Basic ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OjRNSzhOYTZSNTVzbWRDWTBXdUNDdW1aNmhqUlBuR1k1c2FXVlJISGpKaUE9") req.Header.Add("Authorization", "Basic ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OjRNSzhOYTZSNTVzbWRDWTBXdUNDdW1aNmhqUlBuR1k1c2FXVlJISGpKaUE9")
resp := MakeRequest(t, req, 200) resp := MakeRequest(t, req, http.StatusOK)
type response struct { type response struct {
AccessToken string `json:"access_token"` AccessToken string `json:"access_token"`
TokenType string `json:"token_type"` TokenType string `json:"token_type"`
@ -196,7 +197,7 @@ func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
req.Header.Add("Authorization", "Basic ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OmJsYWJsYQ==") req.Header.Add("Authorization", "Basic ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OmJsYWJsYQ==")
resp = MakeRequest(t, req, 400) resp = MakeRequest(t, req, http.StatusBadRequest)
// missing header // missing header
req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{ req = NewRequestWithValues(t, "POST", "/login/oauth/access_token", map[string]string{
@ -205,7 +206,7 @@ func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
resp = MakeRequest(t, req, 400) resp = MakeRequest(t, req, http.StatusBadRequest)
} }
func TestRefreshTokenInvalidation(t *testing.T) { func TestRefreshTokenInvalidation(t *testing.T) {
@ -218,7 +219,7 @@ func TestRefreshTokenInvalidation(t *testing.T) {
"code": "authcode", "code": "authcode",
"code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally "code_verifier": "N1Zo9-8Rfwhkt68r1r29ty8YwIraXR8eh_1Qwxg7yQXsonBt", // test PKCE additionally
}) })
resp := MakeRequest(t, req, 200) resp := MakeRequest(t, req, http.StatusOK)
type response struct { type response struct {
AccessToken string `json:"access_token"` AccessToken string `json:"access_token"`
TokenType string `json:"token_type"` TokenType string `json:"token_type"`
@ -244,16 +245,16 @@ func TestRefreshTokenInvalidation(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
refreshReq.Body = io.NopCloser(bytes.NewReader(bs)) refreshReq.Body = io.NopCloser(bytes.NewReader(bs))
MakeRequest(t, refreshReq, 200) MakeRequest(t, refreshReq, http.StatusOK)
refreshReq.Body = io.NopCloser(bytes.NewReader(bs)) refreshReq.Body = io.NopCloser(bytes.NewReader(bs))
MakeRequest(t, refreshReq, 200) MakeRequest(t, refreshReq, http.StatusOK)
// test with invalidation // test with invalidation
setting.OAuth2.InvalidateRefreshTokens = true setting.OAuth2.InvalidateRefreshTokens = true
refreshReq.Body = io.NopCloser(bytes.NewReader(bs)) refreshReq.Body = io.NopCloser(bytes.NewReader(bs))
MakeRequest(t, refreshReq, 200) MakeRequest(t, refreshReq, http.StatusOK)
refreshReq.Body = io.NopCloser(bytes.NewReader(bs)) refreshReq.Body = io.NopCloser(bytes.NewReader(bs))
MakeRequest(t, refreshReq, 400) MakeRequest(t, refreshReq, http.StatusBadRequest)
} }

View File

@ -53,7 +53,7 @@ func testPrivateActivityHelperEnablePrivateActivity(t *testing.T) {
"language": "en-US", "language": "en-US",
"keep_activity_private": "1", "keep_activity_private": "1",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
} }
func testPrivateActivityHelperHasVisibleActivitiesInHTMLDoc(htmlDoc *HTMLDoc) bool { func testPrivateActivityHelperHasVisibleActivitiesInHTMLDoc(htmlDoc *HTMLDoc) bool {

View File

@ -38,7 +38,7 @@ func testPullCreate(t *testing.T, session *TestSession, user, repo, branch, titl
"_csrf": htmlDoc.GetCSRF(), "_csrf": htmlDoc.GetCSRF(),
"title": title, "title": title,
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
return resp return resp
} }
@ -130,7 +130,7 @@ func testDeleteRepository(t *testing.T, session *TestSession, ownerName, repoNam
"_csrf": htmlDoc.GetCSRF(), "_csrf": htmlDoc.GetCSRF(),
"repo_name": repoName, "repo_name": repoName,
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
} }
func TestPullBranchDelete(t *testing.T) { func TestPullBranchDelete(t *testing.T) {
@ -139,7 +139,7 @@ func TestPullBranchDelete(t *testing.T) {
session := loginUser(t, "user1") session := loginUser(t, "user1")
testRepoFork(t, session, "user2", "repo1", "user1", "repo1") testRepoFork(t, session, "user2", "repo1", "user1", "repo1")
testCreateBranch(t, session, "user1", "repo1", "branch/master", "master1", http.StatusFound) testCreateBranch(t, session, "user1", "repo1", "branch/master", "master1", http.StatusSeeOther)
testEditFile(t, session, "user1", "repo1", "master1", "README.md", "Hello, World (Edited)\n") testEditFile(t, session, "user1", "repo1", "master1", "README.md", "Hello, World (Edited)\n")
resp := testPullCreate(t, session, "user1", "repo1", "master1", "This is a pull title") resp := testPullCreate(t, session, "user1", "repo1", "master1", "This is a pull title")

View File

@ -42,7 +42,7 @@ func testPullMerge(t *testing.T, session *TestSession, user, repo, pullnum strin
"_csrf": htmlDoc.GetCSRF(), "_csrf": htmlDoc.GetCSRF(),
"do": string(mergeStyle), "do": string(mergeStyle),
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
return resp return resp
} }
@ -220,7 +220,7 @@ func TestCantMergeConflict(t *testing.T) {
Base: "base", Base: "base",
Title: "create a conflicting pr", Title: "create a conflicting pr",
}) })
session.MakeRequest(t, req, 201) session.MakeRequest(t, req, http.StatusCreated)
// Now this PR will be marked conflict - or at least a race will do - so drop down to pure code at this point... // Now this PR will be marked conflict - or at least a race will do - so drop down to pure code at this point...
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{
@ -330,7 +330,7 @@ func TestCantMergeUnrelated(t *testing.T) {
Base: "base", Base: "base",
Title: "create an unrelated pr", Title: "create an unrelated pr",
}) })
session.MakeRequest(t, req, 201) session.MakeRequest(t, req, http.StatusCreated)
// Now this PR could be marked conflict - or at least a race may occur - so drop down to pure code at this point... // Now this PR could be marked conflict - or at least a race may occur - so drop down to pure code at this point...
gitRepo, err := git.OpenRepository(path) gitRepo, err := git.OpenRepository(path)

View File

@ -29,7 +29,7 @@ func TestPullCreate_CommitStatus(t *testing.T) {
"title": "pull request from status1", "title": "pull request from status1",
}, },
) )
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
req = NewRequest(t, "GET", "/user1/repo1/pulls") req = NewRequest(t, "GET", "/user1/repo1/pulls")
resp := session.MakeRequest(t, req, http.StatusOK) resp := session.MakeRequest(t, req, http.StatusOK)
@ -108,7 +108,7 @@ func TestPullCreate_EmptyChangesWithCommits(t *testing.T) {
"title": "pull request from status1", "title": "pull request from status1",
}, },
) )
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
req = NewRequest(t, "GET", "/user1/repo1/pulls/1") req = NewRequest(t, "GET", "/user1/repo1/pulls/1")
resp := session.MakeRequest(t, req, http.StatusOK) resp := session.MakeRequest(t, req, http.StatusOK)

View File

@ -43,7 +43,7 @@ func createNewRelease(t *testing.T, session *TestSession, repoURL, tag, title st
} }
req = NewRequestWithValues(t, "POST", link, postData) req = NewRequestWithValues(t, "POST", link, postData)
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
test.RedirectURL(resp) // check that redirect URL exists test.RedirectURL(resp) // check that redirect URL exists
} }

View File

@ -27,7 +27,7 @@ func TestRenameBranch(t *testing.T) {
"to": "main", "to": "main",
} }
req = NewRequestWithValues(t, "POST", "/user2/repo1/settings/rename_branch", postData) req = NewRequestWithValues(t, "POST", "/user2/repo1/settings/rename_branch", postData)
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
// check new branch link // check new branch link
req = NewRequestWithValues(t, "GET", "/user2/repo1/src/branch/main/README.md", postData) req = NewRequestWithValues(t, "GET", "/user2/repo1/src/branch/main/README.md", postData)
@ -35,7 +35,7 @@ func TestRenameBranch(t *testing.T) {
// check old branch link // check old branch link
req = NewRequestWithValues(t, "GET", "/user2/repo1/src/branch/master/README.md", postData) req = NewRequestWithValues(t, "GET", "/user2/repo1/src/branch/master/README.md", postData)
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
location := resp.HeaderMap.Get("Location") location := resp.HeaderMap.Get("Location")
assert.Equal(t, "/user2/repo1/src/branch/main/README.md", location) assert.Equal(t, "/user2/repo1/src/branch/main/README.md", location)

View File

@ -30,7 +30,7 @@ func testCreateBranch(t testing.TB, session *TestSession, user, repo, oldRefSubU
"new_branch_name": newBranchName, "new_branch_name": newBranchName,
}) })
resp := session.MakeRequest(t, req, expectedStatus) resp := session.MakeRequest(t, req, expectedStatus)
if expectedStatus != http.StatusFound { if expectedStatus != http.StatusSeeOther {
return "" return ""
} }
return test.RedirectURL(resp) return test.RedirectURL(resp)
@ -51,37 +51,37 @@ func testCreateBranches(t *testing.T, giteaURL *url.URL) {
{ {
OldRefSubURL: "branch/master", OldRefSubURL: "branch/master",
NewBranch: "feature/test1", NewBranch: "feature/test1",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature/test1"), FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature/test1"),
}, },
{ {
OldRefSubURL: "branch/master", OldRefSubURL: "branch/master",
NewBranch: "", NewBranch: "",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "form.NewBranchName") + i18n.Tr("en", "form.require_error"), FlashMessage: i18n.Tr("en", "form.NewBranchName") + i18n.Tr("en", "form.require_error"),
}, },
{ {
OldRefSubURL: "branch/master", OldRefSubURL: "branch/master",
NewBranch: "feature=test1", NewBranch: "feature=test1",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature=test1"), FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature=test1"),
}, },
{ {
OldRefSubURL: "branch/master", OldRefSubURL: "branch/master",
NewBranch: strings.Repeat("b", 101), NewBranch: strings.Repeat("b", 101),
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "form.NewBranchName") + i18n.Tr("en", "form.max_size_error", "100"), FlashMessage: i18n.Tr("en", "form.NewBranchName") + i18n.Tr("en", "form.max_size_error", "100"),
}, },
{ {
OldRefSubURL: "branch/master", OldRefSubURL: "branch/master",
NewBranch: "master", NewBranch: "master",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "repo.branch.branch_already_exists", "master"), FlashMessage: i18n.Tr("en", "repo.branch.branch_already_exists", "master"),
}, },
{ {
OldRefSubURL: "branch/master", OldRefSubURL: "branch/master",
NewBranch: "master/test", NewBranch: "master/test",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "repo.branch.branch_name_conflict", "master/test", "master"), FlashMessage: i18n.Tr("en", "repo.branch.branch_name_conflict", "master/test", "master"),
}, },
{ {
@ -92,21 +92,21 @@ func testCreateBranches(t *testing.T, giteaURL *url.URL) {
{ {
OldRefSubURL: "commit/65f1bf27bc3bf70f64657658635e66094edbcb4d", OldRefSubURL: "commit/65f1bf27bc3bf70f64657658635e66094edbcb4d",
NewBranch: "feature/test3", NewBranch: "feature/test3",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature/test3"), FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature/test3"),
}, },
{ {
OldRefSubURL: "branch/master", OldRefSubURL: "branch/master",
NewBranch: "v1.0.0", NewBranch: "v1.0.0",
CreateRelease: "v1.0.0", CreateRelease: "v1.0.0",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "repo.branch.tag_collision", "v1.0.0"), FlashMessage: i18n.Tr("en", "repo.branch.tag_collision", "v1.0.0"),
}, },
{ {
OldRefSubURL: "tag/v1.0.0", OldRefSubURL: "tag/v1.0.0",
NewBranch: "feature/test4", NewBranch: "feature/test4",
CreateRelease: "v1.0.1", CreateRelease: "v1.0.1",
ExpectedStatus: http.StatusFound, ExpectedStatus: http.StatusSeeOther,
FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature/test4"), FlashMessage: i18n.Tr("en", "repo.branch.create_success", "feature/test4"),
}, },
} }
@ -116,7 +116,7 @@ func testCreateBranches(t *testing.T, giteaURL *url.URL) {
createNewRelease(t, session, "/user2/repo1", test.CreateRelease, test.CreateRelease, false, false) createNewRelease(t, session, "/user2/repo1", test.CreateRelease, test.CreateRelease, false, false)
} }
redirectURL := testCreateBranch(t, session, "user2", "repo1", test.OldRefSubURL, test.NewBranch, test.ExpectedStatus) redirectURL := testCreateBranch(t, session, "user2", "repo1", test.OldRefSubURL, test.NewBranch, test.ExpectedStatus)
if test.ExpectedStatus == http.StatusFound { if test.ExpectedStatus == http.StatusSeeOther {
req := NewRequest(t, "GET", redirectURL) req := NewRequest(t, "GET", redirectURL)
resp := session.MakeRequest(t, req, http.StatusOK) resp := session.MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body) htmlDoc := NewHTMLParser(t, resp.Body)
@ -135,7 +135,7 @@ func TestCreateBranchInvalidCSRF(t *testing.T) {
"_csrf": "fake_csrf", "_csrf": "fake_csrf",
"new_branch_name": "test", "new_branch_name": "test",
}) })
resp := session.MakeRequest(t, req, http.StatusFound) resp := session.MakeRequest(t, req, http.StatusSeeOther)
loc := resp.Header().Get("Location") loc := resp.Header().Get("Location")
assert.Equal(t, setting.AppSubURL+"/", loc) assert.Equal(t, setting.AppSubURL+"/", loc)
resp = session.MakeRequest(t, NewRequest(t, "GET", loc), http.StatusOK) resp = session.MakeRequest(t, NewRequest(t, "GET", loc), http.StatusOK)

View File

@ -45,7 +45,7 @@ func testRepoFork(t *testing.T, session *TestSession, ownerName, repoName, forkO
"uid": fmt.Sprintf("%d", forkOwner.ID), "uid": fmt.Sprintf("%d", forkOwner.ID),
"repo_name": forkRepoName, "repo_name": forkRepoName,
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
// Step4: check the existence of the forked repo // Step4: check the existence of the forked repo
req = NewRequestf(t, "GET", "/%s/%s", forkOwnerName, forkRepoName) req = NewRequestf(t, "GET", "/%s/%s", forkOwnerName, forkRepoName)

View File

@ -46,7 +46,7 @@ func testRepoGenerate(t *testing.T, session *TestSession, templateOwnerName, tem
"repo_name": generateRepoName, "repo_name": generateRepoName,
"git_content": "true", "git_content": "true",
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
// Step4: check the existence of the generated repo // Step4: check the existence of the generated repo
req = NewRequestf(t, "GET", "/%s/%s", generateOwnerName, generateRepoName) req = NewRequestf(t, "GET", "/%s/%s", generateOwnerName, generateRepoName)

View File

@ -33,7 +33,7 @@ func testRepoMigrate(t testing.TB, session *TestSession, cloneAddr, repoName str
"repo_name": repoName, "repo_name": repoName,
"service": fmt.Sprintf("%d", structs.PlainGitService), "service": fmt.Sprintf("%d", structs.PlainGitService),
}) })
resp = session.MakeRequest(t, req, http.StatusFound) resp = session.MakeRequest(t, req, http.StatusSeeOther)
return resp return resp
} }

View File

@ -90,17 +90,17 @@ func TestSettingLandingPage(t *testing.T) {
setting.LandingPageURL = setting.LandingPageExplore setting.LandingPageURL = setting.LandingPageExplore
req = NewRequest(t, "GET", "/") req = NewRequest(t, "GET", "/")
resp := MakeRequest(t, req, http.StatusFound) resp := MakeRequest(t, req, http.StatusSeeOther)
assert.Equal(t, "/explore", resp.Header().Get("Location")) assert.Equal(t, "/explore", resp.Header().Get("Location"))
setting.LandingPageURL = setting.LandingPageOrganizations setting.LandingPageURL = setting.LandingPageOrganizations
req = NewRequest(t, "GET", "/") req = NewRequest(t, "GET", "/")
resp = MakeRequest(t, req, http.StatusFound) resp = MakeRequest(t, req, http.StatusSeeOther)
assert.Equal(t, "/explore/organizations", resp.Header().Get("Location")) assert.Equal(t, "/explore/organizations", resp.Header().Get("Location"))
setting.LandingPageURL = setting.LandingPageLogin setting.LandingPageURL = setting.LandingPageLogin
req = NewRequest(t, "GET", "/") req = NewRequest(t, "GET", "/")
resp = MakeRequest(t, req, http.StatusFound) resp = MakeRequest(t, req, http.StatusSeeOther)
assert.Equal(t, "/user/login", resp.Header().Get("Location")) assert.Equal(t, "/user/login", resp.Header().Get("Location"))
setting.LandingPageURL = landingPage setting.LandingPageURL = landingPage

View File

@ -15,7 +15,7 @@ func TestSignOut(t *testing.T) {
session := loginUser(t, "user2") session := loginUser(t, "user2")
req := NewRequest(t, "POST", "/user/logout") req := NewRequest(t, "POST", "/user/logout")
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
// try to view a private repo, should fail // try to view a private repo, should fail
req = NewRequest(t, "GET", "/user2/repo2") req = NewRequest(t, "GET", "/user2/repo2")

View File

@ -29,7 +29,7 @@ func TestSignup(t *testing.T) {
"password": "examplePassword!1", "password": "examplePassword!1",
"retype": "examplePassword!1", "retype": "examplePassword!1",
}) })
MakeRequest(t, req, http.StatusFound) MakeRequest(t, req, http.StatusSeeOther)
// should be able to view new user's page // should be able to view new user's page
req = NewRequest(t, "GET", "/exampleUser") req = NewRequest(t, "GET", "/exampleUser")
@ -48,7 +48,7 @@ func TestSignupAsRestricted(t *testing.T) {
"password": "examplePassword!1", "password": "examplePassword!1",
"retype": "examplePassword!1", "retype": "examplePassword!1",
}) })
MakeRequest(t, req, http.StatusFound) MakeRequest(t, req, http.StatusSeeOther)
// should be able to view new user's page // should be able to view new user's page
req = NewRequest(t, "GET", "/restrictedUser") req = NewRequest(t, "GET", "/restrictedUser")
@ -71,7 +71,7 @@ func TestSignupEmail(t *testing.T) {
{"exampleUser@example.com\r\n", http.StatusOK, i18n.Tr("en", "form.email_invalid", nil)}, {"exampleUser@example.com\r\n", http.StatusOK, i18n.Tr("en", "form.email_invalid", nil)},
{"exampleUser@example.com\r", http.StatusOK, i18n.Tr("en", "form.email_invalid", nil)}, {"exampleUser@example.com\r", http.StatusOK, i18n.Tr("en", "form.email_invalid", nil)},
{"exampleUser@example.com\n", http.StatusOK, i18n.Tr("en", "form.email_invalid", nil)}, {"exampleUser@example.com\n", http.StatusOK, i18n.Tr("en", "form.email_invalid", nil)},
{"exampleUser@example.com", http.StatusFound, ""}, {"exampleUser@example.com", http.StatusSeeOther, ""},
} }
for i, test := range tests { for i, test := range tests {

View File

@ -70,7 +70,7 @@ func TestUserAvatar(t *testing.T) {
req.Header.Add("X-Csrf-Token", csrf) req.Header.Add("X-Csrf-Token", csrf)
req.Header.Add("Content-Type", writer.FormDataContentType()) req.Header.Add("Content-Type", writer.FormDataContentType())
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
user2 = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) // owner of the repo3, is an org user2 = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}).(*user_model.User) // owner of the repo3, is an org

View File

@ -33,7 +33,7 @@ func TestRenameUsername(t *testing.T) {
"email": "user2@example.com", "email": "user2@example.com",
"language": "en-US", "language": "en-US",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "newUsername"}) unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "newUsername"})
unittest.AssertNotExistsBean(t, &user_model.User{Name: "user2"}) unittest.AssertNotExistsBean(t, &user_model.User{Name: "user2"})
@ -103,7 +103,7 @@ func TestRenameReservedUsername(t *testing.T) {
"email": "user2@example.com", "email": "user2@example.com",
"language": "en-US", "language": "en-US",
}) })
resp := session.MakeRequest(t, req, http.StatusFound) resp := session.MakeRequest(t, req, http.StatusSeeOther)
req = NewRequest(t, "GET", test.RedirectURL(resp)) req = NewRequest(t, "GET", test.RedirectURL(resp))
resp = session.MakeRequest(t, req, http.StatusOK) resp = session.MakeRequest(t, req, http.StatusOK)

View File

@ -27,7 +27,7 @@ func TestXSSUserFullName(t *testing.T) {
"email": user.Email, "email": user.Email,
"language": "en-US", "language": "en-US",
}) })
session.MakeRequest(t, req, http.StatusFound) session.MakeRequest(t, req, http.StatusSeeOther)
req = NewRequestf(t, "GET", "/%s", user.Name) req = NewRequestf(t, "GET", "/%s", user.Name)
resp := session.MakeRequest(t, req, http.StatusOK) resp := session.MakeRequest(t, req, http.StatusOK)

View File

@ -214,7 +214,7 @@ func (ctx *APIContext) RequireCSRF() {
if len(headerToken) > 0 || len(formValueToken) > 0 { if len(headerToken) > 0 || len(formValueToken) > 0 {
Validate(ctx.Context, ctx.csrf) Validate(ctx.Context, ctx.csrf)
} else { } else {
ctx.Context.Error(401, "Missing CSRF token.") ctx.Context.Error(http.StatusUnauthorized, "Missing CSRF token.")
} }
} }
@ -239,7 +239,7 @@ func (ctx *APIContext) CheckForOTP() {
return return
} }
if !ok { if !ok {
ctx.Context.Error(401) ctx.Context.Error(http.StatusUnauthorized)
return return
} }
} }

View File

@ -139,7 +139,7 @@ func RedirectToUser(ctx *Context, userName string, redirectUserID int64) {
if ctx.Req.URL.RawQuery != "" { if ctx.Req.URL.RawQuery != "" {
redirectPath += "?" + ctx.Req.URL.RawQuery redirectPath += "?" + ctx.Req.URL.RawQuery
} }
ctx.Redirect(path.Join(setting.AppSubURL, redirectPath)) ctx.Redirect(path.Join(setting.AppSubURL, redirectPath), http.StatusTemporaryRedirect)
} }
// HasAPIError returns true if error occurs in form validation. // HasAPIError returns true if error occurs in form validation.
@ -215,7 +215,7 @@ func (ctx *Context) HTML(status int, name base.TplName) {
// RenderToString renders the template content to a string // RenderToString renders the template content to a string
func (ctx *Context) RenderToString(name base.TplName, data map[string]interface{}) (string, error) { func (ctx *Context) RenderToString(name base.TplName, data map[string]interface{}) (string, error) {
var buf strings.Builder var buf strings.Builder
err := ctx.Render.HTML(&buf, 200, string(name), data) err := ctx.Render.HTML(&buf, http.StatusOK, string(name), data)
return buf.String(), err return buf.String(), err
} }
@ -397,7 +397,7 @@ func (ctx *Context) JSON(status int, content interface{}) {
// Redirect redirects the request // Redirect redirects the request
func (ctx *Context) Redirect(location string, status ...int) { func (ctx *Context) Redirect(location string, status ...int) {
code := http.StatusFound code := http.StatusSeeOther
if len(status) == 1 { if len(status) == 1 {
code = status[0] code = status[0]
} }

View File

@ -335,7 +335,7 @@ func RedirectToRepo(ctx *Context, redirectRepoID int64) {
if ctx.Req.URL.RawQuery != "" { if ctx.Req.URL.RawQuery != "" {
redirectPath += "?" + ctx.Req.URL.RawQuery redirectPath += "?" + ctx.Req.URL.RawQuery
} }
ctx.Redirect(path.Join(setting.AppSubURL, redirectPath)) ctx.Redirect(path.Join(setting.AppSubURL, redirectPath), http.StatusTemporaryRedirect)
} }
func repoAssignment(ctx *Context, repo *repo_model.Repository) { func repoAssignment(ctx *Context, repo *repo_model.Repository) {

View File

@ -81,7 +81,7 @@ func lfsTestRoundtripHandler(req *http.Request) *http.Response {
Objects: []*ObjectResponse{ Objects: []*ObjectResponse{
{ {
Error: &ObjectError{ Error: &ObjectError{
Code: 404, Code: http.StatusNotFound,
Message: "Object not found", Message: "Object not found",
}, },
}, },

View File

@ -45,7 +45,7 @@ func RestoreRepo(ctx context.Context, repoDir, ownerName, repoName string, units
} }
defer resp.Body.Close() defer resp.Body.Close()
if resp.StatusCode != 200 { if resp.StatusCode != http.StatusOK {
ret := struct { ret := struct {
Err string `json:"err"` Err string `json:"err"`
}{} }{}

View File

@ -67,7 +67,7 @@ func TestRoute2(t *testing.T) {
route = 1 route = 1
}) })
}, func(resp http.ResponseWriter, req *http.Request) { }, func(resp http.ResponseWriter, req *http.Request) {
resp.WriteHeader(200) resp.WriteHeader(http.StatusOK)
}) })
r.Group("/issues/{index}", func() { r.Group("/issues/{index}", func() {

View File

@ -130,7 +130,7 @@ func IsMember(ctx *context.APIContext) {
// responses: // responses:
// "204": // "204":
// description: user is a member // description: user is a member
// "302": // "303":
// description: redirection to /orgs/{org}/public_members/{username} // description: redirection to /orgs/{org}/public_members/{username}
// "404": // "404":
// description: user is not a member // description: user is not a member
@ -161,7 +161,7 @@ func IsMember(ctx *context.APIContext) {
} }
redirectURL := setting.AppSubURL + "/api/v1/orgs/" + url.PathEscape(ctx.Org.Organization.Name) + "/public_members/" + url.PathEscape(userToCheck.Name) redirectURL := setting.AppSubURL + "/api/v1/orgs/" + url.PathEscape(ctx.Org.Organization.Name) + "/public_members/" + url.PathEscape(userToCheck.Name)
ctx.Redirect(redirectURL, 302) ctx.Redirect(redirectURL)
} }
// IsPublicMember check if a user is a public member of an organization // IsPublicMember check if a user is a public member of an organization

View File

@ -288,7 +288,7 @@ func ResetIssueTime(ctx *context.APIContext) {
} }
return return
} }
ctx.Status(204) ctx.Status(http.StatusNoContent)
} }
// DeleteTime delete a specific time by id // DeleteTime delete a specific time by id

View File

@ -70,9 +70,9 @@ func Middlewares() []func(http.Handler) http.Handler {
combinedErr := fmt.Sprintf("PANIC: %v\n%s", err, log.Stack(2)) combinedErr := fmt.Sprintf("PANIC: %v\n%s", err, log.Stack(2))
log.Error("%v", combinedErr) log.Error("%v", combinedErr)
if setting.IsProd { if setting.IsProd {
http.Error(resp, http.StatusText(500), 500) http.Error(resp, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
} else { } else {
http.Error(resp, combinedErr, 500) http.Error(resp, combinedErr, http.StatusInternalServerError)
} }
} }
}() }()

View File

@ -59,7 +59,7 @@ func Init(next http.Handler) http.Handler {
return http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) { return http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
if setting.InstallLock { if setting.InstallLock {
resp.Header().Add("Refresh", "1; url="+setting.AppURL+"user/login") resp.Header().Add("Refresh", "1; url="+setting.AppURL+"user/login")
_ = rnd.HTML(resp, 200, string(tplPostInstall), nil) _ = rnd.HTML(resp, http.StatusOK, string(tplPostInstall), nil)
return return
} }
locale := middleware.Locale(resp, req) locale := middleware.Locale(resp, req)

View File

@ -41,9 +41,9 @@ func installRecovery() func(next http.Handler) http.Handler {
combinedErr := fmt.Sprintf("PANIC: %v\n%s", err, log.Stack(2)) combinedErr := fmt.Sprintf("PANIC: %v\n%s", err, log.Stack(2))
log.Error("%s", combinedErr) log.Error("%s", combinedErr)
if setting.IsProd { if setting.IsProd {
http.Error(w, http.StatusText(500), 500) http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
} else { } else {
http.Error(w, combinedErr, 500) http.Error(w, combinedErr, http.StatusInternalServerError)
} }
} }
}() }()
@ -66,7 +66,7 @@ func installRecovery() func(next http.Handler) http.Handler {
if !setting.IsProd { if !setting.IsProd {
store["ErrorMsg"] = combinedErr store["ErrorMsg"] = combinedErr
} }
err = rnd.HTML(w, 500, "status/500", templates.BaseVars().Merge(store)) err = rnd.HTML(w, http.StatusInternalServerError, "status/500", templates.BaseVars().Merge(store))
if err != nil { if err != nil {
log.Error("%v", err) log.Error("%v", err)
} }

View File

@ -346,7 +346,7 @@ func Queue(ctx *context.Context) {
qid := ctx.ParamsInt64("qid") qid := ctx.ParamsInt64("qid")
mq := queue.GetManager().GetManagedQueue(qid) mq := queue.GetManager().GetManagedQueue(qid)
if mq == nil { if mq == nil {
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }
ctx.Data["Title"] = ctx.Tr("admin.monitor.queue", mq.Name) ctx.Data["Title"] = ctx.Tr("admin.monitor.queue", mq.Name)
@ -361,7 +361,7 @@ func WorkerCancel(ctx *context.Context) {
qid := ctx.ParamsInt64("qid") qid := ctx.ParamsInt64("qid")
mq := queue.GetManager().GetManagedQueue(qid) mq := queue.GetManager().GetManagedQueue(qid)
if mq == nil { if mq == nil {
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }
pid := ctx.ParamsInt64("pid") pid := ctx.ParamsInt64("pid")
@ -377,7 +377,7 @@ func Flush(ctx *context.Context) {
qid := ctx.ParamsInt64("qid") qid := ctx.ParamsInt64("qid")
mq := queue.GetManager().GetManagedQueue(qid) mq := queue.GetManager().GetManagedQueue(qid)
if mq == nil { if mq == nil {
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }
timeout, err := time.ParseDuration(ctx.FormString("timeout")) timeout, err := time.ParseDuration(ctx.FormString("timeout"))
@ -423,7 +423,7 @@ func AddWorkers(ctx *context.Context) {
qid := ctx.ParamsInt64("qid") qid := ctx.ParamsInt64("qid")
mq := queue.GetManager().GetManagedQueue(qid) mq := queue.GetManager().GetManagedQueue(qid)
if mq == nil { if mq == nil {
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }
number := ctx.FormInt("number") number := ctx.FormInt("number")
@ -453,7 +453,7 @@ func SetQueueSettings(ctx *context.Context) {
qid := ctx.ParamsInt64("qid") qid := ctx.ParamsInt64("qid")
mq := queue.GetManager().GetManagedQueue(qid) mq := queue.GetManager().GetManagedQueue(qid)
if mq == nil { if mq == nil {
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }
if _, ok := mq.Managed.(queue.ManagedPool); !ok { if _, ok := mq.Managed.(queue.ManagedPool); !ok {

View File

@ -59,10 +59,10 @@ func DeleteNotices(ctx *context.Context) {
if err := admin_model.DeleteNoticesByIDs(ids); err != nil { if err := admin_model.DeleteNoticesByIDs(ids); err != nil {
ctx.Flash.Error("DeleteNoticesByIDs: " + err.Error()) ctx.Flash.Error("DeleteNoticesByIDs: " + err.Error())
ctx.Status(500) ctx.Status(http.StatusInternalServerError)
} else { } else {
ctx.Flash.Success(ctx.Tr("admin.notices.delete_success")) ctx.Flash.Success(ctx.Tr("admin.notices.delete_success"))
ctx.Status(200) ctx.Status(http.StatusOK)
} }
} }

View File

@ -462,7 +462,7 @@ func AuthorizeOAuth(ctx *context.Context) {
log.Error("Unable to update nonce: %v", err) log.Error("Unable to update nonce: %v", err)
} }
} }
ctx.Redirect(redirect.String(), 302) ctx.Redirect(redirect.String())
return return
} }
@ -544,7 +544,7 @@ func GrantApplicationOAuth(ctx *context.Context) {
handleServerError(ctx, form.State, form.RedirectURI) handleServerError(ctx, form.State, form.RedirectURI)
return return
} }
ctx.Redirect(redirect.String(), 302) ctx.Redirect(redirect.String(), http.StatusSeeOther)
} }
// OIDCWellKnown generates JSON so OIDC clients know Gitea's capabilities // OIDCWellKnown generates JSON so OIDC clients know Gitea's capabilities
@ -752,7 +752,7 @@ func handleAuthorizeError(ctx *context.Context, authErr AuthorizeError, redirect
if redirectURI == "" { if redirectURI == "" {
log.Warn("Authorization failed: %v", authErr.ErrorDescription) log.Warn("Authorization failed: %v", authErr.ErrorDescription)
ctx.Data["Error"] = authErr ctx.Data["Error"] = authErr
ctx.HTML(400, tplGrantError) ctx.HTML(http.StatusBadRequest, tplGrantError)
return return
} }
redirect, err := url.Parse(redirectURI) redirect, err := url.Parse(redirectURI)
@ -765,7 +765,7 @@ func handleAuthorizeError(ctx *context.Context, authErr AuthorizeError, redirect
q.Set("error_description", authErr.ErrorDescription) q.Set("error_description", authErr.ErrorDescription)
q.Set("state", authErr.State) q.Set("state", authErr.State)
redirect.RawQuery = q.Encode() redirect.RawQuery = q.Encode()
ctx.Redirect(redirect.String(), 302) ctx.Redirect(redirect.String(), http.StatusSeeOther)
} }
// SignInOAuth handles the OAuth2 login buttons // SignInOAuth handles the OAuth2 login buttons

View File

@ -39,7 +39,7 @@ func WebAuthn(ctx *context.Context) {
return return
} }
ctx.HTML(200, tplWebAuthn) ctx.HTML(http.StatusOK, tplWebAuthn)
} }
// WebAuthnLoginAssertion submits a WebAuthn challenge to the browser // WebAuthnLoginAssertion submits a WebAuthn challenge to the browser
@ -166,5 +166,5 @@ func WebAuthnLoginAssertionPost(ctx *context.Context) {
} }
} }
ctx.JSON(200, map[string]string{"redirect": redirect}) ctx.JSON(http.StatusOK, map[string]string{"redirect": redirect})
} }

View File

@ -50,11 +50,11 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
if err != nil { if err != nil {
if os.IsNotExist(err) || errors.Is(err, os.ErrNotExist) { if os.IsNotExist(err) || errors.Is(err, os.ErrNotExist) {
log.Warn("Unable to find %s %s", prefix, rPath) log.Warn("Unable to find %s %s", prefix, rPath)
http.Error(w, "file not found", 404) http.Error(w, "file not found", http.StatusNotFound)
return return
} }
log.Error("Error whilst getting URL for %s %s. Error: %v", prefix, rPath, err) log.Error("Error whilst getting URL for %s %s. Error: %v", prefix, rPath, err)
http.Error(w, fmt.Sprintf("Error whilst getting URL for %s %s", prefix, rPath), 500) http.Error(w, fmt.Sprintf("Error whilst getting URL for %s %s", prefix, rPath), http.StatusInternalServerError)
return return
} }
@ -62,7 +62,7 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
w, w,
req, req,
u.String(), u.String(),
http.StatusMovedPermanently, http.StatusPermanentRedirect,
) )
}) })
} }
@ -82,7 +82,7 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
rPath := strings.TrimPrefix(req.URL.Path, "/"+prefix+"/") rPath := strings.TrimPrefix(req.URL.Path, "/"+prefix+"/")
rPath = path.Clean("/" + strings.ReplaceAll(rPath, "\\", "/"))[1:] rPath = path.Clean("/" + strings.ReplaceAll(rPath, "\\", "/"))[1:]
if rPath == "" { if rPath == "" {
http.Error(w, "file not found", 404) http.Error(w, "file not found", http.StatusNotFound)
return return
} }
@ -96,11 +96,11 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
if err != nil { if err != nil {
if os.IsNotExist(err) || errors.Is(err, os.ErrNotExist) { if os.IsNotExist(err) || errors.Is(err, os.ErrNotExist) {
log.Warn("Unable to find %s %s", prefix, rPath) log.Warn("Unable to find %s %s", prefix, rPath)
http.Error(w, "file not found", 404) http.Error(w, "file not found", http.StatusNotFound)
return return
} }
log.Error("Error whilst opening %s %s. Error: %v", prefix, rPath, err) log.Error("Error whilst opening %s %s. Error: %v", prefix, rPath, err)
http.Error(w, fmt.Sprintf("Error whilst opening %s %s", prefix, rPath), 500) http.Error(w, fmt.Sprintf("Error whilst opening %s %s", prefix, rPath), http.StatusInternalServerError)
return return
} }
defer fr.Close() defer fr.Close()
@ -108,7 +108,7 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
_, err = io.Copy(w, fr) _, err = io.Copy(w, fr)
if err != nil { if err != nil {
log.Error("Error whilst rendering %s %s. Error: %v", prefix, rPath, err) log.Error("Error whilst rendering %s %s. Error: %v", prefix, rPath, err)
http.Error(w, fmt.Sprintf("Error whilst rendering %s %s", prefix, rPath), 500) http.Error(w, fmt.Sprintf("Error whilst rendering %s %s", prefix, rPath), http.StatusInternalServerError)
return return
} }
}) })
@ -163,7 +163,7 @@ func Recovery() func(next http.Handler) http.Handler {
if !setting.IsProd { if !setting.IsProd {
store["ErrorMsg"] = combinedErr store["ErrorMsg"] = combinedErr
} }
err = rnd.HTML(w, 500, "status/500", templates.BaseVars().Merge(store)) err = rnd.HTML(w, http.StatusInternalServerError, "status/500", templates.BaseVars().Merge(store))
if err != nil { if err != nil {
log.Error("%v", err) log.Error("%v", err)
} }

View File

@ -24,7 +24,7 @@ const (
// Code render explore code page // Code render explore code page
func Code(ctx *context.Context) { func Code(ctx *context.Context) {
if !setting.Indexer.RepoIndexerEnabled { if !setting.Indexer.RepoIndexerEnabled {
ctx.Redirect(setting.AppSubURL+"/explore", 302) ctx.Redirect(setting.AppSubURL + "/explore")
return return
} }

View File

@ -48,7 +48,7 @@ func goGet(ctx *context.Context) {
</body> </body>
</html> </html>
`)) `))
ctx.Status(400) ctx.Status(http.StatusBadRequest)
return return
} }
branchName := setting.Repository.DefaultBranch branchName := setting.Repository.DefaultBranch

View File

@ -21,13 +21,13 @@ func Metrics(resp http.ResponseWriter, req *http.Request) {
} }
header := req.Header.Get("Authorization") header := req.Header.Get("Authorization")
if header == "" { if header == "" {
http.Error(resp, "", 401) http.Error(resp, "", http.StatusUnauthorized)
return return
} }
got := []byte(header) got := []byte(header)
want := []byte("Bearer " + setting.Metrics.Token) want := []byte("Bearer " + setting.Metrics.Token)
if subtle.ConstantTimeCompare(got, want) != 1 { if subtle.ConstantTimeCompare(got, want) != 1 {
http.Error(resp, "", 401) http.Error(resp, "", http.StatusUnauthorized)
return return
} }
promhttp.Handler().ServeHTTP(resp, req) promhttp.Handler().ServeHTTP(resp, req)

View File

@ -780,7 +780,7 @@ func UploadFileToServer(ctx *context.Context) {
func RemoveUploadFileFromServer(ctx *context.Context) { func RemoveUploadFileFromServer(ctx *context.Context) {
form := web.GetForm(ctx).(*forms.RemoveUploadFileForm) form := web.GetForm(ctx).(*forms.RemoveUploadFileForm)
if len(form.File) == 0 { if len(form.File) == 0 {
ctx.Status(204) ctx.Status(http.StatusNoContent)
return return
} }
@ -790,7 +790,7 @@ func RemoveUploadFileFromServer(ctx *context.Context) {
} }
log.Trace("Upload file removed: %s", form.File) log.Trace("Upload file removed: %s", form.File)
ctx.Status(204) ctx.Status(http.StatusNoContent)
} }
// GetUniquePatchBranchName Gets a unique branch name for a new patch branch // GetUniquePatchBranchName Gets a unique branch name for a new patch branch

View File

@ -1931,7 +1931,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
// TODO: Not support 'clear' now // TODO: Not support 'clear' now
if action != "attach" && action != "detach" { if action != "attach" && action != "detach" {
ctx.Status(403) ctx.Status(http.StatusForbidden)
return return
} }
@ -1946,7 +1946,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
"UpdatePullReviewRequest: refusing to add review request for non-PR issue %-v#%d", "UpdatePullReviewRequest: refusing to add review request for non-PR issue %-v#%d",
issue.Repo, issue.Index, issue.Repo, issue.Index,
) )
ctx.Status(403) ctx.Status(http.StatusForbidden)
return return
} }
if reviewID < 0 { if reviewID < 0 {
@ -1961,7 +1961,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
"UpdatePullReviewRequest: refusing to add team review request for %s#%d owned by non organization UID[%d]", "UpdatePullReviewRequest: refusing to add team review request for %s#%d owned by non organization UID[%d]",
issue.Repo.FullName(), issue.Index, issue.Repo.ID, issue.Repo.FullName(), issue.Index, issue.Repo.ID,
) )
ctx.Status(403) ctx.Status(http.StatusForbidden)
return return
} }
@ -1975,7 +1975,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
log.Warn( log.Warn(
"UpdatePullReviewRequest: refusing to add team review request for UID[%d] team %s to %s#%d owned by UID[%d]", "UpdatePullReviewRequest: refusing to add team review request for UID[%d] team %s to %s#%d owned by UID[%d]",
team.OrgID, team.Name, issue.Repo.FullName(), issue.Index, issue.Repo.ID) team.OrgID, team.Name, issue.Repo.FullName(), issue.Index, issue.Repo.ID)
ctx.Status(403) ctx.Status(http.StatusForbidden)
return return
} }
@ -1987,7 +1987,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
team.OrgID, team.Name, issue.Repo.FullName(), issue.Index, issue.Repo.ID, team.OrgID, team.Name, issue.Repo.FullName(), issue.Index, issue.Repo.ID,
err, err,
) )
ctx.Status(403) ctx.Status(http.StatusForbidden)
return return
} }
ctx.ServerError("IsValidTeamReviewRequest", err) ctx.ServerError("IsValidTeamReviewRequest", err)
@ -2010,7 +2010,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
reviewID, issue.Repo, issue.Index, reviewID, issue.Repo, issue.Index,
err, err,
) )
ctx.Status(403) ctx.Status(http.StatusForbidden)
return return
} }
ctx.ServerError("GetUserByID", err) ctx.ServerError("GetUserByID", err)
@ -2025,7 +2025,7 @@ func UpdatePullReviewRequest(ctx *context.Context) {
reviewer, issue.Repo, issue.Index, reviewer, issue.Repo, issue.Index,
err, err,
) )
ctx.Status(403) ctx.Status(http.StatusForbidden)
return return
} }
ctx.ServerError("isValidReviewRequest", err) ctx.ServerError("isValidReviewRequest", err)
@ -2117,7 +2117,7 @@ func NewComment(ctx *context.Context) {
if issue.IsLocked && !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) && !ctx.Doer.IsAdmin { if issue.IsLocked && !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) && !ctx.Doer.IsAdmin {
ctx.Flash.Error(ctx.Tr("repo.issues.comment_on_locked")) ctx.Flash.Error(ctx.Tr("repo.issues.comment_on_locked"))
ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) ctx.Redirect(issue.HTMLURL())
return return
} }
@ -2170,10 +2170,10 @@ func NewComment(ctx *context.Context) {
if models.IsErrDependenciesLeft(err) { if models.IsErrDependenciesLeft(err) {
if issue.IsPull { if issue.IsPull {
ctx.Flash.Error(ctx.Tr("repo.issues.dependency.pr_close_blocked")) ctx.Flash.Error(ctx.Tr("repo.issues.dependency.pr_close_blocked"))
ctx.Redirect(fmt.Sprintf("%s/pulls/%d", ctx.Repo.RepoLink, issue.Index), http.StatusSeeOther) ctx.Redirect(fmt.Sprintf("%s/pulls/%d", ctx.Repo.RepoLink, issue.Index))
} else { } else {
ctx.Flash.Error(ctx.Tr("repo.issues.dependency.issue_close_blocked")) ctx.Flash.Error(ctx.Tr("repo.issues.dependency.issue_close_blocked"))
ctx.Redirect(fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, issue.Index), http.StatusSeeOther) ctx.Redirect(fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, issue.Index))
} }
return return
} }
@ -2306,7 +2306,7 @@ func DeleteComment(ctx *context.Context) {
return return
} }
ctx.Status(200) ctx.Status(http.StatusOK)
} }
// ChangeIssueReaction create a reaction for issue // ChangeIssueReaction create a reaction for issue

View File

@ -35,7 +35,7 @@ func AddDependency(ctx *context.Context) {
} }
// Redirect // Redirect
defer ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) defer ctx.Redirect(issue.HTMLURL())
// Dependency // Dependency
dep, err := models.GetIssueByID(depID) dep, err := models.GetIssueByID(depID)
@ -125,5 +125,5 @@ func RemoveDependency(ctx *context.Context) {
} }
// Redirect // Redirect
ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) ctx.Redirect(issue.HTMLURL())
} }

View File

@ -36,7 +36,7 @@ func TestInitializeLabels(t *testing.T) {
test.LoadRepo(t, ctx, 2) test.LoadRepo(t, ctx, 2)
web.SetForm(ctx, &forms.InitializeLabelsForm{TemplateName: "Default"}) web.SetForm(ctx, &forms.InitializeLabelsForm{TemplateName: "Default"})
InitializeLabels(ctx) InitializeLabels(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
unittest.AssertExistsAndLoadBean(t, &models.Label{ unittest.AssertExistsAndLoadBean(t, &models.Label{
RepoID: 2, RepoID: 2,
Name: "enhancement", Name: "enhancement",
@ -82,7 +82,7 @@ func TestNewLabel(t *testing.T) {
Color: "#abcdef", Color: "#abcdef",
}) })
NewLabel(ctx) NewLabel(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
unittest.AssertExistsAndLoadBean(t, &models.Label{ unittest.AssertExistsAndLoadBean(t, &models.Label{
Name: "newlabel", Name: "newlabel",
Color: "#abcdef", Color: "#abcdef",
@ -101,7 +101,7 @@ func TestUpdateLabel(t *testing.T) {
Color: "#abcdef", Color: "#abcdef",
}) })
UpdateLabel(ctx) UpdateLabel(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
unittest.AssertExistsAndLoadBean(t, &models.Label{ unittest.AssertExistsAndLoadBean(t, &models.Label{
ID: 2, ID: 2,
Name: "newnameforlabel", Name: "newnameforlabel",

View File

@ -5,8 +5,6 @@
package repo package repo
import ( import (
"net/http"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
@ -43,7 +41,7 @@ func LockIssue(ctx *context.Context) {
return return
} }
ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) ctx.Redirect(issue.HTMLURL())
} }
// UnlockIssue unlocks a previously locked issue. // UnlockIssue unlocks a previously locked issue.
@ -67,5 +65,5 @@ func UnlockIssue(ctx *context.Context) {
return return
} }
ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) ctx.Redirect(issue.HTMLURL())
} }

View File

@ -53,5 +53,5 @@ func IssueWatch(ctx *context.Context) {
return return
} }
ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) ctx.Redirect(issue.HTMLURL())
} }

View File

@ -18,7 +18,7 @@ const tplSearch base.TplName = "repo/search"
// Search render repository search page // Search render repository search page
func Search(ctx *context.Context) { func Search(ctx *context.Context) {
if !setting.Indexer.RepoIndexerEnabled { if !setting.Indexer.RepoIndexerEnabled {
ctx.Redirect(ctx.Repo.RepoLink, 302) ctx.Redirect(ctx.Repo.RepoLink)
return return
} }
language := ctx.FormTrim("l") language := ctx.FormTrim("l")

View File

@ -73,7 +73,7 @@ func ProtectedBranchPost(ctx *context.Context) {
branch := ctx.FormString("branch") branch := ctx.FormString("branch")
if !ctx.Repo.GitRepo.IsBranchExist(branch) { if !ctx.Repo.GitRepo.IsBranchExist(branch) {
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} else if repo.DefaultBranch != branch { } else if repo.DefaultBranch != branch {
repo.DefaultBranch = branch repo.DefaultBranch = branch

View File

@ -60,7 +60,7 @@ func TestAddReadOnlyDeployKey(t *testing.T) {
} }
web.SetForm(ctx, &addKeyForm) web.SetForm(ctx, &addKeyForm)
DeployKeysPost(ctx) DeployKeysPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
unittest.AssertExistsAndLoadBean(t, &asymkey_model.DeployKey{ unittest.AssertExistsAndLoadBean(t, &asymkey_model.DeployKey{
Name: addKeyForm.Title, Name: addKeyForm.Title,
@ -90,7 +90,7 @@ func TestAddReadWriteOnlyDeployKey(t *testing.T) {
} }
web.SetForm(ctx, &addKeyForm) web.SetForm(ctx, &addKeyForm)
DeployKeysPost(ctx) DeployKeysPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
unittest.AssertExistsAndLoadBean(t, &asymkey_model.DeployKey{ unittest.AssertExistsAndLoadBean(t, &asymkey_model.DeployKey{
Name: addKeyForm.Title, Name: addKeyForm.Title,
@ -127,7 +127,7 @@ func TestCollaborationPost(t *testing.T) {
CollaborationPost(ctx) CollaborationPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
exists, err := models.IsCollaborator(re.ID, 4) exists, err := models.IsCollaborator(re.ID, 4)
assert.NoError(t, err) assert.NoError(t, err)
@ -153,7 +153,7 @@ func TestCollaborationPost_InactiveUser(t *testing.T) {
CollaborationPost(ctx) CollaborationPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assert.NotEmpty(t, ctx.Flash.ErrorMsg) assert.NotEmpty(t, ctx.Flash.ErrorMsg)
} }
@ -185,7 +185,7 @@ func TestCollaborationPost_AddCollaboratorTwice(t *testing.T) {
CollaborationPost(ctx) CollaborationPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
exists, err := models.IsCollaborator(re.ID, 4) exists, err := models.IsCollaborator(re.ID, 4)
assert.NoError(t, err) assert.NoError(t, err)
@ -194,7 +194,7 @@ func TestCollaborationPost_AddCollaboratorTwice(t *testing.T) {
// Try adding the same collaborator again // Try adding the same collaborator again
CollaborationPost(ctx) CollaborationPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assert.NotEmpty(t, ctx.Flash.ErrorMsg) assert.NotEmpty(t, ctx.Flash.ErrorMsg)
} }
@ -216,7 +216,7 @@ func TestCollaborationPost_NonExistentUser(t *testing.T) {
CollaborationPost(ctx) CollaborationPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assert.NotEmpty(t, ctx.Flash.ErrorMsg) assert.NotEmpty(t, ctx.Flash.ErrorMsg)
} }
@ -256,7 +256,7 @@ func TestAddTeamPost(t *testing.T) {
AddTeamPost(ctx) AddTeamPost(ctx)
assert.True(t, team.HasRepository(re.ID)) assert.True(t, team.HasRepository(re.ID))
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assert.Empty(t, ctx.Flash.ErrorMsg) assert.Empty(t, ctx.Flash.ErrorMsg)
} }
@ -296,7 +296,7 @@ func TestAddTeamPost_NotAllowed(t *testing.T) {
AddTeamPost(ctx) AddTeamPost(ctx)
assert.False(t, team.HasRepository(re.ID)) assert.False(t, team.HasRepository(re.ID))
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assert.NotEmpty(t, ctx.Flash.ErrorMsg) assert.NotEmpty(t, ctx.Flash.ErrorMsg)
} }
@ -337,7 +337,7 @@ func TestAddTeamPost_AddTeamTwice(t *testing.T) {
AddTeamPost(ctx) AddTeamPost(ctx)
assert.True(t, team.HasRepository(re.ID)) assert.True(t, team.HasRepository(re.ID))
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assert.NotEmpty(t, ctx.Flash.ErrorMsg) assert.NotEmpty(t, ctx.Flash.ErrorMsg)
} }
@ -370,7 +370,7 @@ func TestAddTeamPost_NonExistentTeam(t *testing.T) {
ctx.Repo = repo ctx.Repo = repo
AddTeamPost(ctx) AddTeamPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assert.NotEmpty(t, ctx.Flash.ErrorMsg) assert.NotEmpty(t, ctx.Flash.ErrorMsg)
} }

View File

@ -1241,7 +1241,7 @@ func TestWebhook(ctx *context.Context) {
w, err := webhook.GetWebhookByRepoID(ctx.Repo.Repository.ID, hookID) w, err := webhook.GetWebhookByRepoID(ctx.Repo.Repository.ID, hookID)
if err != nil { if err != nil {
ctx.Flash.Error("GetWebhookByID: " + err.Error()) ctx.Flash.Error("GetWebhookByID: " + err.Error())
ctx.Status(500) ctx.Status(http.StatusInternalServerError)
return return
} }
@ -1285,10 +1285,10 @@ func TestWebhook(ctx *context.Context) {
} }
if err := webhook_service.PrepareWebhook(w, ctx.Repo.Repository, webhook.HookEventPush, p); err != nil { if err := webhook_service.PrepareWebhook(w, ctx.Repo.Repository, webhook.HookEventPush, p); err != nil {
ctx.Flash.Error("PrepareWebhook: " + err.Error()) ctx.Flash.Error("PrepareWebhook: " + err.Error())
ctx.Status(500) ctx.Status(http.StatusInternalServerError)
} else { } else {
ctx.Flash.Info(ctx.Tr("repo.settings.webhook.delivery.success")) ctx.Flash.Info(ctx.Tr("repo.settings.webhook.delivery.success"))
ctx.Status(200) ctx.Status(http.StatusOK)
} }
} }

View File

@ -124,7 +124,7 @@ func TestNewWikiPost(t *testing.T) {
Message: message, Message: message,
}) })
NewWikiPost(ctx) NewWikiPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assertWikiExists(t, ctx.Repo.Repository, title) assertWikiExists(t, ctx.Repo.Repository, title)
assert.Equal(t, wikiContent(t, ctx.Repo.Repository, title), content) assert.Equal(t, wikiContent(t, ctx.Repo.Repository, title), content)
} }
@ -176,7 +176,7 @@ func TestEditWikiPost(t *testing.T) {
Message: message, Message: message,
}) })
EditWikiPost(ctx) EditWikiPost(ctx)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
assertWikiExists(t, ctx.Repo.Repository, title) assertWikiExists(t, ctx.Repo.Repository, title)
assert.Equal(t, wikiContent(t, ctx.Repo.Repository, title), content) assert.Equal(t, wikiContent(t, ctx.Repo.Repository, title), content)
if title != "Home" { if title != "Home" {

View File

@ -151,7 +151,7 @@ func Dashboard(ctx *context.Context) {
func Milestones(ctx *context.Context) { func Milestones(ctx *context.Context) {
if unit.TypeIssues.UnitGlobalDisabled() && unit.TypePullRequests.UnitGlobalDisabled() { if unit.TypeIssues.UnitGlobalDisabled() && unit.TypePullRequests.UnitGlobalDisabled() {
log.Debug("Milestones overview page not available as both issues and pull requests are globally disabled") log.Debug("Milestones overview page not available as both issues and pull requests are globally disabled")
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }
@ -323,7 +323,7 @@ func Milestones(ctx *context.Context) {
func Pulls(ctx *context.Context) { func Pulls(ctx *context.Context) {
if unit.TypePullRequests.UnitGlobalDisabled() { if unit.TypePullRequests.UnitGlobalDisabled() {
log.Debug("Pull request overview page not available as it is globally disabled.") log.Debug("Pull request overview page not available as it is globally disabled.")
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }
@ -336,7 +336,7 @@ func Pulls(ctx *context.Context) {
func Issues(ctx *context.Context) { func Issues(ctx *context.Context) {
if unit.TypeIssues.UnitGlobalDisabled() { if unit.TypeIssues.UnitGlobalDisabled() {
log.Debug("Issues overview page not available as it is globally disabled.") log.Debug("Issues overview page not available as it is globally disabled.")
ctx.Status(404) ctx.Status(http.StatusNotFound)
return return
} }

View File

@ -94,6 +94,6 @@ func TestChangePassword(t *testing.T) {
AccountPost(ctx) AccountPost(ctx)
assert.Contains(t, ctx.Flash.ErrorMsg, req.Message) assert.Contains(t, ctx.Flash.ErrorMsg, req.Message)
assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) assert.EqualValues(t, http.StatusSeeOther, ctx.Resp.Status())
} }
} }

View File

@ -96,7 +96,7 @@ func Routes(sessioner func(http.Handler) http.Handler) *web.Route {
// this png is very likely to always be below the limit for gzip so it doesn't need to pass through gzip // this png is very likely to always be below the limit for gzip so it doesn't need to pass through gzip
routes.Get("/apple-touch-icon.png", func(w http.ResponseWriter, req *http.Request) { routes.Get("/apple-touch-icon.png", func(w http.ResponseWriter, req *http.Request) {
http.Redirect(w, req, path.Join(setting.StaticURLPrefix, "/assets/img/apple-touch-icon.png"), 301) http.Redirect(w, req, path.Join(setting.StaticURLPrefix, "/assets/img/apple-touch-icon.png"), http.StatusPermanentRedirect)
}) })
// redirect default favicon to the path of the custom favicon with a default as a fallback // redirect default favicon to the path of the custom favicon with a default as a fallback
@ -142,17 +142,17 @@ func Routes(sessioner func(http.Handler) http.Handler) *web.Route {
routes.Get("/ssh_info", func(rw http.ResponseWriter, req *http.Request) { routes.Get("/ssh_info", func(rw http.ResponseWriter, req *http.Request) {
if !git.SupportProcReceive { if !git.SupportProcReceive {
rw.WriteHeader(404) rw.WriteHeader(http.StatusNotFound)
return return
} }
rw.Header().Set("content-type", "text/json;charset=UTF-8") rw.Header().Set("content-type", "text/json;charset=UTF-8")
_, err := rw.Write([]byte(`{"type":"gitea","version":1}`)) _, err := rw.Write([]byte(`{"type":"gitea","version":1}`))
if err != nil { if err != nil {
log.Error("fail to write result: err: %v", err) log.Error("fail to write result: err: %v", err)
rw.WriteHeader(500) rw.WriteHeader(http.StatusInternalServerError)
return return
} }
rw.WriteHeader(200) rw.WriteHeader(http.StatusOK)
}) })
// Removed: toolbox.Toolboxer middleware will provide debug information which seems unnecessary // Removed: toolbox.Toolboxer middleware will provide debug information which seems unnecessary

View File

@ -109,7 +109,7 @@ func (s *SSPI) Verify(req *http.Request, w http.ResponseWriter, store DataStore,
store.GetData()["EnableOpenIDSignIn"] = setting.Service.EnableOpenIDSignIn store.GetData()["EnableOpenIDSignIn"] = setting.Service.EnableOpenIDSignIn
store.GetData()["EnableSSPI"] = true store.GetData()["EnableSSPI"] = true
err := s.rnd.HTML(w, 401, string(tplSignIn), templates.BaseVars().Merge(store.GetData())) err := s.rnd.HTML(w, http.StatusUnauthorized, string(tplSignIn), templates.BaseVars().Merge(store.GetData()))
if err != nil { if err != nil {
log.Error("%v", err) log.Error("%v", err)
} }

View File

@ -52,7 +52,7 @@ func GetListLockHandler(ctx *context.Context) {
if err != nil { if err != nil {
log.Debug("Could not find repository: %s/%s - %s", rv.User, rv.Repo, err) log.Debug("Could not find repository: %s/%s - %s", rv.User, rv.Repo, err)
ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs") ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs")
ctx.JSON(401, api.LFSLockError{ ctx.JSON(http.StatusUnauthorized, api.LFSLockError{
Message: "You must have pull access to list locks", Message: "You must have pull access to list locks",
}) })
return return
@ -139,7 +139,7 @@ func PostLockHandler(ctx *context.Context) {
if err != nil { if err != nil {
log.Error("Unable to get repository: %s/%s Error: %v", userName, repoName, err) log.Error("Unable to get repository: %s/%s Error: %v", userName, repoName, err)
ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs") ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs")
ctx.JSON(401, api.LFSLockError{ ctx.JSON(http.StatusUnauthorized, api.LFSLockError{
Message: "You must have push access to create locks", Message: "You must have push access to create locks",
}) })
return return
@ -164,7 +164,7 @@ func PostLockHandler(ctx *context.Context) {
dec := json.NewDecoder(bodyReader) dec := json.NewDecoder(bodyReader)
if err := dec.Decode(&req); err != nil { if err := dec.Decode(&req); err != nil {
log.Warn("Failed to decode lock request as json. Error: %v", err) log.Warn("Failed to decode lock request as json. Error: %v", err)
writeStatus(ctx, 400) writeStatus(ctx, http.StatusBadRequest)
return return
} }
@ -206,7 +206,7 @@ func VerifyLockHandler(ctx *context.Context) {
if err != nil { if err != nil {
log.Error("Unable to get repository: %s/%s Error: %v", userName, repoName, err) log.Error("Unable to get repository: %s/%s Error: %v", userName, repoName, err)
ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs") ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs")
ctx.JSON(401, api.LFSLockError{ ctx.JSON(http.StatusUnauthorized, api.LFSLockError{
Message: "You must have push access to verify locks", Message: "You must have push access to verify locks",
}) })
return return
@ -272,7 +272,7 @@ func UnLockHandler(ctx *context.Context) {
if err != nil { if err != nil {
log.Error("Unable to get repository: %s/%s Error: %v", userName, repoName, err) log.Error("Unable to get repository: %s/%s Error: %v", userName, repoName, err)
ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs") ctx.Resp.Header().Set("WWW-Authenticate", "Basic realm=gitea-lfs")
ctx.JSON(401, api.LFSLockError{ ctx.JSON(http.StatusUnauthorized, api.LFSLockError{
Message: "You must have push access to delete locks", Message: "You must have push access to delete locks",
}) })
return return
@ -297,7 +297,7 @@ func UnLockHandler(ctx *context.Context) {
dec := json.NewDecoder(bodyReader) dec := json.NewDecoder(bodyReader)
if err := dec.Decode(&req); err != nil { if err := dec.Decode(&req); err != nil {
log.Warn("Failed to decode lock request as json. Error: %v", err) log.Warn("Failed to decode lock request as json. Error: %v", err)
writeStatus(ctx, 400) writeStatus(ctx, http.StatusBadRequest)
return return
} }

View File

@ -25,7 +25,7 @@ func TestGiteaDownloadRepo(t *testing.T) {
} }
resp, err := http.Get("https://gitea.com/gitea") resp, err := http.Get("https://gitea.com/gitea")
if err != nil || resp.StatusCode != 200 { if err != nil || resp.StatusCode != http.StatusOK {
t.Skipf("Can't reach https://gitea.com, skipping %s", t.Name()) t.Skipf("Can't reach https://gitea.com, skipping %s", t.Name())
} }

View File

@ -91,7 +91,7 @@ func NewGitlabDownloader(ctx context.Context, baseURL, repoPath, username, passw
u, _ := url.Parse(baseURL) u, _ := url.Parse(baseURL)
for len(pathParts) >= 2 { for len(pathParts) >= 2 {
_, resp, err = gitlabClient.Version.GetVersion() _, resp, err = gitlabClient.Version.GetVersion()
if err == nil || resp != nil && resp.StatusCode == 401 { if err == nil || resp != nil && resp.StatusCode == http.StatusUnauthorized {
err = nil // if no authentication given, this still should work err = nil // if no authentication given, this still should work
break break
} }
@ -619,7 +619,7 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque
func (g *GitlabDownloader) GetReviews(reviewable base.Reviewable) ([]*base.Review, error) { func (g *GitlabDownloader) GetReviews(reviewable base.Reviewable) ([]*base.Review, error) {
approvals, resp, err := g.client.MergeRequestApprovals.GetConfiguration(g.repoID, int(reviewable.GetForeignIndex()), gitlab.WithContext(g.ctx)) approvals, resp, err := g.client.MergeRequestApprovals.GetConfiguration(g.repoID, int(reviewable.GetForeignIndex()), gitlab.WithContext(g.ctx))
if err != nil { if err != nil {
if resp != nil && resp.StatusCode == 404 { if resp != nil && resp.StatusCode == http.StatusNotFound {
log.Error(fmt.Sprintf("GitlabDownloader: while migrating a error occurred: '%s'", err.Error())) log.Error(fmt.Sprintf("GitlabDownloader: while migrating a error occurred: '%s'", err.Error()))
return []*base.Review{}, nil return []*base.Review{}, nil
} }

View File

@ -28,7 +28,7 @@ func TestGitlabDownloadRepo(t *testing.T) {
} }
resp, err := http.Get("https://gitlab.com/gitea/test_repo") resp, err := http.Get("https://gitlab.com/gitea/test_repo")
if err != nil || resp.StatusCode != 200 { if err != nil || resp.StatusCode != http.StatusOK {
t.Skipf("Can't access test repo, skipping %s", t.Name()) t.Skipf("Can't access test repo, skipping %s", t.Name())
} }

View File

@ -19,7 +19,7 @@ import (
func TestOneDevDownloadRepo(t *testing.T) { func TestOneDevDownloadRepo(t *testing.T) {
resp, err := http.Get("https://code.onedev.io/projects/go-gitea-test_repo") resp, err := http.Get("https://code.onedev.io/projects/go-gitea-test_repo")
if err != nil || resp.StatusCode != 200 { if err != nil || resp.StatusCode != http.StatusOK {
t.Skipf("Can't access test repo, skipping %s", t.Name()) t.Skipf("Can't access test repo, skipping %s", t.Name())
} }

View File

@ -1474,7 +1474,7 @@
"204": { "204": {
"description": "user is a member" "description": "user is a member"
}, },
"302": { "303": {
"description": "redirection to /orgs/{org}/public_members/{username}" "description": "redirection to /orgs/{org}/public_members/{username}"
}, },
"404": { "404": {