Refactor context flash msg and global variables (#33375)
1. add `GetSiteCookieFlashMessage` to help to parse flash message 2. clarify `handleRepoHomeFeed` logic 3. remove unnecessary global variables, use `sync.OnceValue` instead 4. add some tests for `IsUsableUsername` and `IsUsableRepoName`
This commit is contained in:
parent
6a516a0d14
commit
2c1ff8701a
30 changed files with 737 additions and 676 deletions
|
@ -29,6 +29,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/modules/web"
|
||||
"code.gitea.io/gitea/modules/web/middleware"
|
||||
"code.gitea.io/gitea/routers"
|
||||
gitea_context "code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/tests"
|
||||
|
@ -118,12 +119,11 @@ type TestSession struct {
|
|||
jar http.CookieJar
|
||||
}
|
||||
|
||||
func (s *TestSession) GetCookie(name string) *http.Cookie {
|
||||
func (s *TestSession) GetRawCookie(name string) *http.Cookie {
|
||||
baseURL, err := url.Parse(setting.AppURL)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, c := range s.jar.Cookies(baseURL) {
|
||||
if c.Name == name {
|
||||
return c
|
||||
|
@ -132,6 +132,20 @@ func (s *TestSession) GetCookie(name string) *http.Cookie {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *TestSession) GetSiteCookie(name string) string {
|
||||
c := s.GetRawCookie(name)
|
||||
if c != nil {
|
||||
v, _ := url.QueryUnescape(c.Value)
|
||||
return v
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (s *TestSession) GetCookieFlashMessage() *middleware.Flash {
|
||||
cookie := s.GetSiteCookie(gitea_context.CookieNameFlash)
|
||||
return middleware.ParseCookieFlashMessage(cookie)
|
||||
}
|
||||
|
||||
func (s *TestSession) MakeRequest(t testing.TB, rw *RequestWrapper, expectedStatus int) *httptest.ResponseRecorder {
|
||||
t.Helper()
|
||||
req := rw.Request
|
||||
|
@ -458,9 +472,9 @@ func VerifyJSONSchema(t testing.TB, resp *httptest.ResponseRecorder, schemaFile
|
|||
// GetUserCSRFToken returns CSRF token for current user
|
||||
func GetUserCSRFToken(t testing.TB, session *TestSession) string {
|
||||
t.Helper()
|
||||
cookie := session.GetCookie("_csrf")
|
||||
cookie := session.GetSiteCookie("_csrf")
|
||||
require.NotEmpty(t, cookie)
|
||||
return cookie.Value
|
||||
return cookie
|
||||
}
|
||||
|
||||
// GetUserCSRFToken returns CSRF token for anonymous user (not logged in)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue