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

Side by Side Diff: chrome/android/junit/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java

Issue 2645813006: Download web payment manifests. (Closed)
Patch Set: Rebase Created 3 years, 9 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.payments;
6
7 import android.content.pm.ActivityInfo;
8 import android.content.pm.PackageInfo;
9 import android.content.pm.ResolveInfo;
10 import android.content.pm.Signature;
11
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.mockito.Mockito;
15 import org.robolectric.RobolectricTestRunner;
16 import org.robolectric.annotation.Config;
17
18 import org.chromium.chrome.browser.payments.PaymentManifestVerifier.ManifestVeri fyCallback;
19 import org.chromium.components.payments.PaymentManifestDownloader;
20 import org.chromium.components.payments.PaymentManifestParser;
21 import org.chromium.payments.mojom.PaymentManifestSection;
22
23 import java.net.URI;
24 import java.net.URISyntaxException;
25 import java.util.ArrayList;
26 import java.util.List;
27
28 /** A test for the verifier of a payment app manifest. */
29 @RunWith(RobolectricTestRunner.class)
30 @Config(sdk = 21, manifest = Config.NONE)
31 public class PaymentManifestVerifierTest {
32 private final URI mMethodName;
33 private final ResolveInfo mAlicePay;
34 private final ResolveInfo mBobPay;
35 private final List<ResolveInfo> mMatchingApps;
36 private final PaymentManifestDownloader mDownloader;
37 private final PaymentManifestParser mAnyAppAllowedParser;
38 private final PackageManagerDelegate mPackageManagerDelegate;
39 private final ManifestVerifyCallback mCallback;
40
41 public PaymentManifestVerifierTest() throws URISyntaxException {
42 mMethodName = new URI("https://example.com");
43
44 mAlicePay = new ResolveInfo();
45 mAlicePay.activityInfo = new ActivityInfo();
46 mAlicePay.activityInfo.packageName = "com.alicepay.app";
47
48 mBobPay = new ResolveInfo();
49 mBobPay.activityInfo = new ActivityInfo();
50 mBobPay.activityInfo.packageName = "com.bobpay.app";
51
52 mMatchingApps = new ArrayList<>();
53 mMatchingApps.add(mAlicePay);
54 mMatchingApps.add(mBobPay);
55
56 mDownloader = new PaymentManifestDownloader(null) {
57 @Override
58 public void download(URI uri, ManifestDownloadCallback callback) {
59 callback.onManifestDownloadSuccess("some content here");
60 }
61 };
62
63 mAnyAppAllowedParser = new PaymentManifestParser() {
64 @Override
65 public void parse(String content, ManifestParseCallback callback) {
66 PaymentManifestSection[] manifest = new PaymentManifestSection[1 ];
67 manifest[0] = new PaymentManifestSection();
68 manifest[0].packageName = "*";
69 callback.onManifestParseSuccess(manifest);
70 }
71 };
72
73 mPackageManagerDelegate = Mockito.mock(PackageManagerDelegate.class);
74
75 PackageInfo bobPayPackageInfo = new PackageInfo();
76 bobPayPackageInfo.versionCode = 10;
77 bobPayPackageInfo.signatures = new Signature[1];
78 bobPayPackageInfo.signatures[0] = new Signature("01020304050607080900");
79 Mockito.when(mPackageManagerDelegate.getPackageInfoWithSignatures("com.b obpay.app"))
80 .thenReturn(bobPayPackageInfo);
81
82 PackageInfo alicePayPackageInfo = new PackageInfo();
83 alicePayPackageInfo.versionCode = 10;
84 alicePayPackageInfo.signatures = new Signature[1];
85 alicePayPackageInfo.signatures[0] = new Signature("ABCDEFABCDEFABCDEFAB" );
86 Mockito.when(mPackageManagerDelegate.getPackageInfoWithSignatures("com.a licepay.app"))
87 .thenReturn(alicePayPackageInfo);
88
89 mCallback = Mockito.mock(ManifestVerifyCallback.class);
90 }
91
92 @Test
93 public void testUnableToDownload() {
94 PaymentManifestVerifier verifier = new PaymentManifestVerifier(
95 mMethodName, mMatchingApps, new PaymentManifestDownloader(null) {
96 @Override
97 public void download(URI uri, ManifestDownloadCallback callb ack) {
98 callback.onManifestDownloadFailure();
99 }
100 }, mAnyAppAllowedParser, mPackageManagerDelegate, mCallback);
101
102 verifier.verify();
103
104 Mockito.verify(mCallback).onInvalidManifest(mMethodName);
105 }
106
107 @Test
108 public void testUnableToParse() {
109 PaymentManifestVerifier verifier = new PaymentManifestVerifier(
110 mMethodName, mMatchingApps, mDownloader, new PaymentManifestPars er() {
111 @Override
112 public void parse(String content, ManifestParseCallback call back) {
113 callback.onManifestParseFailure();
114 }
115 }, mPackageManagerDelegate, mCallback);
116
117 verifier.verify();
118
119 Mockito.verify(mCallback).onInvalidManifest(mMethodName);
120 }
121
122 @Test
123 public void testAnyAppAllowed() {
124 PaymentManifestVerifier verifier = new PaymentManifestVerifier(mMethodNa me, mMatchingApps,
125 mDownloader, mAnyAppAllowedParser, mPackageManagerDelegate, mCal lback);
126
127 verifier.verify();
128
129 Mockito.verify(mCallback).onValidPaymentApp(mMethodName, mAlicePay);
130 Mockito.verify(mCallback).onValidPaymentApp(mMethodName, mBobPay);
131 }
132
133 @Test
134 public void testBobPayAllowed() {
135 PaymentManifestVerifier verifier = new PaymentManifestVerifier(
136 mMethodName, mMatchingApps, mDownloader, new PaymentManifestPars er() {
137 @Override
138 public void parse(String content, ManifestParseCallback call back) {
139 PaymentManifestSection[] manifest = new PaymentManifestS ection[1];
140 manifest[0] = new PaymentManifestSection();
141 manifest[0].packageName = "com.bobpay.app";
142 manifest[0].version = 10;
143 // SHA256("01020304050607080900"):
144 manifest[0].sha256CertFingerprints = new byte[][] {{(byt e) 0x9A,
145 (byte) 0x89, (byte) 0xC6, (byte) 0x8C, (byte) 0x 4C, (byte) 0x5E,
146 (byte) 0x28, (byte) 0xB8, (byte) 0xC4, (byte) 0x A5, (byte) 0x56,
147 (byte) 0x76, (byte) 0x73, (byte) 0xD4, (byte) 0x 62, (byte) 0xFF,
148 (byte) 0xF5, (byte) 0x15, (byte) 0xDB, (byte) 0x 46, (byte) 0x11,
149 (byte) 0x6F, (byte) 0x99, (byte) 0x00, (byte) 0x 62, (byte) 0x4D,
150 (byte) 0x09, (byte) 0xC4, (byte) 0x74, (byte) 0x F5, (byte) 0x93,
151 (byte) 0xFB}};
152 callback.onManifestParseSuccess(manifest);
153 }
154 }, mPackageManagerDelegate, mCallback);
155
156 verifier.verify();
157
158 Mockito.verify(mCallback).onInvalidPaymentApp(mMethodName, mAlicePay);
159 Mockito.verify(mCallback).onValidPaymentApp(mMethodName, mBobPay);
160 }
161 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698