From efdf90959f78d1582da312bffbefaabb79f264b7 Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Mon, 13 Jun 2022 12:37:25 +0200 Subject: Add autolinks --- tests/autolink.rs | 247 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 tests/autolink.rs (limited to 'tests/autolink.rs') diff --git a/tests/autolink.rs b/tests/autolink.rs new file mode 100644 index 0000000..fc49dcb --- /dev/null +++ b/tests/autolink.rs @@ -0,0 +1,247 @@ +extern crate micromark; +use micromark::micromark; + +#[test] +fn autolink() { + assert_eq!( + micromark("```\n<\n >\n```"), + "
<\n >\n
", + "should support fenced code w/ grave accents" + ); + + assert_eq!( + micromark(""), + "

http://foo.bar.baz

", + "should support protocol autolinks (1)" + ); + + assert_eq!( + micromark(""), + "

http://foo.bar.baz/test?q=hello&id=22&boolean

", + "should support protocol autolinks (2)" + ); + + assert_eq!( + micromark(""), + "

irc://foo.bar:2233/baz

", + "should support protocol autolinks w/ non-HTTP schemes" + ); + + assert_eq!( + micromark(""), + "

MAILTO:FOO@BAR.BAZ

", + "should support protocol autolinks in uppercase" + ); + + // To do: safety. + // assert_eq!( + // micromark("", {allowDangerousProtocol: true}), + // "

a+b+c:d

", + // "should support protocol autolinks w/ incorrect URIs (1)" + // ); + + // To do: safety. + // assert_eq!( + // micromark("", {allowDangerousProtocol: true}), + // "

made-up-scheme://foo,bar

", + // "should support protocol autolinks w/ incorrect URIs (2)" + // ); + + assert_eq!( + micromark(""), + "

http://../

", + "should support protocol autolinks w/ incorrect URIs (3)" + ); + + // To do: safety. + // assert_eq!( + // micromark("", {allowDangerousProtocol: true}), + // "

localhost:5001/foo

", + // "should support protocol autolinks w/ incorrect URIs (4)" + // ); + + assert_eq!( + micromark(""), + "

<http://foo.bar/baz bim>

", + "should not support protocol autolinks w/ spaces" + ); + + // To do: encode urls. + // assert_eq!( + // micromark(""), + // "

http://example.com/\\[\\

", + // "should not support character escapes in protocol autolinks" + // ); + + assert_eq!( + micromark(""), + "

foo@bar.example.com

", + "should support email autolinks (1)" + ); + + assert_eq!( + micromark(""), + "

foo+special@Bar.baz-bar0.com

", + "should support email autolinks (2)" + ); + + assert_eq!( + micromark(""), + "

a@b.c

", + "should support email autolinks (3)" + ); + + assert_eq!( + micromark(""), + "

<foo+@bar.example.com>

", + "should not support character escapes in email autolinks" + ); + + assert_eq!( + micromark("<>"), + "

<>

", + "should not support empty autolinks" + ); + + assert_eq!( + micromark("< http://foo.bar >"), + "

< http://foo.bar >

", + "should not support autolinks w/ space" + ); + + assert_eq!( + micromark(""), + "

<m:abc>

", + "should not support autolinks w/ a single character for a scheme" + ); + + assert_eq!( + micromark(""), + "

<foo.bar.baz>

", + "should not support autolinks w/o a colon or at sign" + ); + + assert_eq!( + micromark("http://example.com"), + "

http://example.com

", + "should not support protocol autolinks w/o angle brackets" + ); + + assert_eq!( + micromark("foo@bar.example.com"), + "

foo@bar.example.com

", + "should not support email autolinks w/o angle brackets" + ); + + // Extra: + assert_eq!( + micromark("<*@example.com>"), + "

*@example.com

", + "should support autolinks w/ atext (1)" + ); + assert_eq!( + micromark(""), + "

a*@example.com

", + "should support autolinks w/ atext (2)" + ); + assert_eq!( + micromark(""), + "

aa*@example.com

", + "should support autolinks w/ atext (3)" + ); + + assert_eq!( + micromark(""), + "

<aaa©@example.com>

", + "should support non-atext in email autolinks local part (1)" + ); + assert_eq!( + micromark(""), + "

<a*a©@example.com>

", + "should support non-atext in email autolinks local part (2)" + ); + + assert_eq!( + micromark(""), + "

<asd@.example.com>

", + "should not support a dot after an at sign in email autolinks" + ); + assert_eq!( + micromark(""), + "

<asd@e..xample.com>

", + "should not support a dot after another dot in email autolinks" + ); + + assert_eq!( + micromark( + "" + ), + "

asd@012345678901234567890123456789012345678901234567890123456789012

", + "should support 63 character in email autolinks domains" + ); + + assert_eq!( + micromark(""), + "

<asd@0123456789012345678901234567890123456789012345678901234567890123>

", + "should not support 64 character in email autolinks domains" + ); + + assert_eq!( + micromark( + "" + ), + "

asd@012345678901234567890123456789012345678901234567890123456789012.a

", + "should support a TLD after a 63 character domain in email autolinks" + ); + + assert_eq!( + micromark(""), + "

<asd@0123456789012345678901234567890123456789012345678901234567890123.a>

", + "should not support a TLD after a 64 character domain in email autolinks" + ); + + assert_eq!( + micromark( + "" + ), + "

asd@a.012345678901234567890123456789012345678901234567890123456789012

", + "should support a 63 character TLD in email autolinks" + ); + + assert_eq!( + micromark(""), + "

<asd@a.0123456789012345678901234567890123456789012345678901234567890123>

", + "should not support a 64 character TLD in email autolinks" + ); + + assert_eq!( + micromark(""), + "

<asd@-example.com>

", + "should not support a dash after `@` in email autolinks" + ); + + assert_eq!( + micromark(""), + "

asd@e-xample.com

", + "should support a dash after other domain characters in email autolinks" + ); + + assert_eq!( + micromark(""), + "

asd@e--xample.com

", + "should support a dash after another dash in email autolinks" + ); + + assert_eq!( + micromark(""), + "

<asd@example-.com>

", + "should not support a dash before a dot in email autolinks" + ); + + // To do: extensions. + // assert_eq!( + // micromark("", {extensions: [{disable: {null: ["autolink"]}}]}), + // "

<a@b.co>

", + // "should support turning off autolinks" + // ); +} -- cgit