1
0
mirror of https://github.com/square/okhttp.git synced 2025-08-07 12:42:57 +03:00

Quick Android Test Fixes (#6428)

This commit is contained in:
Yuri Schimke
2020-11-21 09:50:01 +00:00
committed by GitHub
parent 981a2099c9
commit ec1d18d143
8 changed files with 35 additions and 9 deletions

View File

@@ -284,6 +284,7 @@ open class PlatformRule @JvmOverloads constructor(
} }
fun assumeJdkVersion(majorVersion: Int) { fun assumeJdkVersion(majorVersion: Int) {
assumeNotAndroid()
assumeTrue(PlatformVersion.majorVersion == majorVersion) assumeTrue(PlatformVersion.majorVersion == majorVersion)
} }

View File

@@ -17,6 +17,7 @@ dependencies {
compileOnly deps.animalSniffer compileOnly deps.animalSniffer
testImplementation project(':okhttp-testing-support') testImplementation project(':okhttp-testing-support')
testImplementation project(':mockwebserver-junit5')
testImplementation deps.junit testImplementation deps.junit
testImplementation deps.assertj testImplementation deps.assertj
} }

View File

@@ -76,7 +76,7 @@ dependencies {
testImplementation project(':okhttp-urlconnection') testImplementation project(':okhttp-urlconnection')
testImplementation project(':mockwebserver') testImplementation project(':mockwebserver')
testImplementation project(':mockwebserver-junit4') testImplementation project(':mockwebserver-junit4')
testRuntimeOnly project(':mockwebserver-junit5') testImplementation project(':mockwebserver-junit5')
testImplementation project(':mockwebserver-deprecated') testImplementation project(':mockwebserver-deprecated')
testImplementation project(':okhttp-logging-interceptor') testImplementation project(':okhttp-logging-interceptor')
testImplementation project(':okhttp-brotli') testImplementation project(':okhttp-brotli')

View File

@@ -21,6 +21,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import okhttp3.UrlComponentEncodingTester.Component; import okhttp3.UrlComponentEncodingTester.Component;
import okhttp3.UrlComponentEncodingTester.Encoding; import okhttp3.UrlComponentEncodingTester.Encoding;
import okhttp3.testing.PlatformRule;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -33,6 +34,8 @@ import static org.junit.jupiter.api.Assertions.fail;
@RunWith(Parameterized.class) @RunWith(Parameterized.class)
public final class HttpUrlTest { public final class HttpUrlTest {
public final PlatformRule platform = new PlatformRule();
@Parameterized.Parameters(name = "Use get = {0}") @Parameterized.Parameters(name = "Use get = {0}")
public static Collection<Object[]> parameters() { public static Collection<Object[]> parameters() {
return asList( return asList(
@@ -1511,6 +1514,9 @@ public final class HttpUrlTest {
} }
@Test public void fromJavaNetUrlUnsupportedScheme() throws Exception { @Test public void fromJavaNetUrlUnsupportedScheme() throws Exception {
// java.net.MalformedURLException: unknown protocol: mailto
platform.assumeNotAndroid();
URL javaNetUrl = new URL("mailto:user@example.com"); URL javaNetUrl = new URL("mailto:user@example.com");
assertThat(HttpUrl.get(javaNetUrl)).isNull(); assertThat(HttpUrl.get(javaNetUrl)).isNull();
} }

View File

@@ -18,6 +18,7 @@ package okhttp3;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Collection; import java.util.Collection;
import okhttp3.internal.platform.Platform;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; import org.junit.runners.Parameterized;
@@ -184,8 +185,13 @@ public class MediaTypeTest {
@Test public void testCharsetNameIsDoubleQuotedAndSingleQuoted() throws Exception { @Test public void testCharsetNameIsDoubleQuotedAndSingleQuoted() throws Exception {
MediaType mediaType = parse("text/plain;charset=\"'utf-8'\""); MediaType mediaType = parse("text/plain;charset=\"'utf-8'\"");
if (Platform.Companion.isAndroid()) {
// Charset.forName("'utf-8'") == UTF-8
assertThat(mediaType.charset().name()).isEqualTo("UTF-8");
} else {
assertThat(mediaType.charset()).isNull(); assertThat(mediaType.charset()).isNull();
} }
}
@Test public void testCharsetNameIsDoubleQuotedSingleQuote() throws Exception { @Test public void testCharsetNameIsDoubleQuotedSingleQuote() throws Exception {
MediaType mediaType = parse("text/plain;charset=\"'\""); MediaType mediaType = parse("text/plain;charset=\"'\"");

View File

@@ -41,6 +41,7 @@ import okhttp3.Protocol;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Route; import okhttp3.Route;
import okhttp3.internal.http.RecordingProxySelector; import okhttp3.internal.http.RecordingProxySelector;
import okhttp3.internal.platform.Platform;
import okhttp3.testing.PlatformRule; import okhttp3.testing.PlatformRule;
import okhttp3.testing.PlatformVersion; import okhttp3.testing.PlatformVersion;
import okhttp3.tls.HandshakeCertificates; import okhttp3.tls.HandshakeCertificates;
@@ -470,10 +471,13 @@ public final class RouteSelectorTest {
@Test public void routeToString() throws Exception { @Test public void routeToString() throws Exception {
Route route = new Route(httpAddress(), Proxy.NO_PROXY, Route route = new Route(httpAddress(), Proxy.NO_PROXY,
InetSocketAddress.createUnresolved("host", 1234)); InetSocketAddress.createUnresolved("host", 1234));
assertThat(route.toString()).isEqualTo( String expected;
PlatformVersion.INSTANCE.getMajorVersion() >= 14 if (Platform.Companion.isAndroid() || PlatformVersion.INSTANCE.getMajorVersion() < 14) {
? "Route{host/<unresolved>:1234}" expected = "Route{host:1234}";
: "Route{host:1234}"); } else {
expected = "Route{host/<unresolved>:1234}";
}
assertThat(route.toString()).isEqualTo(expected);
} }
private void assertRoute(Route route, Address address, Proxy proxy, InetAddress socketAddress, private void assertRoute(Route route, Address address, Proxy proxy, InetAddress socketAddress,

View File

@@ -34,6 +34,7 @@ import javax.net.ssl.X509TrustManager;
import javax.security.auth.x500.X500Principal; import javax.security.auth.x500.X500Principal;
import mockwebserver3.MockResponse; import mockwebserver3.MockResponse;
import mockwebserver3.MockWebServer; import mockwebserver3.MockWebServer;
import mockwebserver3.junit5.internal.MockWebServerExtension;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.OkHttpClientTestRule; import okhttp3.OkHttpClientTestRule;
@@ -47,6 +48,7 @@ import okhttp3.tls.HandshakeCertificates;
import okhttp3.tls.HeldCertificate; import okhttp3.tls.HeldCertificate;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.api.extension.RegisterExtension;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
@@ -56,6 +58,7 @@ import static okhttp3.tls.internal.TlsUtil.newTrustManager;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.fail; import static org.junit.jupiter.api.Assertions.fail;
@ExtendWith(MockWebServerExtension.class)
public final class ClientAuthTest { public final class ClientAuthTest {
@RegisterExtension public final PlatformRule platform = new PlatformRule(); @RegisterExtension public final PlatformRule platform = new PlatformRule();
@RegisterExtension public final OkHttpClientTestRule clientTestRule = new OkHttpClientTestRule(); @RegisterExtension public final OkHttpClientTestRule clientTestRule = new OkHttpClientTestRule();

View File

@@ -30,6 +30,7 @@ import javax.security.auth.x500.X500Principal;
import okhttp3.FakeSSLSession; import okhttp3.FakeSSLSession;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.internal.Util; import okhttp3.internal.Util;
import okhttp3.internal.platform.Platform;
import okhttp3.testing.PlatformRule; import okhttp3.testing.PlatformRule;
import okhttp3.tls.HeldCertificate; import okhttp3.tls.HeldCertificate;
import okhttp3.tls.internal.TlsUtil; import okhttp3.tls.internal.TlsUtil;
@@ -189,7 +190,7 @@ public final class HostnameVerifierTest {
+ "-----END CERTIFICATE-----\n"); + "-----END CERTIFICATE-----\n");
X509Certificate peerCertificate = ((X509Certificate) session.getPeerCertificates()[0]); X509Certificate peerCertificate = ((X509Certificate) session.getPeerCertificates()[0]);
if (platform.isConscrypt()) { if (Platform.Companion.isAndroid() || platform.isConscrypt()) {
assertThat(certificateSANs(peerCertificate)).containsExactly("bar.com"); assertThat(certificateSANs(peerCertificate)).containsExactly("bar.com");
} else { } else {
assertThat(certificateSANs(peerCertificate)).containsExactly("bar.com", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.co.jp"); assertThat(certificateSANs(peerCertificate)).containsExactly("bar.com", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.co.jp");
@@ -382,7 +383,7 @@ public final class HostnameVerifierTest {
+ "-----END CERTIFICATE-----\n"); + "-----END CERTIFICATE-----\n");
X509Certificate peerCertificate = ((X509Certificate) session.getPeerCertificates()[0]); X509Certificate peerCertificate = ((X509Certificate) session.getPeerCertificates()[0]);
if (platform.isConscrypt()) { if (Platform.Companion.isAndroid() || platform.isConscrypt()) {
assertThat(certificateSANs(peerCertificate)).containsExactly("*.bar.com"); assertThat(certificateSANs(peerCertificate)).containsExactly("*.bar.com");
} else { } else {
assertThat(certificateSANs(peerCertificate)).containsExactly("*.bar.com", "*.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.co.jp"); assertThat(certificateSANs(peerCertificate)).containsExactly("*.bar.com", "*.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.co.jp");
@@ -660,7 +661,11 @@ public final class HostnameVerifierTest {
+ "-----END CERTIFICATE-----\n"); + "-----END CERTIFICATE-----\n");
X509Certificate peerCertificate = ((X509Certificate) session.getPeerCertificates()[0]); X509Certificate peerCertificate = ((X509Certificate) session.getPeerCertificates()[0]);
if (Platform.Companion.isAndroid()) {
assertThat(certificateSANs(peerCertificate)).containsExactly();
} else {
assertThat(certificateSANs(peerCertificate)).containsExactly("<EFBFBD><EFBFBD><EFBFBD>.com", "<EFBFBD><EFBFBD><EFBFBD>.com"); assertThat(certificateSANs(peerCertificate)).containsExactly("<EFBFBD><EFBFBD><EFBFBD>.com", "<EFBFBD><EFBFBD><EFBFBD>.com");
}
assertThat(verifier.verify("tel.com", session)).isFalse(); assertThat(verifier.verify("tel.com", session)).isFalse();
assertThat(verifier.verify("k.com", session)).isFalse(); assertThat(verifier.verify("k.com", session)).isFalse();