extern crate micromark; use micromark::micromark; use pretty_assertions::assert_eq; #[test] fn dangerous_protocol_autolink() { assert_eq!( micromark(""), "

javascript:alert(1)

", "should be safe by default" ); assert_eq!( micromark(""), "

http://a

", "should allow `http:`" ); assert_eq!( micromark(""), "

https://a

", "should allow `https:`" ); assert_eq!( micromark(""), "

irc:///help

", "should allow `irc:`" ); assert_eq!( micromark(""), "

mailto:a

", "should allow `mailto:`" ); } #[test] fn dangerous_protocol_image() { assert_eq!( micromark("![](javascript:alert(1))"), "

\"\"

", "should be safe by default" ); assert_eq!( micromark("![](http://a)"), "

\"\"

", "should allow `http:`" ); assert_eq!( micromark("![](https://a)"), "

\"\"

", "should allow `https:`" ); assert_eq!( micromark("![](irc:///help)"), "

\"\"

", "should not allow `irc:`" ); assert_eq!( micromark("![](mailto:a)"), "

\"\"

", "should not allow `mailto:`" ); assert_eq!( micromark("![](#a)"), "

\"\"

", "should allow a hash" ); assert_eq!( micromark("![](?a)"), "

\"\"

", "should allow a search" ); assert_eq!( micromark("![](/a)"), "

\"\"

", "should allow an absolute" ); assert_eq!( micromark("![](./a)"), "

\"\"

", "should allow an relative" ); assert_eq!( micromark("![](../a)"), "

\"\"

", "should allow an upwards relative" ); assert_eq!( micromark("![](a#b:c)"), "

\"\"

", "should allow a colon in a hash" ); assert_eq!( micromark("![](a?b:c)"), "

\"\"

", "should allow a colon in a search" ); assert_eq!( micromark("![](a/b:c)"), "

\"\"

", "should allow a colon in a path" ); } #[test] fn dangerous_protocol_link() { assert_eq!( micromark("[](javascript:alert(1))"), "

", "should be safe by default" ); assert_eq!( micromark("[](http://a)"), "

", "should allow `http:`" ); assert_eq!( micromark("[](https://a)"), "

", "should allow `https:`" ); assert_eq!( micromark("[](irc:///help)"), "

", "should allow `irc:`" ); assert_eq!( micromark("[](mailto:a)"), "

", "should allow `mailto:`" ); assert_eq!( micromark("[](#a)"), "

", "should allow a hash" ); assert_eq!( micromark("[](?a)"), "

", "should allow a search" ); assert_eq!( micromark("[](/a)"), "

", "should allow an absolute" ); assert_eq!( micromark("[](./a)"), "

", "should allow an relative" ); assert_eq!( micromark("[](../a)"), "

", "should allow an upwards relative" ); assert_eq!( micromark("[](a#b:c)"), "

", "should allow a colon in a hash" ); assert_eq!( micromark("[](a?b:c)"), "

", "should allow a colon in a search" ); assert_eq!( micromark("[](a/b:c)"), "

", "should allow a colon in a path" ); }