mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
937 B
43 lines
937 B
// Copyright 2017 The Gitea Authors. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
|
|
package test |
|
|
|
import ( |
|
"net/http" |
|
"net/http/httptest" |
|
"strings" |
|
|
|
"code.gitea.io/gitea/modules/json" |
|
) |
|
|
|
// RedirectURL returns the redirect URL of a http response. |
|
// It also works for JSONRedirect: `{"redirect": "..."}` |
|
func RedirectURL(resp http.ResponseWriter) string { |
|
loc := resp.Header().Get("Location") |
|
if loc != "" { |
|
return loc |
|
} |
|
if r, ok := resp.(*httptest.ResponseRecorder); ok { |
|
m := map[string]any{} |
|
err := json.Unmarshal(r.Body.Bytes(), &m) |
|
if err == nil { |
|
if loc, ok := m["redirect"].(string); ok { |
|
return loc |
|
} |
|
} |
|
} |
|
return "" |
|
} |
|
|
|
func IsNormalPageCompleted(s string) bool { |
|
return strings.Contains(s, `<footer class="page-footer"`) && strings.Contains(s, `</html>`) |
|
} |
|
|
|
func MockVariableValue[T any](p *T, v ...T) (reset func()) { |
|
old := *p |
|
if len(v) > 0 { |
|
*p = v[0] |
|
} |
|
return func() { *p = old } |
|
}
|
|
|