diff options
| author | Christian Cleberg <[email protected]> | 2026-03-18 20:23:58 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-03-18 20:23:58 -0500 |
| commit | c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9 (patch) | |
| tree | 28bf13b89e36774720d015a26a8979b567ad0be9 /HutchTests/ReadmeViewTests.swift | |
| parent | 1745311950fd68ad81957b3ba64f8566cd86ce19 (diff) | |
| parent | 4dd920558a1c7174c0e9a5b872325df36e363516 (diff) | |
| download | hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.tar.gz hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.tar.bz2 hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.zip | |
v1.2: Merge branch 'dev'
Diffstat (limited to 'HutchTests/ReadmeViewTests.swift')
| -rw-r--r-- | HutchTests/ReadmeViewTests.swift | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/HutchTests/ReadmeViewTests.swift b/HutchTests/ReadmeViewTests.swift new file mode 100644 index 0000000..9c3c019 --- /dev/null +++ b/HutchTests/ReadmeViewTests.swift @@ -0,0 +1,29 @@ +import Foundation +import Testing +@testable import Hutch + +struct ReadmeViewTests { + + @Test + func sanitizedReadmeLinkURLStringRejectsUnexpectedSchemes() { + #expect(sanitizedReadmeLinkURLString("javascript:alert(1)") == nil) + #expect(sanitizedReadmeLinkURLString("file:///tmp/readme") == nil) + #expect(sanitizedReadmeLinkURLString("data:text/html;base64,SGVsbG8=") == nil) + } + + @Test + func processInlineDropsUnsafeMarkdownLinks() { + let rendered = processInline("[click me](javascript:alert)") + + #expect(rendered == "click me") + #expect(!rendered.contains("href=")) + #expect(!rendered.contains("javascript:")) + } + + @Test + func sanitizedReadmeLinkURLStringAllowsExpectedDestinations() { + #expect(sanitizedReadmeLinkURLString("https://example.com/docs?q=1") == "https://example.com/docs?q=1") + #expect(sanitizedReadmeLinkURLString("mailto:[email protected]") == "mailto:[email protected]") + #expect(sanitizedReadmeLinkURLString("#readme") == "#readme") + } +} |
