OLD | NEW |
---|---|
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 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 | 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.chrome.browser.payments; | 5 package org.chromium.chrome.browser.payments; |
6 | 6 |
7 import android.content.Intent; | 7 import android.content.Intent; |
8 import android.content.pm.ActivityInfo; | 8 import android.content.pm.ActivityInfo; |
9 import android.content.pm.PackageInfo; | 9 import android.content.pm.PackageInfo; |
10 import android.content.pm.ResolveInfo; | 10 import android.content.pm.ResolveInfo; |
(...skipping 20 matching lines...) Expand all Loading... | |
31 import java.util.HashSet; | 31 import java.util.HashSet; |
32 import java.util.List; | 32 import java.util.List; |
33 import java.util.Set; | 33 import java.util.Set; |
34 | 34 |
35 /** Tests for the native Android payment app finder. */ | 35 /** Tests for the native Android payment app finder. */ |
36 @RunWith(RobolectricTestRunner.class) | 36 @RunWith(RobolectricTestRunner.class) |
37 @Config(sdk = 21, manifest = Config.NONE) | 37 @Config(sdk = 21, manifest = Config.NONE) |
38 public class AndroidPaymentAppFinderTest { | 38 public class AndroidPaymentAppFinderTest { |
39 public AndroidPaymentAppFinderTest() {} | 39 public AndroidPaymentAppFinderTest() {} |
40 | 40 |
41 /** | |
42 * Argument matcher that matches Intents using |filterEquals| method. | |
43 */ | |
44 private static class IntentArgumentMatcher implements ArgumentMatcher<Intent > { | |
45 | |
46 private Intent mIntent; | |
nyquist
2017/03/16 15:29:50
Nit: final
mikecase (-- gone --)
2017/03/16 16:30:40
Done
| |
47 | |
48 public IntentArgumentMatcher(Intent intent) { | |
49 this.mIntent = intent; | |
nyquist
2017/03/16 15:29:51
Nit: Remove |this|
mikecase (-- gone --)
2017/03/16 16:30:40
Done.
Also added @Override to matches() and equal
| |
50 } | |
51 | |
52 public boolean matches(Intent other) { | |
53 return mIntent.filterEquals(other); | |
54 } | |
55 | |
56 public String toString() { | |
57 return mIntent.toString(); | |
58 } | |
59 } | |
60 | |
41 @Test | 61 @Test |
42 public void testNoValidPaymentMethodNames() { | 62 public void testNoValidPaymentMethodNames() { |
43 Set<String> methodNames = new HashSet<>(); | 63 Set<String> methodNames = new HashSet<>(); |
44 methodNames.add("unknown-payment-method-name"); | 64 methodNames.add("unknown-payment-method-name"); |
45 methodNames.add("http://not.secure.payment.method.name.com"); | 65 methodNames.add("http://not.secure.payment.method.name.com"); |
46 methodNames.add("https://"); // Invalid URI. | 66 methodNames.add("https://"); // Invalid URI. |
47 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb ack.class); | 67 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb ack.class); |
48 | 68 |
49 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName s, false, | 69 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName s, false, |
50 Mockito.mock(PaymentManifestDownloader.class), | 70 Mockito.mock(PaymentManifestDownloader.class), |
51 Mockito.mock(PaymentManifestParser.class), | 71 Mockito.mock(PaymentManifestParser.class), |
52 Mockito.mock(PackageManagerDelegate.class), callback); | 72 Mockito.mock(PackageManagerDelegate.class), callback); |
53 | 73 |
54 Mockito.verify(callback, Mockito.never()) | 74 Mockito.verify(callback, Mockito.never()) |
55 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); | 75 .onPaymentAppCreated(Mockito.any(PaymentApp.class)); |
56 Mockito.verify(callback).onAllPaymentAppsCreated(); | 76 Mockito.verify(callback).onAllPaymentAppsCreated(); |
57 } | 77 } |
58 | 78 |
59 @Test | 79 @Test |
60 public void testQueryBasicCardsWithoutApps() { | 80 public void testQueryBasicCardsWithoutApps() { |
61 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana gerDelegate.class); | 81 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana gerDelegate.class); |
62 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( | 82 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
63 new Intent(AndroidPaymentAppFinder.ACTION_PAY_BASIC _CARD))) | 83 ArgumentMatchers.argThat(new IntentArgumentMatcher( |
84 new Intent(AndroidPaymentAppFinder.ACTION_PAY_BASIC_CARD ))))) | |
64 .thenReturn(new ArrayList<ResolveInfo>()); | 85 .thenReturn(new ArrayList<ResolveInfo>()); |
65 Set<String> methodNames = new HashSet<>(); | 86 Set<String> methodNames = new HashSet<>(); |
66 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); | 87 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); |
67 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb ack.class); | 88 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb ack.class); |
68 | 89 |
69 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName s, false, | 90 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName s, false, |
70 Mockito.mock(PaymentManifestDownloader.class), | 91 Mockito.mock(PaymentManifestDownloader.class), |
71 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat e, callback); | 92 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat e, callback); |
72 | 93 |
73 Mockito.verify(callback, Mockito.never()) | 94 Mockito.verify(callback, Mockito.never()) |
(...skipping 11 matching lines...) Expand all Loading... | |
85 activities.add(alicePay); | 106 activities.add(alicePay); |
86 ResolveInfo bobPay = new ResolveInfo(); | 107 ResolveInfo bobPay = new ResolveInfo(); |
87 bobPay.activityInfo = new ActivityInfo(); | 108 bobPay.activityInfo = new ActivityInfo(); |
88 bobPay.activityInfo.packageName = "com.bobpay.app"; | 109 bobPay.activityInfo.packageName = "com.bobpay.app"; |
89 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; | 110 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; |
90 activities.add(bobPay); | 111 activities.add(bobPay); |
91 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana gerDelegate.class); | 112 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana gerDelegate.class); |
92 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo. class))) | 113 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo. class))) |
93 .thenReturn("A non-empty label"); | 114 .thenReturn("A non-empty label"); |
94 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( | 115 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
95 new Intent(AndroidPaymentAppFinder.ACTION_PAY_BASIC _CARD))) | 116 ArgumentMatchers.argThat(new IntentArgumentMatcher( |
117 new Intent(AndroidPaymentAppFinder.ACTION_PAY_BASIC_CARD ))))) | |
96 .thenReturn(activities); | 118 .thenReturn(activities); |
97 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( | 119 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( |
98 new Intent(AndroidPaymentAppFinder.ACTION_IS_READY_ TO_PAY))) | 120 ArgumentMatchers.argThat(new IntentArgumentMatcher( |
121 new Intent(AndroidPaymentAppFinder.ACTION_IS_READY_TO_PA Y))))) | |
99 .thenReturn(new ArrayList<ResolveInfo>()); | 122 .thenReturn(new ArrayList<ResolveInfo>()); |
100 Set<String> methodNames = new HashSet<>(); | 123 Set<String> methodNames = new HashSet<>(); |
101 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); | 124 methodNames.add(AndroidPaymentAppFinder.BASIC_CARD_PAYMENT_METHOD); |
102 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb ack.class); | 125 PaymentAppCreatedCallback callback = Mockito.mock(PaymentAppCreatedCallb ack.class); |
103 | 126 |
104 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName s, false, | 127 AndroidPaymentAppFinder.find(Mockito.mock(WebContents.class), methodName s, false, |
105 Mockito.mock(PaymentManifestDownloader.class), | 128 Mockito.mock(PaymentManifestDownloader.class), |
106 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat e, callback); | 129 Mockito.mock(PaymentManifestParser.class), packageManagerDelegat e, callback); |
107 | 130 |
108 Mockito.verify(callback).onPaymentAppCreated( | 131 Mockito.verify(callback).onPaymentAppCreated( |
(...skipping 29 matching lines...) Expand all Loading... | |
138 ResolveInfo bobPay = new ResolveInfo(); | 161 ResolveInfo bobPay = new ResolveInfo(); |
139 bobPay.activityInfo = new ActivityInfo(); | 162 bobPay.activityInfo = new ActivityInfo(); |
140 bobPay.activityInfo.packageName = "com.bobpay.app"; | 163 bobPay.activityInfo.packageName = "com.bobpay.app"; |
141 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; | 164 bobPay.activityInfo.name = "com.bobpay.app.WebPaymentActivity"; |
142 activities.add(bobPay); | 165 activities.add(bobPay); |
143 Intent bobPayIntent = new Intent("org.chromium.intent.action.PAY"); | 166 Intent bobPayIntent = new Intent("org.chromium.intent.action.PAY"); |
144 bobPayIntent.setData(Uri.parse("https://bobpay.com")); | 167 bobPayIntent.setData(Uri.parse("https://bobpay.com")); |
145 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana gerDelegate.class); | 168 PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageMana gerDelegate.class); |
146 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo. class))) | 169 Mockito.when(packageManagerDelegate.getAppLabel(Mockito.any(ResolveInfo. class))) |
147 .thenReturn("A non-empty label"); | 170 .thenReturn("A non-empty label"); |
148 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( bobPayIntent)) | 171 Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntent( |
172 ArgumentMatchers.argThat(new IntentArgumentMatcher(bobPayIntent) ))) | |
149 .thenReturn(activities); | 173 .thenReturn(activities); |
150 | 174 |
151 List<ResolveInfo> services = new ArrayList<>(); | 175 List<ResolveInfo> services = new ArrayList<>(); |
152 ResolveInfo isBobPayReadyToPay = new ResolveInfo(); | 176 ResolveInfo isBobPayReadyToPay = new ResolveInfo(); |
153 isBobPayReadyToPay.serviceInfo = new ServiceInfo(); | 177 isBobPayReadyToPay.serviceInfo = new ServiceInfo(); |
154 isBobPayReadyToPay.serviceInfo.packageName = "com.bobpay.app"; | 178 isBobPayReadyToPay.serviceInfo.packageName = "com.bobpay.app"; |
155 isBobPayReadyToPay.serviceInfo.name = "com.bobpay.app.IsReadyToWebPay"; | 179 isBobPayReadyToPay.serviceInfo.name = "com.bobpay.app.IsReadyToWebPay"; |
156 services.add(isBobPayReadyToPay); | 180 services.add(isBobPayReadyToPay); |
157 Intent isReadyToPayIntent = new Intent(AndroidPaymentAppFinder.ACTION_IS _READY_TO_PAY); | 181 Intent isReadyToPayIntent = new Intent(AndroidPaymentAppFinder.ACTION_IS _READY_TO_PAY); |
158 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent(is ReadyToPayIntent)) | 182 Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent( |
183 ArgumentMatchers.argThat(new IntentArgumentMatcher(isReadyToPayI ntent)))) | |
159 .thenReturn(services); | 184 .thenReturn(services); |
160 | 185 |
161 PackageInfo bobPayPackageInfo = new PackageInfo(); | 186 PackageInfo bobPayPackageInfo = new PackageInfo(); |
162 bobPayPackageInfo.versionCode = 10; | 187 bobPayPackageInfo.versionCode = 10; |
163 bobPayPackageInfo.signatures = new Signature[1]; | 188 bobPayPackageInfo.signatures = new Signature[1]; |
164 bobPayPackageInfo.signatures[0] = new Signature("01020304050607080900"); | 189 bobPayPackageInfo.signatures[0] = new Signature("01020304050607080900"); |
165 Mockito.when(packageManagerDelegate.getPackageInfoWithSignatures("com.bo bpay.app")) | 190 Mockito.when(packageManagerDelegate.getPackageInfoWithSignatures("com.bo bpay.app")) |
166 .thenReturn(bobPayPackageInfo); | 191 .thenReturn(bobPayPackageInfo); |
167 | 192 |
168 PaymentManifestDownloader downloader = new PaymentManifestDownloader(nul l) { | 193 PaymentManifestDownloader downloader = new PaymentManifestDownloader(nul l) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
226 String expectedAppIdentifier) { | 251 String expectedAppIdentifier) { |
227 return new Matches(expectedAppIdentifier); | 252 return new Matches(expectedAppIdentifier); |
228 } | 253 } |
229 | 254 |
230 @Override | 255 @Override |
231 public boolean matches(PaymentApp app) { | 256 public boolean matches(PaymentApp app) { |
232 return app.getAppIdentifier().equals(mExpectedAppIdentifier); | 257 return app.getAppIdentifier().equals(mExpectedAppIdentifier); |
233 } | 258 } |
234 } | 259 } |
235 } | 260 } |
OLD | NEW |