mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
feat: add custom error message on signups disabled page (#11959)
This commit is contained in:
@ -1,10 +1,14 @@
|
||||
package parameter
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
|
||||
"github.com/charmbracelet/glamour"
|
||||
"github.com/charmbracelet/glamour/ansi"
|
||||
gomarkdown "github.com/gomarkdown/markdown"
|
||||
"github.com/gomarkdown/markdown/html"
|
||||
"github.com/gomarkdown/markdown/parser"
|
||||
"golang.org/x/xerrors"
|
||||
)
|
||||
|
||||
@ -95,3 +99,13 @@ func Plaintext(markdown string) (string, error) {
|
||||
|
||||
return strings.TrimSpace(output), nil
|
||||
}
|
||||
|
||||
func HTML(markdown string) string {
|
||||
p := parser.NewWithExtensions(parser.CommonExtensions)
|
||||
doc := p.Parse([]byte(markdown))
|
||||
renderer := html.NewRenderer(html.RendererOptions{
|
||||
Flags: html.CommonFlags | html.SkipHTML,
|
||||
},
|
||||
)
|
||||
return string(bytes.TrimSpace(gomarkdown.Render(doc, renderer)))
|
||||
}
|
@ -47,3 +47,45 @@ __This is bold text.__
|
||||
require.Equal(t, nothingChanges, stripped)
|
||||
})
|
||||
}
|
||||
|
||||
func TestHTML(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
name: "Simple",
|
||||
input: `**Coder** is in *early access* mode. To ~~register~~ request access, fill out [this form](https://internal.example.com). ***Thank you!***`,
|
||||
expected: `<p><strong>Coder</strong> is in <em>early access</em> mode. To <del>register</del> request access, fill out <a href="https://internal.example.com">this form</a>. <strong><em>Thank you!</em></strong></p>`,
|
||||
},
|
||||
{
|
||||
name: "Tricky",
|
||||
input: `**Cod*er** is in *early a**ccess** <img src="foobar">mode`,
|
||||
expected: `<p><strong>Cod*er</strong> is in *early a<strong>ccess</strong> mode</p>`,
|
||||
},
|
||||
{
|
||||
name: "XSS",
|
||||
input: `<p onclick="alert(\"omghax\")">Click here to get access!</p>?`,
|
||||
expected: `<p>Click here to get access!?</p>`,
|
||||
},
|
||||
{
|
||||
name: "No Markdown tags",
|
||||
input: "This is a simple description, so nothing changes.",
|
||||
expected: "<p>This is a simple description, so nothing changes.</p>",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
rendered := parameter.HTML(tt.input)
|
||||
require.Equal(t, tt.expected, rendered)
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user