aboutsummaryrefslogtreecommitdiffstats
path: root/services/context/context_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/context/context_test.go')
-rw-r--r--services/context/context_test.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/services/context/context_test.go b/services/context/context_test.go
index 033ce2ef0a..984593398d 100644
--- a/services/context/context_test.go
+++ b/services/context/context_test.go
@@ -6,9 +6,11 @@ package context
import (
"net/http"
"net/http/httptest"
+ "net/url"
"testing"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/test"
"github.com/stretchr/testify/assert"
)
@@ -22,3 +24,28 @@ func TestRemoveSessionCookieHeader(t *testing.T) {
assert.Len(t, w.Header().Values("Set-Cookie"), 1)
assert.Contains(t, "other=bar", w.Header().Get("Set-Cookie"))
}
+
+func TestRedirectToCurrentSite(t *testing.T) {
+ defer test.MockVariableValue(&setting.AppURL, "http://localhost:3000/sub/")()
+ defer test.MockVariableValue(&setting.AppSubURL, "/sub")()
+ cases := []struct {
+ location string
+ want string
+ }{
+ {"/", "/sub/"},
+ {"http://localhost:3000/sub?k=v", "http://localhost:3000/sub?k=v"},
+ {"http://other", "/sub/"},
+ }
+ for _, c := range cases {
+ t.Run(c.location, func(t *testing.T) {
+ req := &http.Request{URL: &url.URL{Path: "/"}}
+ resp := httptest.NewRecorder()
+ base, baseCleanUp := NewBaseContext(resp, req)
+ defer baseCleanUp()
+ ctx := NewWebContext(base, nil, nil)
+ ctx.RedirectToCurrentSite(c.location)
+ redirect := test.RedirectURL(resp)
+ assert.Equal(t, c.want, redirect)
+ })
+ }
+}