From d2cdd6013990e313de0e00dfcb2e8c6766597488 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 18 Jan 2022 17:48:28 +0000 Subject: [PATCH] Fix Robolectric failures for new registerReceiver security design - Security team add new interface to Context.registerReceiver() with a third parameter. - The new interface might have some issues in the test environment. - Spy the registerReceiver() and unregisterReceiver() to avoid unexpected issues. Bug: 214938188 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=WifiPrimarySwitchPreferenceControllerTest Change-Id: I5bf9fc860a3de99145bc7535ba57cb514b403966 --- ...WifiPrimarySwitchPreferenceControllerTest.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java index 4df3bc9665c..9204d4326f5 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java @@ -19,6 +19,9 @@ package com.android.settings.wifi; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -26,6 +29,7 @@ import static org.mockito.Mockito.when; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkRequest; @@ -42,7 +46,6 @@ import com.android.settingslib.PrimarySwitchPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -55,6 +58,8 @@ import org.robolectric.annotation.Config; @Config(shadows = ShadowRestrictedLockUtilsInternal.class) public class WifiPrimarySwitchPreferenceControllerTest { + @Mock + private Intent mIntentReceiver; @Mock private WifiManager mWifiManager; @Mock @@ -75,6 +80,9 @@ public class WifiPrimarySwitchPreferenceControllerTest { MockitoAnnotations.initMocks(this); mMetricsFeatureProvider = FakeFeatureFactory.setupForTest().getMetricsFeatureProvider(); mContext = spy(RuntimeEnvironment.application.getApplicationContext()); + doReturn(mIntentReceiver).when(mContext) + .registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class), anyInt()); + doNothing().when(mContext).unregisterReceiver(any(BroadcastReceiver.class)); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager); when(mContext.getSystemService(NetworkScoreManager.class)).thenReturn(mNetworkScoreManager); mController = new WifiPrimarySwitchPreferenceController(mContext, mMetricsFeatureProvider); @@ -95,11 +103,11 @@ public class WifiPrimarySwitchPreferenceControllerTest { } @Test - @Ignore public void onResume_shouldRegisterCallback() { mController.onResume(); - verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class)); + verify(mContext).registerReceiver( + any(BroadcastReceiver.class), any(IntentFilter.class), anyInt()); verify(mConnectivityManager).registerNetworkCallback( any(NetworkRequest.class), any(ConnectivityManager.NetworkCallback.class), @@ -107,7 +115,6 @@ public class WifiPrimarySwitchPreferenceControllerTest { } @Test - @Ignore public void onPause_shouldUnregisterCallback() { mController.onResume(); mController.onPause();