gitea
Зеркало из https://github.com/go-gitea/gitea
1// Copyright 2024 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package context
5
6import (
7"net/http"
8"net/http/httptest"
9"testing"
10
11"code.gitea.io/gitea/modules/setting"
12
13"github.com/stretchr/testify/assert"
14)
15
16func TestRedirect(t *testing.T) {
17req, _ := http.NewRequest("GET", "/", nil)
18
19cases := []struct {
20url string
21keep bool
22}{
23{"http://test", false},
24{"https://test", false},
25{"//test", false},
26{"/://test", true},
27{"/test", true},
28}
29for _, c := range cases {
30resp := httptest.NewRecorder()
31b, cleanup := NewBaseContext(resp, req)
32resp.Header().Add("Set-Cookie", (&http.Cookie{Name: setting.SessionConfig.CookieName, Value: "dummy"}).String())
33b.Redirect(c.url)
34cleanup()
35has := resp.Header().Get("Set-Cookie") == "i_like_gitea=dummy"
36assert.Equal(t, c.keep, has, "url = %q", c.url)
37}
38
39req, _ = http.NewRequest("GET", "/", nil)
40resp := httptest.NewRecorder()
41req.Header.Add("HX-Request", "true")
42b, cleanup := NewBaseContext(resp, req)
43b.Redirect("/other")
44cleanup()
45assert.Equal(t, "/other", resp.Header().Get("HX-Redirect"))
46assert.Equal(t, http.StatusNoContent, resp.Code)
47}
48