1
0

markdown_test.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package markup_test
  2. import (
  3. "bytes"
  4. "strings"
  5. "testing"
  6. "github.com/russross/blackfriday"
  7. "github.com/stretchr/testify/assert"
  8. "gogs.io/gogs/internal/conf"
  9. . "gogs.io/gogs/internal/markup"
  10. )
  11. func Test_IsMarkdownFile(t *testing.T) {
  12. // TODO: Refactor to accept a list of extensions
  13. conf.Markdown.FileExtensions = strings.Split(".md,.markdown,.mdown,.mkd", ",")
  14. tests := []struct {
  15. ext string
  16. expVal bool
  17. }{
  18. {ext: ".md", expVal: true},
  19. {ext: ".markdown", expVal: true},
  20. {ext: ".mdown", expVal: true},
  21. {ext: ".mkd", expVal: true},
  22. {ext: ".org", expVal: false},
  23. {ext: ".rst", expVal: false},
  24. {ext: ".asciidoc", expVal: false},
  25. }
  26. for _, test := range tests {
  27. assert.Equal(t, test.expVal, IsMarkdownFile(test.ext))
  28. }
  29. }
  30. func Test_Markdown(t *testing.T) {
  31. // TODO: Refactor to accept URL
  32. conf.Server.ExternalURL = "http://localhost:3000/"
  33. htmlFlags := 0
  34. htmlFlags |= blackfriday.HTML_SKIP_STYLE
  35. htmlFlags |= blackfriday.HTML_OMIT_CONTENTS
  36. renderer := &MarkdownRenderer{
  37. Renderer: blackfriday.HtmlRenderer(htmlFlags, "", ""),
  38. }
  39. tests := []struct {
  40. input string
  41. expVal string
  42. }{
  43. // Issue URL
  44. {input: "http://localhost:3000/user/repo/issues/3333", expVal: "<a href=\"http://localhost:3000/user/repo/issues/3333\">#3333</a>"},
  45. {input: "http://1111/2222/ssss-issues/3333?param=blah&blahh=333", expVal: "<a href=\"http://1111/2222/ssss-issues/3333?param=blah&amp;blahh=333\">http://1111/2222/ssss-issues/3333?param=blah&amp;blahh=333</a>"},
  46. {input: "http://test.com/issues/33333", expVal: "<a href=\"http://test.com/issues/33333\">http://test.com/issues/33333</a>"},
  47. {input: "http://test.com/issues/3", expVal: "<a href=\"http://test.com/issues/3\">http://test.com/issues/3</a>"},
  48. {input: "http://issues/333", expVal: "<a href=\"http://issues/333\">http://issues/333</a>"},
  49. {input: "https://issues/333", expVal: "<a href=\"https://issues/333\">https://issues/333</a>"},
  50. {input: "http://tissues/0", expVal: "<a href=\"http://tissues/0\">http://tissues/0</a>"},
  51. // Commit URL
  52. {input: "http://localhost:3000/user/project/commit/d8a994ef243349f321568f9e36d5c3f444b99cae", expVal: " <code><a href=\"http://localhost:3000/user/project/commit/d8a994ef243349f321568f9e36d5c3f444b99cae\">d8a994ef24</a></code>"},
  53. {input: "http://localhost:3000/user/project/commit/d8a994ef243349f321568f9e36d5c3f444b99cae#diff-2", expVal: " <code><a href=\"http://localhost:3000/user/project/commit/d8a994ef243349f321568f9e36d5c3f444b99cae#diff-2\">d8a994ef24</a></code>"},
  54. {input: "https://external-link.gogs.io/gogs/gogs/commit/d8a994ef243349f321568f9e36d5c3f444b99cae#diff-2", expVal: "<a href=\"https://external-link.gogs.io/gogs/gogs/commit/d8a994ef243349f321568f9e36d5c3f444b99cae#diff-2\">https://external-link.gogs.io/gogs/gogs/commit/d8a994ef243349f321568f9e36d5c3f444b99cae#diff-2</a>"},
  55. {input: "https://commit/d8a994ef243349f321568f9e36d5c3f444b99cae", expVal: "<a href=\"https://commit/d8a994ef243349f321568f9e36d5c3f444b99cae\">https://commit/d8a994ef243349f321568f9e36d5c3f444b99cae</a>"},
  56. }
  57. for _, test := range tests {
  58. t.Run("", func(t *testing.T) {
  59. buf := new(bytes.Buffer)
  60. renderer.AutoLink(buf, []byte(test.input), blackfriday.LINK_TYPE_NORMAL)
  61. assert.Equal(t, test.expVal, buf.String())
  62. })
  63. }
  64. }