Chromium Code Reviews| 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 |