Skip to content

Commit ee9ebba

Browse files
authoredJan 30, 2024
Tests for canonicalization (#8224)
1 parent 95d3adb commit ee9ebba

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
 

‎okhttp/src/test/java/okhttp3/internal/HostnamesTest.kt

+60
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,26 @@ class HostnamesTest {
5555
assertThat(canonicalizeInetAddress(addressBIpv6)).isEqualTo(addressBIpv4)
5656
}
5757

58+
@Test
59+
fun canonicalizeInetAddressIPv6RepresentationOfCompatibleIPV4() {
60+
val addressAIpv6 = decodeIpv6("::192.168.0.1")!!
61+
assertThat(canonicalizeInetAddress(addressAIpv6)).isEqualTo(
62+
ByteArray(12) +
63+
byteArrayOf(
64+
192.toByte(),
65+
168.toByte(),
66+
0,
67+
1,
68+
),
69+
)
70+
}
71+
72+
@Test
73+
fun canonicalizeInetAddressIPv6RepresentationOfMappedIPV4() {
74+
val addressAIpv6 = decodeIpv6("::FFFF:192.168.0.1")!!
75+
assertThat(canonicalizeInetAddress(addressAIpv6)).isEqualTo(byteArrayOf(192.toByte(), 168.toByte(), 0, 1))
76+
}
77+
5878
@Test
5979
fun inet4AddressToAscii() {
6080
assertThat(
@@ -95,4 +115,44 @@ class HostnamesTest {
95115
}
96116

97117
private fun decodeIpv6(input: String): ByteArray? = decodeIpv6(input, 0, input.length)
118+
119+
@Test
120+
fun testToCanonicalHost() {
121+
// IPv4
122+
assertThat("127.0.0.1".toCanonicalHost()).isEqualTo("127.0.0.1")
123+
assertThat("1.2.3.4".toCanonicalHost()).isEqualTo("1.2.3.4")
124+
125+
// IPv6
126+
assertThat("::1".toCanonicalHost()).isEqualTo("::1")
127+
assertThat("2001:db8::1".toCanonicalHost()).isEqualTo("2001:db8::1")
128+
assertThat("::ffff:192.168.0.1".toCanonicalHost()).isEqualTo("192.168.0.1")
129+
assertThat(
130+
"FEDC:BA98:7654:3210:FEDC:BA98:7654:3210".toCanonicalHost(),
131+
).isEqualTo(
132+
"fedc:ba98:7654:3210:fedc:ba98:7654:3210",
133+
)
134+
135+
assertThat(
136+
"1080:0:0:0:8:800:200C:417A".toCanonicalHost(),
137+
).isEqualTo("1080::8:800:200c:417a")
138+
139+
assertThat("1080::8:800:200C:417A".toCanonicalHost()).isEqualTo("1080::8:800:200c:417a")
140+
assertThat("FF01::101".toCanonicalHost()).isEqualTo("ff01::101")
141+
assertThat(
142+
"0:0:0:0:0:FFFF:129.144.52.38".toCanonicalHost(),
143+
).isEqualTo("129.144.52.38")
144+
145+
assertThat("::FFFF:129.144.52.38".toCanonicalHost()).isEqualTo("129.144.52.38")
146+
147+
// Hostnames
148+
assertThat("WwW.GoOgLe.cOm".toCanonicalHost()).isEqualTo("www.google.com")
149+
assertThat("localhost".toCanonicalHost()).isEqualTo("localhost")
150+
assertThat("☃.net".toCanonicalHost()).isEqualTo("xn--n3h.net")
151+
152+
// IPv4 Compatible or Mapped addresses
153+
assertThat("::192.168.0.1".toCanonicalHost()).isEqualTo("::c0a8:1")
154+
assertThat("::FFFF:192.168.0.1".toCanonicalHost()).isEqualTo("192.168.0.1")
155+
assertThat("0:0:0:0:0:0:13.1.68.3".toCanonicalHost()).isEqualTo("::d01:4403")
156+
assertThat("::13.1.68.3".toCanonicalHost()).isEqualTo("::d01:4403")
157+
}
98158
}

0 commit comments

Comments
 (0)
Please sign in to comment.