Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/PkpTest.java

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Rebase & Conflict Resolution Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import android.test.suitebuilder.annotation.SmallTest; 7 import android.test.suitebuilder.annotation.SmallTest;
8 8
9 import org.json.JSONObject;
10
9 import org.chromium.base.test.util.Feature; 11 import org.chromium.base.test.util.Feature;
10 import org.chromium.net.test.util.CertTestUtil; 12 import org.chromium.net.test.util.CertTestUtil;
11 import org.json.JSONObject;
12 13
13 import java.io.ByteArrayInputStream; 14 import java.io.ByteArrayInputStream;
14 import java.security.cert.CertificateFactory; 15 import java.security.cert.CertificateFactory;
15 import java.security.cert.X509Certificate; 16 import java.security.cert.X509Certificate;
16 import java.util.Arrays; 17 import java.util.Arrays;
17 import java.util.Calendar; 18 import java.util.Calendar;
18 import java.util.Date; 19 import java.util.Date;
19 import java.util.HashSet; 20 import java.util.HashSet;
20 import java.util.Set; 21 import java.util.Set;
21 22
22 /** 23 /**
23 * Public-Key-Pinning tests of Cronet Java API. 24 * Public-Key-Pinning tests of Cronet Java API.
24 */ 25 */
25 public class PkpTest extends CronetTestBase { 26 public class PkpTest extends CronetTestBase {
26 private static final String CERT_USED = "quic_test.example.com.crt"; 27 private static final String CERT_USED = "quic_test.example.com.crt";
27 private static final String[] CERTS_USED = {CERT_USED}; 28 private static final String[] CERTS_USED = {CERT_USED};
28 private static final int DISTANT_FUTURE = Integer.MAX_VALUE; 29 private static final int DISTANT_FUTURE = Integer.MAX_VALUE;
29 private static final boolean INCLUDE_SUBDOMAINS = true; 30 private static final boolean INCLUDE_SUBDOMAINS = true;
30 private static final boolean EXCLUDE_SUBDOMAINS = false; 31 private static final boolean EXCLUDE_SUBDOMAINS = false;
31 private static final boolean KNOWN_ROOT = true; 32 private static final boolean KNOWN_ROOT = true;
32 private static final boolean UNKNOWN_ROOT = false; 33 private static final boolean UNKNOWN_ROOT = false;
33 private static final boolean ENABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = true; 34 private static final boolean ENABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = true;
34 private static final boolean DISABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = fals e; 35 private static final boolean DISABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = fals e;
35 36
36 private CronetTestFramework mTestFramework; 37 private CronetTestFramework mTestFramework;
37 private CronetEngine.Builder mBuilder; 38 private ExperimentalCronetEngine.Builder mBuilder;
38 private TestUrlRequestCallback mListener; 39 private TestUrlRequestCallback mListener;
39 private String mServerUrl; // https://test.example.com:6121 40 private String mServerUrl; // https://test.example.com:6121
40 private String mServerHost; // test.example.com 41 private String mServerHost; // test.example.com
41 private String mDomain; // example.com 42 private String mDomain; // example.com
42 43
43 @Override 44 @Override
44 protected void setUp() throws Exception { 45 protected void setUp() throws Exception {
45 super.setUp(); 46 super.setUp();
46 // Start QUIC Test Server 47 // Start QUIC Test Server
47 System.loadLibrary("cronet_tests"); 48 System.loadLibrary("cronet_tests");
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 fail("Did not expect an error but got error code " 381 fail("Did not expect an error but got error code "
381 + mListener.mError.getCronetInternalErrorCode()); 382 + mListener.mError.getCronetInternalErrorCode());
382 } 383 }
383 assertNotNull("Expected non-null response from the server", mListener.mR esponseInfo); 384 assertNotNull("Expected non-null response from the server", mListener.mR esponseInfo);
384 assertEquals(200, mListener.mResponseInfo.getHttpStatusCode()); 385 assertEquals(200, mListener.mResponseInfo.getHttpStatusCode());
385 } 386 }
386 387
387 private void createCronetEngineBuilder(boolean bypassPinningForLocalAnchors, boolean knownRoot) 388 private void createCronetEngineBuilder(boolean bypassPinningForLocalAnchors, boolean knownRoot)
388 throws Exception { 389 throws Exception {
389 // Set common CronetEngine parameters 390 // Set common CronetEngine parameters
390 mBuilder = new CronetEngine.Builder(getContext()); 391 mBuilder = new ExperimentalCronetEngine.Builder(getContext());
391 mBuilder.enablePublicKeyPinningBypassForLocalTrustAnchors(bypassPinningF orLocalAnchors); 392 mBuilder.enablePublicKeyPinningBypassForLocalTrustAnchors(bypassPinningF orLocalAnchors);
392 mBuilder.enableQuic(true); 393 mBuilder.enableQuic(true);
393 mBuilder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getS erverPort(), 394 mBuilder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getS erverPort(),
394 QuicTestServer.getServerPort()); 395 QuicTestServer.getServerPort());
395 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa mple.com"); 396 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa mple.com");
396 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules (); 397 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules ();
397 JSONObject experimentalOptions = new JSONObject() 398 JSONObject experimentalOptions = new JSONObject()
398 .put("QUIC", quicParams) 399 .put("QUIC", quicParams)
399 .put("HostResolverRules", hostR esolverParams); 400 .put("HostResolverRules", hostR esolverParams);
400 mBuilder.setExperimentalOptions(experimentalOptions.toString()); 401 mBuilder.setExperimentalOptions(experimentalOptions.toString());
401 mBuilder.setStoragePath(CronetTestFramework.getTestStorage(getContext()) ); 402 mBuilder.setStoragePath(CronetTestFramework.getTestStorage(getContext()) );
402 mBuilder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP, 1 000 * 1024); 403 mBuilder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP, 1 000 * 1024);
403 mBuilder.setMockCertVerifierForTesting( 404 CronetTestUtil.setMockCertVerifierForTesting(
404 MockCertVerifier.createMockCertVerifier(CERTS_USED, knownRoot)); 405 mBuilder, MockCertVerifier.createMockCertVerifier(CERTS_USED, kn ownRoot));
405 } 406 }
406 407
407 private void startCronetFramework() { 408 private void startCronetFramework() {
408 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder); 409 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder);
409 } 410 }
410 411
411 private void shutdownCronetEngine() { 412 private void shutdownCronetEngine() {
412 if (mTestFramework != null && mTestFramework.mCronetEngine != null) { 413 if (mTestFramework != null && mTestFramework.mCronetEngine != null) {
413 mTestFramework.mCronetEngine.shutdown(); 414 mTestFramework.mCronetEngine.shutdown();
414 } 415 }
415 } 416 }
416 417
417 private byte[] generateSomeSha256() { 418 private byte[] generateSomeSha256() {
418 byte[] sha256 = new byte[32]; 419 byte[] sha256 = new byte[32];
419 Arrays.fill(sha256, (byte) 58); 420 Arrays.fill(sha256, (byte) 58);
420 return sha256; 421 return sha256;
421 } 422 }
422 423
423 private void addPkpSha256( 424 private void addPkpSha256(
424 String host, byte[] pinHashValue, boolean includeSubdomain, int maxA geInSec) { 425 String host, byte[] pinHashValue, boolean includeSubdomain, int maxA geInSec) {
425 Set<byte[]> hashes = new HashSet<>(); 426 Set<byte[]> hashes = new HashSet<>();
426 hashes.add(pinHashValue); 427 hashes.add(pinHashValue);
427 mBuilder.addPublicKeyPins(host, hashes, includeSubdomain, dateInFuture(m axAgeInSec)); 428 mBuilder.addPublicKeyPins(host, hashes, includeSubdomain, dateInFuture(m axAgeInSec));
428 } 429 }
429 430
430 private void sendRequestAndWaitForResult() { 431 private void sendRequestAndWaitForResult() {
431 mListener = new TestUrlRequestCallback(); 432 mListener = new TestUrlRequestCallback();
432 433
433 String quicURL = mServerUrl + "/simple.txt"; 434 String quicURL = mServerUrl + "/simple.txt";
434 UrlRequest.Builder requestBuilder = new UrlRequest.Builder( 435 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR equestBuilder(
435 quicURL, mListener, mListener.getExecutor(), mTestFramework.mCro netEngine); 436 quicURL, mListener, mListener.getExecutor());
436 requestBuilder.build().start(); 437 requestBuilder.build().start();
437 mListener.blockForDone(); 438 mListener.blockForDone();
438 } 439 }
439 440
440 private X509Certificate readCertFromFileInPemFormat(String certFileName) thr ows Exception { 441 private X509Certificate readCertFromFileInPemFormat(String certFileName) thr ows Exception {
441 byte[] certDer = CertTestUtil.pemToDer(CertTestUtil.CERTS_DIRECTORY + ce rtFileName); 442 byte[] certDer = CertTestUtil.pemToDer(CertTestUtil.CERTS_DIRECTORY + ce rtFileName);
442 CertificateFactory certFactory = CertificateFactory.getInstance("X.509") ; 443 CertificateFactory certFactory = CertificateFactory.getInstance("X.509") ;
443 return (X509Certificate) certFactory.generateCertificate(new ByteArrayIn putStream(certDer)); 444 return (X509Certificate) certFactory.generateCertificate(new ByteArrayIn putStream(certDer));
444 } 445 }
445 446
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 if (!shouldThrowNpe) { 482 if (!shouldThrowNpe) {
482 fail("Null pointer exception was not expected: " + ex.toString() ); 483 fail("Null pointer exception was not expected: " + ex.toString() );
483 } 484 }
484 return; 485 return;
485 } 486 }
486 if (shouldThrowNpe) { 487 if (shouldThrowNpe) {
487 fail("NullPointerException was expected"); 488 fail("NullPointerException was expected");
488 } 489 }
489 } 490 }
490 } 491 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698