gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "bytes"
  6. "io"
  7. "net/http"
  8. "strings"
  9. "testing"
  10. "code.gitea.io/gitea/modules/markup"
  11. "code.gitea.io/gitea/modules/markup/external"
  12. "code.gitea.io/gitea/modules/setting"
  13. "code.gitea.io/gitea/tests"
  14. "github.com/stretchr/testify/assert"
  15. )
  16. func TestExternalMarkupRenderer(t *testing.T) {
  17. defer tests.PrepareTestEnv(t)()
  18. if !setting.Database.Type.IsSQLite3() {
  19. t.Skip()
  20. return
  21. }
  22. req := NewRequest(t, "GET", "/user30/renderer/src/branch/master/README.html")
  23. resp := MakeRequest(t, req, http.StatusOK)
  24. assert.Equal(t, "text/html; charset=utf-8", resp.Header().Get("Content-Type"))
  25. bs, err := io.ReadAll(resp.Body)
  26. assert.NoError(t, err)
  27. doc := NewHTMLParser(t, bytes.NewBuffer(bs))
  28. div := doc.Find("div.file-view")
  29. data, err := div.Html()
  30. assert.NoError(t, err)
  31. assert.Equal(t, "<div>\n\ttest external renderer\n</div>", strings.TrimSpace(data))
  32. r := markup.GetRendererByFileName("a.html").(*external.Renderer)
  33. r.RenderContentMode = setting.RenderContentModeIframe
  34. req = NewRequest(t, "GET", "/user30/renderer/src/branch/master/README.html")
  35. resp = MakeRequest(t, req, http.StatusOK)
  36. assert.Equal(t, "text/html; charset=utf-8", resp.Header().Get("Content-Type"))
  37. bs, err = io.ReadAll(resp.Body)
  38. assert.NoError(t, err)
  39. doc = NewHTMLParser(t, bytes.NewBuffer(bs))
  40. iframe := doc.Find("iframe")
  41. assert.Equal(t, "/user30/renderer/render/branch/master/README.html", iframe.AttrOr("src", ""))
  42. req = NewRequest(t, "GET", "/user30/renderer/render/branch/master/README.html")
  43. resp = MakeRequest(t, req, http.StatusOK)
  44. assert.Equal(t, "text/html; charset=utf-8", resp.Header().Get("Content-Type"))
  45. bs, err = io.ReadAll(resp.Body)
  46. assert.NoError(t, err)
  47. assert.Equal(t, "frame-src 'self'; sandbox allow-scripts", resp.Header().Get("Content-Security-Policy"))
  48. assert.Equal(t, "<div>\n\ttest external renderer\n</div>\n", string(bs))
  49. }