@@ -60,57 +60,64 @@ internal class URLExtensionsTest {
60
60
)
61
61
}
62
62
}
63
-
64
63
@Test
65
64
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()
68
66
assertEquals(WebUrlValidationResult .Valid , result)
69
67
}
70
68
71
69
@Test
72
70
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()
75
72
assertEquals(WebUrlValidationResult .Valid , result)
76
73
}
77
74
78
75
@Test
79
76
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()
82
79
assertEquals(
83
- WebUrlValidationResult .Invalid (" $uri is relative, it must be absolute" ),
80
+ WebUrlValidationResult .Invalid (" $url is relative, it must be absolute" ),
84
81
result
85
82
)
86
83
}
87
84
88
85
@Test
89
86
fun `opaque URI like mailto should return Invalid` () {
90
- val uri = URI ( " mailto:user@coder.com" )
91
- val result = uri .validateStrictWebUrl()
87
+ val url = " mailto:user@coder.com"
88
+ val result = url .validateStrictWebUrl()
92
89
assertEquals(
93
- WebUrlValidationResult .Invalid (" $uri is opaque, instead of hierarchical" ),
90
+ WebUrlValidationResult .Invalid (" $url is opaque, instead of hierarchical" ),
94
91
result
95
92
)
96
93
}
97
94
98
95
@Test
99
96
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()
102
99
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" ),
104
101
result
105
102
)
106
103
}
107
104
108
105
@Test
109
106
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()
112
119
assertEquals(
113
- WebUrlValidationResult .Invalid (" $uri does not have a hostname " ),
120
+ WebUrlValidationResult .Invalid (" $url could not be parsed as a URI reference " ),
114
121
result
115
122
)
116
123
}
0 commit comments