aboutsummaryrefslogtreecommitdiff
path: root/robolectric/src/test/java/org/robolectric/shadows/ShadowSafetyCenterManagerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'robolectric/src/test/java/org/robolectric/shadows/ShadowSafetyCenterManagerTest.java')
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowSafetyCenterManagerTest.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowSafetyCenterManagerTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowSafetyCenterManagerTest.java
index b9977262b..d0e3e61bb 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowSafetyCenterManagerTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowSafetyCenterManagerTest.java
@@ -2,6 +2,7 @@ package org.robolectric.shadows;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertThrows;
import android.os.Build.VERSION_CODES;
import android.safetycenter.SafetyCenterManager;
@@ -10,6 +11,7 @@ import android.safetycenter.SafetySourceData;
import android.safetycenter.SafetySourceErrorDetails;
import org.junit.Before;
import org.junit.Test;
+import org.junit.function.ThrowingRunnable;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@@ -385,4 +387,107 @@ public final class ShadowSafetyCenterManagerTest {
assertThat(shadowSafetyCenterManager.getLastSafetySourceError("id2"))
.isSameInstanceAs(errorDetails2);
}
+
+ @Test
+ public void throwOnSafetySourceId_safetyCenterDisabled_doesntThrowForAllIds() {
+ SafetyCenterManager safetyCenterManager =
+ getApplicationContext().getSystemService(SafetyCenterManager.class);
+ ShadowSafetyCenterManager shadowSafetyCenterManager =
+ Shadow.extract(getApplicationContext().getSystemService(SafetyCenterManager.class));
+
+ shadowSafetyCenterManager.throwOnSafetySourceId("id");
+
+ shadowSafetyCenterManager.setSafetyCenterEnabled(false);
+ safetyCenterManager.setSafetySourceData(
+ "id",
+ new SafetySourceData.Builder().build(),
+ new SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
+ .setRefreshBroadcastId("id")
+ .build());
+ SafetySourceData unused = safetyCenterManager.getSafetySourceData("id");
+ safetyCenterManager.reportSafetySourceError(
+ "id",
+ new SafetySourceErrorDetails(
+ new SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
+ .setRefreshBroadcastId("id")
+ .build()));
+ }
+
+ @Test
+ public void throwOnSafetySourceId_safetyCenterEnabled_doesntThrowForOtherIds() {
+ SafetyCenterManager safetyCenterManager =
+ getApplicationContext().getSystemService(SafetyCenterManager.class);
+ ShadowSafetyCenterManager shadowSafetyCenterManager =
+ Shadow.extract(getApplicationContext().getSystemService(SafetyCenterManager.class));
+
+ shadowSafetyCenterManager.throwOnSafetySourceId("unrelated_id");
+
+ shadowSafetyCenterManager.setSafetyCenterEnabled(true);
+ safetyCenterManager.setSafetySourceData(
+ "id",
+ new SafetySourceData.Builder().build(),
+ new SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
+ .setRefreshBroadcastId("id")
+ .build());
+ SafetySourceData unused = safetyCenterManager.getSafetySourceData("id");
+ safetyCenterManager.reportSafetySourceError(
+ "id",
+ new SafetySourceErrorDetails(
+ new SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
+ .setRefreshBroadcastId("id")
+ .build()));
+ }
+
+ @Test
+ public void throwOnSafetySourceId_safetyCenterEnabled_throwsForGivenIds() {
+ SafetyCenterManager safetyCenterManager =
+ getApplicationContext().getSystemService(SafetyCenterManager.class);
+ ShadowSafetyCenterManager shadowSafetyCenterManager =
+ Shadow.extract(getApplicationContext().getSystemService(SafetyCenterManager.class));
+
+ shadowSafetyCenterManager.throwOnSafetySourceId("id1");
+ shadowSafetyCenterManager.throwOnSafetySourceId("id2");
+
+ shadowSafetyCenterManager.setSafetyCenterEnabled(true);
+ assertThrowsIllegalArgumentExceptionForSource(
+ "id1",
+ new ThrowingRunnable() {
+ @Override
+ public void run() {
+ safetyCenterManager.setSafetySourceData(
+ "id1",
+ new SafetySourceData.Builder().build(),
+ new SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
+ .setRefreshBroadcastId("id")
+ .build());
+ }
+ });
+ assertThrowsIllegalArgumentExceptionForSource(
+ "id2",
+ new ThrowingRunnable() {
+ @Override
+ public void run() {
+ SafetySourceData unused = safetyCenterManager.getSafetySourceData("id2");
+ }
+ });
+ assertThrowsIllegalArgumentExceptionForSource(
+ "id1",
+ new ThrowingRunnable() {
+ @Override
+ public void run() {
+ safetyCenterManager.reportSafetySourceError(
+ "id1",
+ new SafetySourceErrorDetails(
+ new SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
+ .setRefreshBroadcastId("id")
+ .build()));
+ }
+ });
+ }
+
+ private static void assertThrowsIllegalArgumentExceptionForSource(
+ String safetySourceId, ThrowingRunnable runnable) {
+ IllegalArgumentException e = assertThrows(IllegalArgumentException.class, runnable);
+ assertThat(e).hasMessageThat().contains(safetySourceId);
+ }
}