11package io.sentry.util
22
3- import java.net.URL
43import kotlin.test.Test
54import kotlin.test.assertEquals
65import kotlin.test.assertNull
@@ -12,32 +11,6 @@ class UrlUtilsTest {
1211 assertNull(UrlUtils .parseNullable(null ))
1312 }
1413
15- @Test
16- fun `i null for null` () {
17- val url = URL (" https://www.example.com/search?q=hello%20world%21" )
18- var uri = url.toURI()
19- }
20-
21- @Test
22- fun `filters auth` () {
23- val urlDetails = UrlUtils .parseNullable(
24- " https://user:password@sentry.io?q=1&s=2&token=secret"
25- )!!
26- assertEquals(" https://[Filtered]:[Filtered]@sentry.io" , urlDetails.url)
27- assertEquals(" q=1&s=2&token=secret" , urlDetails.query)
28- assertNull(urlDetails.fragment)
29- }
30-
31- @Test
32- fun `filters auth with fragment` () {
33- val urlDetails = UrlUtils .parseNullable(
34- " https://user:password@sentry.io?q=1&s=2&token=secret#top"
35- )!!
36- assertEquals(" https://[Filtered]:[Filtered]@sentry.io" , urlDetails.url)
37- assertEquals(" q=1&s=2&token=secret" , urlDetails.query)
38- assertEquals(" top" , urlDetails.fragment)
39- }
40-
4114 @Test
4215 fun `strips user info with user and password from http nullable` () {
4316 val urlDetails = UrlUtils .parseNullable(
@@ -169,7 +142,7 @@ class UrlUtilsTest {
169142 }
170143
171144 @Test
172- fun `splits url without query or fragment and no authority ` () {
145+ fun `splits url without query or fragment and no user info ` () {
173146 val urlDetails = UrlUtils .parse(
174147 " https://sentry.io"
175148 )
@@ -189,7 +162,6 @@ class UrlUtilsTest {
189162 }
190163
191164 // Fragment is allowed to contain '?' according to RFC 3986
192- // See https://datatracker.ietf.org/doc/html/rfc3986#section-3.5
193165 @Test
194166 fun `extracts details with question mark after fragment` () {
195167 val urlDetails = UrlUtils .parse(
@@ -211,7 +183,27 @@ class UrlUtilsTest {
211183 }
212184
213185 @Test
214- fun `filters empty user info` () {
186+ fun `no details extracted from malformed url due to invalid protocol` () {
187+ val urlDetails = UrlUtils .parse(
188+ " htps://user@sentry.io#fragment?q=1&s=2&token=secret"
189+ )
190+ assertNull(urlDetails.url)
191+ assertNull(urlDetails.query)
192+ assertNull(urlDetails.fragment)
193+ }
194+
195+ @Test
196+ fun `no details extracted from malformed url due to # symbol in fragment` () {
197+ val urlDetails = UrlUtils .parse(
198+ " https://example.com#hello#fragment"
199+ )
200+ assertNull(urlDetails.url)
201+ assertNull(urlDetails.query)
202+ assertNull(urlDetails.fragment)
203+ }
204+
205+ @Test
206+ fun `strips empty user info` () {
215207 val urlDetails = UrlUtils .parse(
216208 " https://@sentry.io?query=a#fragment?q=1&s=2&token=secret"
217209 )
@@ -240,26 +232,6 @@ class UrlUtilsTest {
240232 assertEquals(" fragment?q=1&s=2&token=secret" , urlDetails.fragment)
241233 }
242234
243- @Test
244- fun `no details extracted from malformed url due to # symbol in fragment` () {
245- val urlDetails = UrlUtils .parse(
246- " https://example.com#hello#fragment"
247- )
248- assertNull(urlDetails.url)
249- assertNull(urlDetails.query)
250- assertNull(urlDetails.fragment)
251- }
252-
253- @Test
254- fun `no details extracted from malformed url due to invalid protocol` () {
255- val urlDetails = UrlUtils .parse(
256- " htps://user@sentry.io#fragment?q=1&s=2&token=secret"
257- )
258- assertNull(urlDetails.url)
259- assertNull(urlDetails.query)
260- assertNull(urlDetails.fragment)
261- }
262-
263235 @Test
264236 fun `does not filter email address in path` () {
265237 val urlDetails = UrlUtils .parseNullable(
0 commit comments