gitea源码

base_test.go 1.2KB

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