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

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/payments/ManifestParserUnitTest.java

Issue 2645813006: Download web payment manifests. (Closed)
Patch Set: WIP Downloader tests - do not review Created 3 years, 11 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/junit/src/org/chromium/chrome/browser/payments/ManifestParserUnitTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/payments/ManifestParserUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/payments/ManifestParserUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..02539bcf83051c534248e887a35c5612b31b25b5
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/payments/ManifestParserUnitTest.java
@@ -0,0 +1,263 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.payments;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+import org.chromium.chrome.browser.payments.ManifestParser.Manifest;
+import org.chromium.chrome.browser.payments.ManifestParser.ManifestParseCallback;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Unit tests for parsing manifests of native Android payment apps.
+ */
+@RunWith(LocalRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class ManifestParserUnitTest {
+ private static class Callback implements ManifestParseCallback {
+ public List<Manifest> manifests;
+ public boolean success;
+
+ @Override
+ public void onManifestParseSuccess(List<Manifest> manifests) {
+ success = true;
+ this.manifests = manifests;
+ }
+
+ @Override
+ public void onManifestParseFailure() {
+ success = false;
+ }
+ }
+
+ @Test
+ public void testEmptyString() {
+ Callback callback = new Callback();
+ ManifestParser.parse("", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testInvalidJson() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{[", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testEmptyJsonObject() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testAndroidIsNotAnArray() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": 1}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testAndroidIsEmptyArray() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": []}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testAndroidListItemIsNotObject() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [\"yes\"]}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testAndroidListItemIsEmptyObject() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{}]}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testAnyPackageAllowed() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{\"package\": \"*\"}]}", callback);
+
+ Assert.assertTrue(callback.success);
+ Assert.assertNotNull(callback.manifests);
+ Assert.assertFalse(callback.manifests.isEmpty());
+ Assert.assertEquals(callback.manifests.size(), 1);
+
+ Manifest manifest = callback.manifests.get(0);
+
+ Assert.assertNotNull(manifest);
+ Assert.assertNotNull(manifest.packageName);
+ Assert.assertEquals(manifest.packageName, "*");
+ }
+
+ @Test
+ public void testNoFingerprints() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{\"package\": \"com.bobpay\","
+ + "\"version\": 1}]}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testFingerprintsIsNotArray() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{\"package\": \"com.bobpay\", \"version\": 1,"
+ + "\"sha256_cert_fingerprints\": 0}]}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testFingerprintsIsEmptyArray() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{\"package\": \"com.bobpay\", \"version\": 1,"
+ + "\"sha256_cert_fingerprints\": []}]}", callback);
+
+ Assert.assertFalse(callback.success);
+ }
+
+ @Test
+ public void testFingerprintsAreNotStrings() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{\"package\": \"com.bobpay\", \"version\": 1,"
+ + "\"sha256_cert_fingerprints\": [0]}]}", callback);
+
+ Assert.assertTrue(callback.success);
+ Assert.assertNotNull(callback.manifests);
+ Assert.assertFalse(callback.manifests.isEmpty());
+ Assert.assertEquals(callback.manifests.size(), 1);
+
+ Manifest manifest = callback.manifests.get(0);
+
+ Assert.assertNotNull(manifest);
+ Assert.assertNotNull(manifest.packageName);
+ Assert.assertEquals(manifest.packageName, "com.bobpay");
+ Assert.assertEquals(manifest.version, 1);
+ Assert.assertNotNull(manifest.sha256CertFingerprints);
+ Assert.assertFalse(manifest.sha256CertFingerprints.isEmpty());
+ Assert.assertEquals(manifest.sha256CertFingerprints.size(), 1);
+
+ String fingerprint = manifest.sha256CertFingerprints.iterator().next();
+
+ Assert.assertEquals(fingerprint, "0"); // Built-in JSON parser coerces the value to string.
+ }
+
+ @Test
+ public void testOneFingerprint() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{\"package\": \"com.bobpay\", \"version\": 1,"
+ + "\"sha256_cert_fingerprints\": [\"1234567890\"]}]}", callback);
+
+ Assert.assertTrue(callback.success);
+ Assert.assertNotNull(callback.manifests);
+ Assert.assertFalse(callback.manifests.isEmpty());
+ Assert.assertEquals(callback.manifests.size(), 1);
+
+ Manifest manifest = callback.manifests.get(0);
+
+ Assert.assertNotNull(manifest);
+ Assert.assertNotNull(manifest.packageName);
+ Assert.assertEquals(manifest.packageName, "com.bobpay");
+ Assert.assertEquals(manifest.version, 1);
+ Assert.assertNotNull(manifest.sha256CertFingerprints);
+ Assert.assertFalse(manifest.sha256CertFingerprints.isEmpty());
+ Assert.assertEquals(manifest.sha256CertFingerprints.size(), 1);
+
+ String fingerprint = manifest.sha256CertFingerprints.iterator().next();
+
+ Assert.assertEquals(fingerprint, "1234567890");
+ }
+
+ @Test
+ public void testTwoFingerprints() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": [{\"package\": \"com.bobpay\", \"version\": 1,"
+ + "\"sha256_cert_fingerprints\": [\"1234567890\", \"0987654321\"]}]}", callback);
+
+ Assert.assertTrue(callback.success);
+ Assert.assertNotNull(callback.manifests);
+ Assert.assertFalse(callback.manifests.isEmpty());
+ Assert.assertEquals(callback.manifests.size(), 1);
+
+ Manifest manifest = callback.manifests.get(0);
+
+ Assert.assertNotNull(manifest);
+ Assert.assertNotNull(manifest.packageName);
+ Assert.assertEquals(manifest.packageName, "com.bobpay");
+ Assert.assertEquals(manifest.version, 1);
+ Assert.assertNotNull(manifest.sha256CertFingerprints);
+ Assert.assertFalse(manifest.sha256CertFingerprints.isEmpty());
+ Assert.assertEquals(manifest.sha256CertFingerprints.size(), 2);
+
+ Set<String> expected = new HashSet<>();
+ expected.add("1234567890");
+ expected.add("0987654321");
+
+ Assert.assertEquals(manifest.sha256CertFingerprints, expected);
+ }
+
+ @Test
+ public void testTwoSections() {
+ Callback callback = new Callback();
+ ManifestParser.parse("{\"android\": ["
+ + "{"
+ + " \"package\": \"com.bobpay\","
+ + " \"version\": 321,"
+ + " \"sha256_cert_fingerprints\": [\"1234567890\"]"
+ + "}, {"
+ + " \"package\": \"com.alicepay\","
+ + " \"version\": 123,"
+ + " \"sha256_cert_fingerprints\": [\"1357913579\"]"
+ + "}]}", callback);
+
+ Assert.assertTrue(callback.success);
+ Assert.assertNotNull(callback.manifests);
+ Assert.assertFalse(callback.manifests.isEmpty());
+ Assert.assertEquals(callback.manifests.size(), 2);
+
+ Manifest manifest = callback.manifests.get(0);
+
+ Assert.assertNotNull(manifest);
+ Assert.assertNotNull(manifest.packageName);
+ Assert.assertEquals(manifest.packageName, "com.bobpay");
+ Assert.assertEquals(manifest.version, 321);
+ Assert.assertNotNull(manifest.sha256CertFingerprints);
+ Assert.assertFalse(manifest.sha256CertFingerprints.isEmpty());
+ Assert.assertEquals(manifest.sha256CertFingerprints.size(), 1);
+ Assert.assertEquals(manifest.sha256CertFingerprints.iterator().next(), "1234567890");
+
+ manifest = callback.manifests.get(1);
+
+ Assert.assertNotNull(manifest);
+ Assert.assertNotNull(manifest.packageName);
+ Assert.assertEquals(manifest.packageName, "com.alicepay");
+ Assert.assertEquals(manifest.version, 123);
+ Assert.assertNotNull(manifest.sha256CertFingerprints);
+ Assert.assertFalse(manifest.sha256CertFingerprints.isEmpty());
+ Assert.assertEquals(manifest.sha256CertFingerprints.size(), 1);
+ Assert.assertEquals(manifest.sha256CertFingerprints.iterator().next(), "1357913579");
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698