aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-13 14:50:48 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-13 14:56:28 +0200
commit4277dac07db06f24ba30a75b4c1dec542e32dae8 (patch)
treebcad7ace156eecf64fd8d0fb03a4b091bac2f845 /tests
parentefdf90959f78d1582da312bffbefaabb79f264b7 (diff)
downloadmarkdown-rs-4277dac07db06f24ba30a75b4c1dec542e32dae8.tar.gz
markdown-rs-4277dac07db06f24ba30a75b4c1dec542e32dae8.tar.bz2
markdown-rs-4277dac07db06f24ba30a75b4c1dec542e32dae8.zip
Add support for sanitizing urls
* Add support for properly encoding characters in urls * Add support for sanitizing potentially dangerous urls * Add safe defaults, optionally live dangerously
Diffstat (limited to 'tests')
-rw-r--r--tests/autolink.rs63
-rw-r--r--tests/html_flow.rs1
2 files changed, 39 insertions, 25 deletions
diff --git a/tests/autolink.rs b/tests/autolink.rs
index fc49dcb..9d394d7 100644
--- a/tests/autolink.rs
+++ b/tests/autolink.rs
@@ -1,5 +1,10 @@
extern crate micromark;
-use micromark::micromark;
+use micromark::{micromark, micromark_with_options, CompileOptions};
+
+const DANGER: &CompileOptions = &CompileOptions {
+ allow_dangerous_html: true,
+ allow_dangerous_protocol: true,
+};
#[test]
fn autolink() {
@@ -33,19 +38,29 @@ fn autolink() {
"should support protocol autolinks in uppercase"
);
- // To do: safety.
- // assert_eq!(
- // micromark("<a+b+c:d>", {allowDangerousProtocol: true}),
- // "<p><a href=\"a+b+c:d\">a+b+c:d</a></p>",
- // "should support protocol autolinks w/ incorrect URIs (1)"
- // );
+ assert_eq!(
+ micromark("<a+b+c:d>"),
+ "<p><a href=\"\">a+b+c:d</a></p>",
+ "should support protocol autolinks w/ incorrect URIs (1, default)"
+ );
- // To do: safety.
- // assert_eq!(
- // micromark("<made-up-scheme://foo,bar>", {allowDangerousProtocol: true}),
- // "<p><a href=\"made-up-scheme://foo,bar\">made-up-scheme://foo,bar</a></p>",
- // "should support protocol autolinks w/ incorrect URIs (2)"
- // );
+ assert_eq!(
+ micromark_with_options("<a+b+c:d>", DANGER),
+ "<p><a href=\"a+b+c:d\">a+b+c:d</a></p>",
+ "should support protocol autolinks w/ incorrect URIs (1, danger)"
+ );
+
+ assert_eq!(
+ micromark("<made-up-scheme://foo,bar>"),
+ "<p><a href=\"\">made-up-scheme://foo,bar</a></p>",
+ "should support protocol autolinks w/ incorrect URIs (2, default)"
+ );
+
+ assert_eq!(
+ micromark_with_options("<made-up-scheme://foo,bar>", DANGER),
+ "<p><a href=\"made-up-scheme://foo,bar\">made-up-scheme://foo,bar</a></p>",
+ "should support protocol autolinks w/ incorrect URIs (2, danger)"
+ );
assert_eq!(
micromark("<http://../>"),
@@ -53,12 +68,11 @@ fn autolink() {
"should support protocol autolinks w/ incorrect URIs (3)"
);
- // To do: safety.
- // assert_eq!(
- // micromark("<localhost:5001/foo>", {allowDangerousProtocol: true}),
- // "<p><a href=\"localhost:5001/foo\">localhost:5001/foo</a></p>",
- // "should support protocol autolinks w/ incorrect URIs (4)"
- // );
+ assert_eq!(
+ micromark_with_options("<localhost:5001/foo>", DANGER),
+ "<p><a href=\"localhost:5001/foo\">localhost:5001/foo</a></p>",
+ "should support protocol autolinks w/ incorrect URIs (4)"
+ );
assert_eq!(
micromark("<http://foo.bar/baz bim>"),
@@ -66,12 +80,11 @@ fn autolink() {
"should not support protocol autolinks w/ spaces"
);
- // To do: encode urls.
- // assert_eq!(
- // micromark("<http://example.com/\\[\\>"),
- // "<p><a href=\"http://example.com/%5C%5B%5C\">http://example.com/\\[\\</a></p>",
- // "should not support character escapes in protocol autolinks"
- // );
+ assert_eq!(
+ micromark("<http://example.com/\\[\\>"),
+ "<p><a href=\"http://example.com/%5C%5B%5C\">http://example.com/\\[\\</a></p>",
+ "should not support character escapes in protocol autolinks"
+ );
assert_eq!(
micromark("<foo@bar.example.com>"),
diff --git a/tests/html_flow.rs b/tests/html_flow.rs
index 7969487..6445af3 100644
--- a/tests/html_flow.rs
+++ b/tests/html_flow.rs
@@ -3,6 +3,7 @@ use micromark::{micromark, micromark_with_options, CompileOptions};
const DANGER: &CompileOptions = &CompileOptions {
allow_dangerous_html: true,
+ allow_dangerous_protocol: false,
};
#[test]