@@ -60,57 +60,64 @@ internal class URLExtensionsTest {
6060 )
6161 }
6262 }
63-
6463 @Test
6564 fun `valid http URL should return Valid` () {
66- val uri = URI (" http://coder.com" )
67- val result = uri.validateStrictWebUrl()
65+ val result = " http://coder.com" .validateStrictWebUrl()
6866 assertEquals(WebUrlValidationResult .Valid , result)
6967 }
7068
7169 @Test
7270 fun `valid https URL with path and query should return Valid` () {
73- val uri = URI (" https://coder.com/bin/coder-linux-amd64?query=1" )
74- val result = uri.validateStrictWebUrl()
71+ val result = " https://coder.com/bin/coder-linux-amd64?query=1" .validateStrictWebUrl()
7572 assertEquals(WebUrlValidationResult .Valid , result)
7673 }
7774
7875 @Test
7976 fun `relative URL should return Invalid with appropriate message` () {
80- val uri = URI ( " /bin/coder-linux-amd64" )
81- val result = uri .validateStrictWebUrl()
77+ val url = " /bin/coder-linux-amd64"
78+ val result = url .validateStrictWebUrl()
8279 assertEquals(
83- WebUrlValidationResult .Invalid (" $uri is relative, it must be absolute" ),
80+ WebUrlValidationResult .Invalid (" $url is relative, it must be absolute" ),
8481 result
8582 )
8683 }
8784
8885 @Test
8986 fun `opaque URI like mailto should return Invalid` () {
90- val uri = URI ( " mailto:[email protected] " ) 91- val result = uri .validateStrictWebUrl()
87+ val url = " mailto:[email protected] " 88+ val result = url .validateStrictWebUrl()
9289 assertEquals(
93- WebUrlValidationResult .Invalid (" $uri is opaque, instead of hierarchical" ),
90+ WebUrlValidationResult .Invalid (" $url is opaque, instead of hierarchical" ),
9491 result
9592 )
9693 }
9794
9895 @Test
9996 fun `unsupported scheme like ftp should return Invalid` () {
100- val uri = URI ( " ftp://coder.com" )
101- val result = uri .validateStrictWebUrl()
97+ val url = " ftp://coder.com"
98+ val result = url .validateStrictWebUrl()
10299 assertEquals(
103- WebUrlValidationResult .Invalid (" Scheme for $uri must be either http or https" ),
100+ WebUrlValidationResult .Invalid (" Scheme for $url must be either http or https" ),
104101 result
105102 )
106103 }
107104
108105 @Test
109106 fun `http URL with missing authority should return Invalid` () {
110- val uri = URI (" http:///bin/coder-linux-amd64" )
111- val result = uri.validateStrictWebUrl()
107+ val url = " http:///bin/coder-linux-amd64"
108+ val result = url.validateStrictWebUrl()
109+ assertEquals(
110+ WebUrlValidationResult .Invalid (" $url does not have a hostname" ),
111+ result
112+ )
113+ }
114+
115+ @Test
116+ fun `malformed URI should return Invalid with parsing error message` () {
117+ val url = " http://[invalid-uri]"
118+ val result = url.validateStrictWebUrl()
112119 assertEquals(
113- WebUrlValidationResult .Invalid (" $uri does not have a hostname " ),
120+ WebUrlValidationResult .Invalid (" $url could not be parsed as a URI reference " ),
114121 result
115122 )
116123 }
0 commit comments