Commit 516b356c authored by Michael Thiessen's avatar Michael Thiessen Committed by Commit Bot

Move AndroidPaymentAppFinderUnitTest to unit_tests

In order to migrate java.net.URI to GURL the junit tests that rely on
java.net.URI need to be moved to a test apk that supports the native
library.

This change moves the AndroidPaymentAppFinderUnitTest unittests from
junit to unit_tests (Android only). These tests should be just as fast
as they were as junit tests (and much faster than chrome_test_apk unit
tests).

Bug: 783819
Change-Id: Ib3aa7908dac169f702fd0d723add1704d807561e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1993422
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarSahel Sharify <sahel@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#730299}
parent 42acfeb0
......@@ -2952,6 +2952,8 @@ android_library("native_java_unittests_java") {
"//base/test:test_support_java",
"//chrome/android:chrome_java",
"//chrome/test/android:chrome_java_test_support",
"//components/payments/content/android:java",
"//content/public/android:content_java",
"//content/public/test/android:android_test_message_pump_support_java",
"//content/public/test/android:content_java_test_support",
"//third_party/blink/public:blink_headers_java",
......@@ -2967,6 +2969,7 @@ android_library("native_java_unittests_java") {
"native_java_unittests/src/org/chromium/chrome/browser/installedapp/InstalledAppProviderTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
......@@ -2981,5 +2984,6 @@ generate_jni("native_j_unittests_jni_headers") {
"native_java_unittests/src/org/chromium/chrome/browser/installedapp/InstalledAppProviderTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridgeUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java",
"native_java_unittests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java",
]
}
......@@ -165,7 +165,6 @@ chrome_junit_test_java_sources = [
"junit/src/org/chromium/chrome/browser/omnibox/suggestions/entity/EntitySuggestionProcessorUnitTest.java",
"junit/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilderUnitTest.java",
"junit/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksFaviconThrottleTest.java",
"junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderUnitTest.java",
"junit/src/org/chromium/chrome/browser/payments/AutofillContactTest.java",
"junit/src/org/chromium/chrome/browser/payments/AutofillContactUnitTest.java",
"junit/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java",
......
include_rules = [
"+components/payments/content/android/java/src/org/chromium/components/payments",
"+components/search_engines/android/java/src/org/chromium/components/search_engines",
"-content/public/android/java",
"+content/public/android/java/src/org/chromium/content_public",
]
......@@ -14,14 +14,12 @@ import android.content.pm.Signature;
import android.os.Bundle;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatcher;
import org.mockito.ArgumentMatchers;
import org.mockito.Mockito;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.CalledByNativeJavaTest;
import org.chromium.chrome.browser.payments.PaymentAppFactory.PaymentAppCreatedCallback;
import org.chromium.components.payments.PaymentManifestDownloader;
import org.chromium.components.payments.PaymentManifestParser;
......@@ -36,13 +34,21 @@ import java.util.List;
import java.util.Set;
/** Tests for the native Android payment app finder. */
@RunWith(RobolectricTestRunner.class)
@Config(sdk = 21, manifest = Config.NONE)
public class AndroidPaymentAppFinderUnitTest {
private static final IntentArgumentMatcher sPayIntentArgumentMatcher =
new IntentArgumentMatcher(new Intent("org.chromium.intent.action.PAY"));
public AndroidPaymentAppFinderUnitTest() {}
// SHA256("01020304050607080900"):
public static final byte[][] BOB_PAY_SIGNATURE_FINGERPRINTS = {{(byte) 0x9A, (byte) 0x89,
(byte) 0xC6, (byte) 0x8C, (byte) 0x4C, (byte) 0x5E, (byte) 0x28, (byte) 0xB8,
(byte) 0xC4, (byte) 0xA5, (byte) 0x56, (byte) 0x76, (byte) 0x73, (byte) 0xD4,
(byte) 0x62, (byte) 0xFF, (byte) 0xF5, (byte) 0x15, (byte) 0xDB, (byte) 0x46,
(byte) 0x11, (byte) 0x6F, (byte) 0x99, (byte) 0x00, (byte) 0x62, (byte) 0x4D,
(byte) 0x09, (byte) 0xC4, (byte) 0x74, (byte) 0xF5, (byte) 0x93, (byte) 0xFB}};
public static final Signature BOB_PAY_SIGNATURE = new Signature("01020304050607080900");
@CalledByNative
private AndroidPaymentAppFinderUnitTest() {}
/**
* Argument matcher that matches Intents using |filterEquals| method.
......@@ -65,7 +71,7 @@ public class AndroidPaymentAppFinderUnitTest {
}
}
@Test
@CalledByNativeJavaTest
public void testNoValidPaymentMethodNames() {
Set<String> methodNames = new HashSet<>();
methodNames.add("unknown-payment-method-name");
......@@ -84,7 +90,7 @@ public class AndroidPaymentAppFinderUnitTest {
Mockito.verify(callback).onAllPaymentAppsCreated();
}
@Test
@CalledByNativeJavaTest
public void testQueryWithoutApps() {
PackageManagerDelegate packageManagerDelegate = Mockito.mock(PackageManagerDelegate.class);
Mockito.when(packageManagerDelegate.getActivitiesThatCanRespondToIntentWithMetaData(
......@@ -107,7 +113,7 @@ public class AndroidPaymentAppFinderUnitTest {
Mockito.verify(callback).onAllPaymentAppsCreated();
}
@Test
@CalledByNativeJavaTest
public void testQueryWithoutMetaData() {
List<ResolveInfo> activities = new ArrayList<>();
ResolveInfo alicePay = new ResolveInfo();
......@@ -138,7 +144,7 @@ public class AndroidPaymentAppFinderUnitTest {
Mockito.verify(callback).onAllPaymentAppsCreated();
}
@Test
@CalledByNativeJavaTest
public void testQueryWithUnsupportedPaymentMethod() {
List<ResolveInfo> activities = new ArrayList<>();
ResolveInfo alicePay = new ResolveInfo();
......@@ -174,7 +180,7 @@ public class AndroidPaymentAppFinderUnitTest {
Mockito.verify(callback).onAllPaymentAppsCreated();
}
@Test
@CalledByNativeJavaTest
public void testQueryBasicCardsWithTwoApps() {
List<ResolveInfo> activities = new ArrayList<>();
ResolveInfo alicePay = new ResolveInfo();
......@@ -239,7 +245,7 @@ public class AndroidPaymentAppFinderUnitTest {
Mockito.verify(callback).onAllPaymentAppsCreated();
}
@Test
@CalledByNativeJavaTest
public void testQueryBobPayWithOneAppThatHasIsReadyToPayService() {
List<ResolveInfo> activities = new ArrayList<>();
ResolveInfo bobPay = new ResolveInfo();
......@@ -274,14 +280,15 @@ public class AndroidPaymentAppFinderUnitTest {
isBobPayReadyToPay.serviceInfo.name = "com.bobpay.app.IsReadyToWebPay";
services.add(isBobPayReadyToPay);
Intent isReadyToPayIntent = new Intent(AndroidPaymentAppFinder.ACTION_IS_READY_TO_PAY);
Mockito.when(packageManagerDelegate.getServicesThatCanRespondToIntent(
Mockito
.when(packageManagerDelegate.getServicesThatCanRespondToIntent(
ArgumentMatchers.argThat(new IntentArgumentMatcher(isReadyToPayIntent))))
.thenReturn(services);
PackageInfo bobPayPackageInfo = new PackageInfo();
bobPayPackageInfo.versionCode = 10;
bobPayPackageInfo.signatures = new Signature[1];
bobPayPackageInfo.signatures[0] = PaymentManifestVerifierTest.BOB_PAY_SIGNATURE;
bobPayPackageInfo.signatures[0] = BOB_PAY_SIGNATURE;
Mockito.when(packageManagerDelegate.getPackageInfoWithSignatures("com.bobpay.app"))
.thenReturn(bobPayPackageInfo);
......@@ -318,8 +325,8 @@ public class AndroidPaymentAppFinderUnitTest {
public void parseWebAppManifest(String content, ManifestParseCallback callback) {
WebAppManifestSection[] manifest = new WebAppManifestSection[1];
int minVersion = 10;
manifest[0] = new WebAppManifestSection("com.bobpay.app", minVersion,
PaymentManifestVerifierTest.BOB_PAY_SIGNATURE_FINGERPRINTS);
manifest[0] = new WebAppManifestSection(
"com.bobpay.app", minVersion, BOB_PAY_SIGNATURE_FINGERPRINTS);
callback.onWebAppManifestParseSuccess(manifest);
}
......
// Copyright 2020 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.
#include "base/android/jni_android.h"
#include "chrome/android/native_j_unittests_jni_headers/AndroidPaymentAppFinderUnitTest_jni.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::android::AttachCurrentThread;
class AndroidPaymentAppFinderUnitTest : public ::testing::Test {
public:
AndroidPaymentAppFinderUnitTest()
: j_test_(Java_AndroidPaymentAppFinderUnitTest_Constructor(
AttachCurrentThread())) {}
const base::android::ScopedJavaGlobalRef<jobject>& j_test() {
return j_test_;
}
private:
base::android::ScopedJavaGlobalRef<jobject> j_test_;
};
JAVA_TESTS(AndroidPaymentAppFinderUnitTest, j_test())
......@@ -3787,6 +3787,7 @@ test("unit_tests") {
"../browser/password_manager/password_generation_controller_impl_unittest.cc",
"../browser/password_manager/save_password_infobar_delegate_android_unittest.cc",
"../browser/password_manager/update_password_infobar_delegate_android_unittest.cc",
"../browser/payments/android/android_payment_app_finder_unittest.cc",
"../browser/permissions/permission_prompt_android_unittest.cc",
"../browser/permissions/permission_request_notification_android_unittest.cc",
"../browser/permissions/permission_request_notification_handler_unittest.cc",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment