53b4f60da1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
28 lines
1.1 KiB
Swift
28 lines
1.1 KiB
Swift
import Foundation
|
|
|
|
@main
|
|
enum SafeWebURLTests {
|
|
static func main() {
|
|
// Accepted: plain http/https URLs
|
|
precondition(safeWebURL("https://example.com") != nil)
|
|
precondition(safeWebURL("http://example.com/a?b=1") != nil)
|
|
precondition(safeWebURL("HTTPS://EXAMPLE.COM") != nil)
|
|
precondition(safeWebURL(" https://example.com \n") != nil)
|
|
precondition(safeWebURL("http://localhost:5678") != nil)
|
|
|
|
// Rejected: nil, empty, non-web schemes, malformed
|
|
precondition(safeWebURL(nil) == nil)
|
|
precondition(safeWebURL("") == nil)
|
|
precondition(safeWebURL("file:///etc/hosts") == nil)
|
|
precondition(safeWebURL("javascript:alert(1)") == nil)
|
|
precondition(safeWebURL("vscode://file/etc/hosts") == nil)
|
|
precondition(safeWebURL("smb://server/share") == nil)
|
|
precondition(safeWebURL("mailto:a@b.c") == nil)
|
|
precondition(safeWebURL("https://") == nil)
|
|
precondition(safeWebURL("https:example.com") == nil)
|
|
precondition(safeWebURL("//example.com") == nil)
|
|
|
|
print("Safe web links: 15 cases passed")
|
|
}
|
|
}
|