Add data level CTS test for FastPairDataProviderBase to ensure getter/setter correctness.
This CL covers AntispoofkeyDeviceMetadata API related system apis.
Test: CTS test
Bug: 205591293
Change-Id: I44aec03dbc710d5e52429faa57c3458c3834f536
diff --git a/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java b/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java
index f51c2d3..bb7e7c2 100644
--- a/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java
+++ b/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java
@@ -16,19 +16,25 @@
package android.nearby.cts;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.MockitoAnnotations.initMocks;
import android.nearby.FastPairAccountKeyDeviceMetadata;
import android.nearby.FastPairAntispoofkeyDeviceMetadata;
import android.nearby.FastPairDataProviderBase;
+import android.nearby.FastPairDeviceMetadata;
import android.nearby.FastPairEligibleAccount;
import android.nearby.aidl.FastPairAccountDevicesMetadataRequestParcel;
import android.nearby.aidl.FastPairAccountKeyDeviceMetadataParcel;
import android.nearby.aidl.FastPairAntispoofkeyDeviceMetadataParcel;
import android.nearby.aidl.FastPairAntispoofkeyDeviceMetadataRequestParcel;
+import android.nearby.aidl.FastPairDeviceMetadataParcel;
import android.nearby.aidl.FastPairEligibleAccountParcel;
import android.nearby.aidl.FastPairEligibleAccountsRequestParcel;
import android.nearby.aidl.FastPairManageAccountDeviceRequestParcel;
@@ -46,6 +52,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import java.util.ArrayList;
@@ -54,7 +61,64 @@
public class FastPairDataProviderBaseTest {
private static final String TAG = "FastPairDataProviderBaseTest";
- private static final String ERROR_STRING = "Error String";
+
+ private static final String ASSISTANT_SETUP_HALFSHEET = "ASSISTANT_SETUP_HALFSHEET";
+ private static final String ASSISTANT_SETUP_NOTIFICATION = "ASSISTANT_SETUP_NOTIFICATION";
+ private static final int BLE_TX_POWER = 5;
+ private static final String CONFIRM_PIN_DESCRIPTION = "CONFIRM_PIN_DESCRIPTION";
+ private static final String CONFIRM_PIN_TITLE = "CONFIRM_PIN_TITLE";
+ private static final String CONNECT_SUCCESS_COMPANION_APP_INSTALLED =
+ "CONNECT_SUCCESS_COMPANION_APP_INSTALLED";
+ private static final String CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED =
+ "CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED";
+ private static final double DELTA = 0.000001;
+ private static final int DEVICE_TYPE = 7;
+ private static final String DOWNLOAD_COMPANION_APP_DESCRIPTION =
+ "DOWNLOAD_COMPANION_APP_DESCRIPTION";
+ private static final int ERROR_CODE_BAD_REQUEST =
+ FastPairDataProviderBase.ERROR_CODE_BAD_REQUEST;
+ private static final String ERROR_STRING = "ERROR_STRING";
+ private static final String FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION =
+ "FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION";
+ private static final String FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION =
+ "FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION";
+ private static final byte[] IMAGE = new byte[] {7, 9};
+ private static final String IMAGE_URL = "IMAGE_URL";
+ private static final String INITIAL_NOTIFICATION_DESCRIPTION =
+ "INITIAL_NOTIFICATION_DESCRIPTION";
+ private static final String INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT =
+ "INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT";
+ private static final String INITIAL_PAIRING_DESCRIPTION = "INITIAL_PAIRING_DESCRIPTION";
+ private static final String INTENT_URI = "INTENT_URI";
+ private static final String LOCALE = "LOCALE";
+ private static final String OPEN_COMPANION_APP_DESCRIPTION = "OPEN_COMPANION_APP_DESCRIPTION";
+ private static final String RETRO_ACTIVE_PAIRING_DESCRIPTION =
+ "RETRO_ACTIVE_PAIRING_DESCRIPTION";
+ private static final String SUBSEQUENT_PAIRING_DESCRIPTION = "SUBSEQUENT_PAIRING_DESCRIPTION";
+ private static final String SYNC_CONTACT_DESCRPTION = "SYNC_CONTACT_DESCRPTION";
+ private static final String SYNC_CONTACTS_TITLE = "SYNC_CONTACTS_TITLE";
+ private static final String SYNC_SMS_DESCRIPTION = "SYNC_SMS_DESCRIPTION";
+ private static final String SYNC_SMS_TITLE = "SYNC_SMS_TITLE";
+ private static final float TRIGGER_DISTANCE = 111;
+ private static final String TRUE_WIRELESS_IMAGE_URL_CASE = "TRUE_WIRELESS_IMAGE_URL_CASE";
+ private static final String TRUE_WIRELESS_IMAGE_URL_LEFT_BUD =
+ "TRUE_WIRELESS_IMAGE_URL_LEFT_BUD";
+ private static final String TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD =
+ "TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD";
+ private static final String UNABLE_TO_CONNECT_DESCRIPTION = "UNABLE_TO_CONNECT_DESCRIPTION";
+ private static final String UNABLE_TO_CONNECT_TITLE = "UNABLE_TO_CONNECT_TITLE";
+ private static final String UPDATE_COMPANION_APP_DESCRIPTION =
+ "UPDATE_COMPANION_APP_DESCRIPTION";
+ private static final String WAIT_LAUNCH_COMPANION_APP_DESCRIPTION =
+ "WAIT_LAUNCH_COMPANION_APP_DESCRIPTION";
+ private static final byte[] REQUEST_MODEL_ID = new byte[] {1, 2, 3};
+ private static final byte[] ANTI_SPOOFING_KEY = new byte[] {4, 5, 6};
+ private static final FastPairAntispoofkeyDeviceMetadataRequestParcel
+ FAST_PAIR_ANTI_SPOOF_KEY_DEVICE_METADATA_REQUEST_PARCEL =
+ genFastPairAntispoofkeyDeviceMetadataRequestParcel();
+ private static final FastPairAntispoofkeyDeviceMetadata
+ HAPPY_PATH_FAST_PAIR_ANTI_SPOOF_KEY_DEVICE_METADATA =
+ genHappyPathFastPairAntispoofkeyDeviceMetadata();
private @Mock FastPairDataProviderBase mMockFastPairDataProviderBase;
private @Mock IFastPairAntispoofkeyDeviceMetadataCallback.Stub
@@ -79,14 +143,28 @@
@Test
public void testHappyPathLoadFastPairAntispoofkeyDeviceMetadata() throws Exception {
+ // AOSP sends calls to OEM via Parcelable.
mHappyPathFastPairDataProvider.asProvider().loadFastPairAntispoofkeyDeviceMetadata(
- new FastPairAntispoofkeyDeviceMetadataRequestParcel(),
+ FAST_PAIR_ANTI_SPOOF_KEY_DEVICE_METADATA_REQUEST_PARCEL,
mAntispoofkeyDeviceMetadataCallback);
+
+ // OEM receives request and verifies that it is as expected.
+ final ArgumentCaptor<FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataRequest>
+ mFastPairAntispoofkeyDeviceMetadataRequestCaptor =
+ ArgumentCaptor.forClass(
+ FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataRequest.class);
verify(mMockFastPairDataProviderBase).onLoadFastPairAntispoofkeyDeviceMetadata(
- any(FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataRequest.class),
+ mFastPairAntispoofkeyDeviceMetadataRequestCaptor.capture(),
any(FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataCallback.class));
+ ensureHappyPathAsExpected(mFastPairAntispoofkeyDeviceMetadataRequestCaptor.getValue());
+
+ // AOSP receives responses and verifies that it is as expected.
+ final ArgumentCaptor<FastPairAntispoofkeyDeviceMetadataParcel>
+ mFastPairAntispoofkeyDeviceMetadataParcelCaptor =
+ ArgumentCaptor.forClass(FastPairAntispoofkeyDeviceMetadataParcel.class);
verify(mAntispoofkeyDeviceMetadataCallback).onFastPairAntispoofkeyDeviceMetadataReceived(
- any(FastPairAntispoofkeyDeviceMetadataParcel.class));
+ mFastPairAntispoofkeyDeviceMetadataParcelCaptor.capture());
+ ensureHappyPathAsExpected(mFastPairAntispoofkeyDeviceMetadataParcelCaptor.getValue());
}
@Test
@@ -138,12 +216,13 @@
@Test
public void testErrorPathLoadFastPairAntispoofkeyDeviceMetadata() throws Exception {
mErrorPathFastPairDataProvider.asProvider().loadFastPairAntispoofkeyDeviceMetadata(
- new FastPairAntispoofkeyDeviceMetadataRequestParcel(),
+ FAST_PAIR_ANTI_SPOOF_KEY_DEVICE_METADATA_REQUEST_PARCEL,
mAntispoofkeyDeviceMetadataCallback);
verify(mMockFastPairDataProviderBase).onLoadFastPairAntispoofkeyDeviceMetadata(
any(FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataRequest.class),
any(FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataCallback.class));
- verify(mAntispoofkeyDeviceMetadataCallback).onError(anyInt(), any());
+ verify(mAntispoofkeyDeviceMetadataCallback).onError(
+ eq(ERROR_CODE_BAD_REQUEST), eq(ERROR_STRING));
}
@Test
@@ -210,7 +289,7 @@
mMockFastPairDataProviderBase.onLoadFastPairAntispoofkeyDeviceMetadata(
request, callback);
callback.onFastPairAntispoofkeyDeviceMetadataReceived(
- new FastPairAntispoofkeyDeviceMetadata.Builder().build());
+ HAPPY_PATH_FAST_PAIR_ANTI_SPOOF_KEY_DEVICE_METADATA);
}
@Override
@@ -304,4 +383,131 @@
callback.onError(ERROR_CODE_BAD_REQUEST, ERROR_STRING);
}
}
+
+ /* Generates AntispoofkeyDeviceMetadataRequestParcel. */
+ private static FastPairAntispoofkeyDeviceMetadataRequestParcel
+ genFastPairAntispoofkeyDeviceMetadataRequestParcel() {
+ FastPairAntispoofkeyDeviceMetadataRequestParcel requestParcel =
+ new FastPairAntispoofkeyDeviceMetadataRequestParcel();
+ requestParcel.modelId = REQUEST_MODEL_ID;
+
+ return requestParcel;
+ }
+
+ /* Generates Happy Path AntispoofkeyDeviceMetadata. */
+ private static FastPairAntispoofkeyDeviceMetadata
+ genHappyPathFastPairAntispoofkeyDeviceMetadata() {
+ FastPairAntispoofkeyDeviceMetadata.Builder builder =
+ new FastPairAntispoofkeyDeviceMetadata.Builder();
+ builder.setAntiSpoofPublicKey(ANTI_SPOOFING_KEY);
+ builder.setFastPairDeviceMetadata(genHappyPathFastPairDeviceMetadata());
+
+ return builder.build();
+ }
+
+ /* Generates Happy Path DeviceMetadata. */
+ private static FastPairDeviceMetadata genHappyPathFastPairDeviceMetadata() {
+ FastPairDeviceMetadata.Builder builder = new FastPairDeviceMetadata.Builder();
+ builder.setAssistantSetupHalfSheet(ASSISTANT_SETUP_HALFSHEET);
+ builder.setAssistantSetupNotification(ASSISTANT_SETUP_NOTIFICATION);
+ builder.setBleTxPower(BLE_TX_POWER);
+ builder.setConfirmPinDescription(CONFIRM_PIN_DESCRIPTION);
+ builder.setConfirmPinTitle(CONFIRM_PIN_TITLE);
+ builder.setConnectSuccessCompanionAppInstalled(CONNECT_SUCCESS_COMPANION_APP_INSTALLED);
+ builder.setConnectSuccessCompanionAppNotInstalled(
+ CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED);
+ builder.setDeviceType(DEVICE_TYPE);
+ builder.setDownloadCompanionAppDescription(DOWNLOAD_COMPANION_APP_DESCRIPTION);
+ builder.setFailConnectGoToSettingsDescription(FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION);
+ builder.setFastPairTvConnectDeviceNoAccountDescription(
+ FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION);
+ builder.setImage(IMAGE);
+ builder.setImageUrl(IMAGE_URL);
+ builder.setInitialNotificationDescription(INITIAL_NOTIFICATION_DESCRIPTION);
+ builder.setInitialNotificationDescriptionNoAccount(
+ INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT);
+ builder.setInitialPairingDescription(INITIAL_PAIRING_DESCRIPTION);
+ builder.setIntentUri(INTENT_URI);
+ builder.setLocale(LOCALE);
+ builder.setOpenCompanionAppDescription(OPEN_COMPANION_APP_DESCRIPTION);
+ builder.setRetroactivePairingDescription(RETRO_ACTIVE_PAIRING_DESCRIPTION);
+ builder.setSubsequentPairingDescription(SUBSEQUENT_PAIRING_DESCRIPTION);
+ builder.setSyncContactsDescription(SYNC_CONTACT_DESCRPTION);
+ builder.setSyncContactsTitle(SYNC_CONTACTS_TITLE);
+ builder.setSyncSmsDescription(SYNC_SMS_DESCRIPTION);
+ builder.setSyncSmsTitle(SYNC_SMS_TITLE);
+ builder.setTriggerDistance(TRIGGER_DISTANCE);
+ builder.setTrueWirelessImageUrlCase(TRUE_WIRELESS_IMAGE_URL_CASE);
+ builder.setTrueWirelessImageUrlLeftBud(TRUE_WIRELESS_IMAGE_URL_LEFT_BUD);
+ builder.setTrueWirelessImageUrlRightBud(TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD);
+ builder.setUnableToConnectDescription(UNABLE_TO_CONNECT_DESCRIPTION);
+ builder.setUnableToConnectTitle(UNABLE_TO_CONNECT_TITLE);
+ builder.setUpdateCompanionAppDescription(UPDATE_COMPANION_APP_DESCRIPTION);
+ builder.setWaitLaunchCompanionAppDescription(WAIT_LAUNCH_COMPANION_APP_DESCRIPTION);
+
+ return builder.build();
+ }
+
+ /* Verifies Happy Path AntispoofkeyDeviceMetadataRequest. */
+ private static void ensureHappyPathAsExpected(
+ FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataRequest request) {
+ assertEquals(REQUEST_MODEL_ID, request.getModelId());
+ }
+
+ /* Verifies Happy Path AntispoofkeyDeviceMetadataParcel. */
+ private static void ensureHappyPathAsExpected(
+ FastPairAntispoofkeyDeviceMetadataParcel metadataParcel) {
+ assertNotNull(metadataParcel);
+ assertEquals(ANTI_SPOOFING_KEY, metadataParcel.antiSpoofPublicKey);
+ ensureHappyPathAsExpected(metadataParcel.deviceMetadata);
+ }
+
+ /* Verifies Happy Path DeviceMetadataParcel. */
+ private static void ensureHappyPathAsExpected(FastPairDeviceMetadataParcel metadataParcel) {
+ assertNotNull(metadataParcel);
+ assertEquals(ASSISTANT_SETUP_HALFSHEET, metadataParcel.assistantSetupHalfSheet);
+ assertEquals(ASSISTANT_SETUP_NOTIFICATION, metadataParcel.assistantSetupNotification);
+ assertEquals(BLE_TX_POWER, metadataParcel.bleTxPower);
+ assertEquals(CONFIRM_PIN_DESCRIPTION, metadataParcel.confirmPinDescription);
+ assertEquals(CONFIRM_PIN_TITLE, metadataParcel.confirmPinTitle);
+ assertEquals(CONNECT_SUCCESS_COMPANION_APP_INSTALLED,
+ metadataParcel.connectSuccessCompanionAppInstalled);
+ assertEquals(CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED,
+ metadataParcel.connectSuccessCompanionAppNotInstalled);
+ assertEquals(DEVICE_TYPE, metadataParcel.deviceType);
+ assertEquals(DOWNLOAD_COMPANION_APP_DESCRIPTION,
+ metadataParcel.downloadCompanionAppDescription);
+ assertEquals(FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION,
+ metadataParcel.failConnectGoToSettingsDescription);
+ assertEquals(FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION,
+ metadataParcel.fastPairTvConnectDeviceNoAccountDescription);
+ assertArrayEquals(IMAGE, metadataParcel.image);
+ assertEquals(IMAGE_URL, metadataParcel.imageUrl);
+ assertEquals(INITIAL_NOTIFICATION_DESCRIPTION,
+ metadataParcel.initialNotificationDescription);
+ assertEquals(INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT,
+ metadataParcel.initialNotificationDescriptionNoAccount);
+ assertEquals(INITIAL_PAIRING_DESCRIPTION, metadataParcel.initialPairingDescription);
+ assertEquals(INTENT_URI, metadataParcel.intentUri);
+ assertEquals(LOCALE, metadataParcel.locale);
+ assertEquals(OPEN_COMPANION_APP_DESCRIPTION, metadataParcel.openCompanionAppDescription);
+ assertEquals(RETRO_ACTIVE_PAIRING_DESCRIPTION,
+ metadataParcel.retroactivePairingDescription);
+ assertEquals(SUBSEQUENT_PAIRING_DESCRIPTION, metadataParcel.subsequentPairingDescription);
+ assertEquals(SYNC_CONTACT_DESCRPTION, metadataParcel.syncContactsDescription);
+ assertEquals(SYNC_CONTACTS_TITLE, metadataParcel.syncContactsTitle);
+ assertEquals(SYNC_SMS_DESCRIPTION, metadataParcel.syncSmsDescription);
+ assertEquals(SYNC_SMS_TITLE, metadataParcel.syncSmsTitle);
+ assertEquals(TRIGGER_DISTANCE, metadataParcel.triggerDistance, DELTA);
+ assertEquals(TRUE_WIRELESS_IMAGE_URL_CASE, metadataParcel.trueWirelessImageUrlCase);
+ assertEquals(TRUE_WIRELESS_IMAGE_URL_LEFT_BUD, metadataParcel.trueWirelessImageUrlLeftBud);
+ assertEquals(TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD,
+ metadataParcel.trueWirelessImageUrlRightBud);
+ assertEquals(UNABLE_TO_CONNECT_DESCRIPTION, metadataParcel.unableToConnectDescription);
+ assertEquals(UNABLE_TO_CONNECT_TITLE, metadataParcel.unableToConnectTitle);
+ assertEquals(UPDATE_COMPANION_APP_DESCRIPTION,
+ metadataParcel.updateCompanionAppDescription);
+ assertEquals(WAIT_LAUNCH_COMPANION_APP_DESCRIPTION,
+ metadataParcel.waitLaunchCompanionAppDescription);
+ }
}