summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-01-20 02:17:14 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-01-20 02:17:14 +0000
commit4f18cee4855e26db8139479a5949348b28cd955a (patch)
tree4865f9fe699e4ba1d90875c70d15bf4da9cf512b
parentcb9a43ed09f9f295a01916a47124fedf9e4c1ada (diff)
parent068bef20c42e2dd741608f6e602be941bcfe75a2 (diff)
downloadImsServiceEntitlement-4f18cee4855e26db8139479a5949348b28cd955a.tar.gz
Snap for 7090944 from 068bef20c42e2dd741608f6e602be941bcfe75a2 to sc-d1-release
Change-Id: I2337729ea6fcd294956ea6dce85d3dc431febc67
-rw-r--r--src/com/android/ImsServiceEntitlement/ts43/Ts43VowifiStatus.java66
-rw-r--r--tests/src/com/android/imsserviceentitlement/WfcActivationControllerTest.java174
2 files changed, 200 insertions, 40 deletions
diff --git a/src/com/android/ImsServiceEntitlement/ts43/Ts43VowifiStatus.java b/src/com/android/ImsServiceEntitlement/ts43/Ts43VowifiStatus.java
index 856e2e4..36199e0 100644
--- a/src/com/android/ImsServiceEntitlement/ts43/Ts43VowifiStatus.java
+++ b/src/com/android/ImsServiceEntitlement/ts43/Ts43VowifiStatus.java
@@ -22,47 +22,57 @@ import com.android.imsserviceentitlement.ts43.Ts43Constants.ResponseXmlNode;
import com.android.imsserviceentitlement.utils.XmlDoc;
import com.google.auto.value.AutoValue;
+import com.google.common.annotations.VisibleForTesting;
/**
* Implementation of WFC entitlement status and server data availability for TS.43 entitlement
* solution.
*/
@AutoValue
+@VisibleForTesting
public abstract class Ts43VowifiStatus implements VowifiStatus {
- static class EntitlementStatus {
- private EntitlementStatus() {}
-
- static final int DISABLED = 0;
- static final int ENABLED = 1;
- static final int INCOMPATIBLE = 2;
- static final int PROVISIONING = 3;
+ /** The entitlement status of vowifi service. */
+ @VisibleForTesting
+ public static class EntitlementStatus {
+ public EntitlementStatus() {}
+
+ public static final int DISABLED = 0;
+ public static final int ENABLED = 1;
+ public static final int INCOMPATIBLE = 2;
+ public static final int PROVISIONING = 3;
}
- static class AddrStatus {
- private AddrStatus() {}
-
- static final int NOT_AVAILABLE = 0;
- static final int AVAILABLE = 1;
- static final int NOT_REQUIRED = 2;
- static final int IN_PROGRESS = 3;
+ /** The emergency address status of vowifi service. */
+ @VisibleForTesting
+ public static class AddrStatus {
+ public AddrStatus() {}
+
+ public static final int NOT_AVAILABLE = 0;
+ public static final int AVAILABLE = 1;
+ public static final int NOT_REQUIRED = 2;
+ public static final int IN_PROGRESS = 3;
}
- static class TcStatus {
- private TcStatus() {}
-
- static final int NOT_AVAILABLE = 0;
- static final int AVAILABLE = 1;
- static final int NOT_REQUIRED = 2;
- static final int IN_PROGRESS = 3;
+ /** The terms and condition status of vowifi service. */
+ @VisibleForTesting
+ public static class TcStatus {
+ public TcStatus() {}
+
+ public static final int NOT_AVAILABLE = 0;
+ public static final int AVAILABLE = 1;
+ public static final int NOT_REQUIRED = 2;
+ public static final int IN_PROGRESS = 3;
}
- static class ProvStatus {
- private ProvStatus() {}
-
- static final int NOT_PROVISIONED = 0;
- static final int PROVISIONED = 1;
- static final int NOT_REQUIRED = 2;
- static final int IN_PROGRESS = 3;
+ /** The provision status of vowifi service. */
+ @VisibleForTesting
+ public static class ProvStatus {
+ public ProvStatus() {}
+
+ public static final int NOT_PROVISIONED = 0;
+ public static final int PROVISIONED = 1;
+ public static final int NOT_REQUIRED = 2;
+ public static final int IN_PROGRESS = 3;
}
/** The entitlement status of vowifi service. */
diff --git a/tests/src/com/android/imsserviceentitlement/WfcActivationControllerTest.java b/tests/src/com/android/imsserviceentitlement/WfcActivationControllerTest.java
index e95612d..001a6a6 100644
--- a/tests/src/com/android/imsserviceentitlement/WfcActivationControllerTest.java
+++ b/tests/src/com/android/imsserviceentitlement/WfcActivationControllerTest.java
@@ -18,6 +18,7 @@ package com.android.imsserviceentitlement;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.Activity;
@@ -32,12 +33,21 @@ import android.telephony.TelephonyManager;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.runner.AndroidJUnit4;
+import com.android.imsserviceentitlement.entitlement.EntitlementResult;
+import com.android.imsserviceentitlement.ts43.Ts43VowifiStatus;
+import com.android.imsserviceentitlement.ts43.Ts43VowifiStatus.AddrStatus;
+import com.android.imsserviceentitlement.ts43.Ts43VowifiStatus.EntitlementStatus;
+import com.android.imsserviceentitlement.ts43.Ts43VowifiStatus.ProvStatus;
+import com.android.imsserviceentitlement.ts43.Ts43VowifiStatus.TcStatus;
+
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import java.lang.reflect.Field;
@@ -46,14 +56,18 @@ import java.lang.reflect.Field;
// TODO(b/176127289) add tests
@RunWith(AndroidJUnit4.class)
public class WfcActivationControllerTest {
+ @Rule public final MockitoRule rule = MockitoJUnit.rule();
@Mock private TelephonyManager mTelephonyManager;
@Mock private WfcActivationApi mActivationApi;
@Mock private WfcActivationUi mActivationUi;
@Mock private ConnectivityManager mConnectivityManager;
@Mock private NetworkInfo mNetworkInfo;
- private static final String WEBVIEW_JS_CONTROLLER_NAME = "webviewJsControllerName";
private static final int SUB_ID = 1;
+ private static final String EMERGENCY_ADDRESS_WEB_URL = "webUrl";
+ private static final String EMERGENCY_ADDRESS_WEB_DATA = "webData";
+ private static final String TERMS_AND_CONDITION_WEB_URL = "tncUrl";
+ private static final String WEBVIEW_JS_CONTROLLER_NAME = "webviewJsControllerName";
private WfcActivationController mWfcActivationController;
private Context mContext;
@@ -61,7 +75,6 @@ public class WfcActivationControllerTest {
@Before
public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
when(mActivationApi.getWebviewJsControllerName()).thenReturn(WEBVIEW_JS_CONTROLLER_NAME);
@@ -69,7 +82,6 @@ public class WfcActivationControllerTest {
when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
setNetworkConnected(true);
- // now do not need to try/catch
Field field = EntitlementUtils.class.getDeclaredField("useDirectExecutorForTest");
field.setAccessible(true);
field.set(null, true);
@@ -83,8 +95,11 @@ public class WfcActivationControllerTest {
mWfcActivationController.startFlow();
- verifyGeneralWaitingUi(mOrderVerifier, R.string.activate_title);
- verifyErrorUi(mOrderVerifier, R.string.activate_title, R.string.wfc_activation_error);
+ verifyGeneralWaitingUiInOrder(mOrderVerifier, R.string.activate_title);
+ verifyErrorUiInOrder(
+ mOrderVerifier,
+ R.string.activate_title,
+ R.string.wfc_activation_error);
}
@Test
@@ -95,8 +110,8 @@ public class WfcActivationControllerTest {
mWfcActivationController.startFlow();
- verifyGeneralWaitingUi(mOrderVerifier, R.string.e911_title);
- verifyErrorUi(mOrderVerifier, R.string.e911_title, R.string.address_update_error);
+ verifyGeneralWaitingUiInOrder(mOrderVerifier, R.string.e911_title);
+ verifyErrorUiInOrder(mOrderVerifier, R.string.e911_title, R.string.address_update_error);
}
@Test
@@ -107,8 +122,11 @@ public class WfcActivationControllerTest {
mWfcActivationController.startFlow();
- verifyGeneralWaitingUi(mOrderVerifier, R.string.tos_title);
- verifyErrorUi(mOrderVerifier, R.string.tos_title, R.string.show_terms_and_condition_error);
+ verifyGeneralWaitingUiInOrder(mOrderVerifier, R.string.tos_title);
+ verifyErrorUiInOrder(
+ mOrderVerifier,
+ R.string.tos_title,
+ R.string.show_terms_and_condition_error);
}
@Test
@@ -139,6 +157,128 @@ public class WfcActivationControllerTest {
0);
}
+ @Test
+ public void handleEntitlementStatusForActivation_isVowifiEntitledTrue_setActivityResultOk() {
+ EntitlementResult mEntitlementResult =
+ EntitlementResult.builder()
+ .setVowifiStatus(
+ Ts43VowifiStatus.builder()
+ .setEntitlementStatus(EntitlementStatus.ENABLED)
+ .setTcStatus(TcStatus.AVAILABLE)
+ .setAddrStatus(AddrStatus.AVAILABLE)
+ .setProvStatus(ProvStatus.PROVISIONED)
+ .build())
+ .build();
+ when(mActivationApi.checkEntitlementStatus()).thenReturn(mEntitlementResult);
+ buildActivity(ActivityConstants.LAUNCH_APP_ACTIVATE);
+
+ mWfcActivationController.evaluateEntitlementStatus();
+
+ verify(mActivationApi).onWfcSettingChanged(true, mEntitlementResult);
+ verify(mActivationUi).setResultAndFinish(Activity.RESULT_OK);
+ }
+
+ @Test
+ public void handleEntitlementStatusForActivation_isServerDataMissingTrue_showWebview() {
+ EntitlementResult mEntitlementResult =
+ EntitlementResult.builder()
+ .setVowifiStatus(
+ Ts43VowifiStatus.builder()
+ .setEntitlementStatus(EntitlementStatus.DISABLED)
+ .setTcStatus(TcStatus.NOT_AVAILABLE)
+ .setAddrStatus(AddrStatus.NOT_AVAILABLE)
+ .build())
+ .setEmergencyAddressWebUrl(EMERGENCY_ADDRESS_WEB_URL)
+ .setEmergencyAddressWebData(EMERGENCY_ADDRESS_WEB_DATA)
+ .build();
+ when(mActivationApi.checkEntitlementStatus()).thenReturn(mEntitlementResult);
+ buildActivity(ActivityConstants.LAUNCH_APP_ACTIVATE);
+
+ mWfcActivationController.evaluateEntitlementStatus();
+
+ verify(mActivationUi)
+ .showWebview(
+ EMERGENCY_ADDRESS_WEB_URL,
+ EMERGENCY_ADDRESS_WEB_DATA,
+ WEBVIEW_JS_CONTROLLER_NAME);
+ }
+
+ @Test
+ public void handleEntitlementStatusForActivation_isIncompatibleTrue_showErrorUi() {
+ EntitlementResult mEntitlementResult =
+ EntitlementResult.builder()
+ .setVowifiStatus(
+ Ts43VowifiStatus.builder()
+ .setEntitlementStatus(EntitlementStatus.INCOMPATIBLE)
+ .build())
+ .build();
+ when(mActivationApi.checkEntitlementStatus()).thenReturn(mEntitlementResult);
+ buildActivity(ActivityConstants.LAUNCH_APP_ACTIVATE);
+
+ mWfcActivationController.evaluateEntitlementStatus();
+
+ verifyErrorUi(R.string.activate_title, R.string.failure_contact_carrier);
+ }
+
+ @Test
+ public void handleEntitlementStatusForActivation_unexpectedStatus_showGeneralErrorUi() {
+ EntitlementResult mEntitlementResult =
+ EntitlementResult.builder()
+ .setVowifiStatus(
+ Ts43VowifiStatus.builder()
+ .setEntitlementStatus(EntitlementStatus.DISABLED)
+ .setTcStatus(TcStatus.IN_PROGRESS)
+ .setAddrStatus(AddrStatus.IN_PROGRESS)
+ .build())
+ .build();
+ when(mActivationApi.checkEntitlementStatus()).thenReturn(mEntitlementResult);
+ buildActivity(ActivityConstants.LAUNCH_APP_ACTIVATE);
+
+ mWfcActivationController.evaluateEntitlementStatus();
+
+ verifyErrorUi(R.string.activate_title, R.string.wfc_activation_error);
+ }
+
+ @Test
+ public void handleEntitlementStatusAfterActivation_isVowifiEntitledTrue_setActivityResultOk() {
+ EntitlementResult mEntitlementResult =
+ EntitlementResult.builder()
+ .setVowifiStatus(
+ Ts43VowifiStatus.builder()
+ .setEntitlementStatus(EntitlementStatus.ENABLED)
+ .setTcStatus(TcStatus.AVAILABLE)
+ .setAddrStatus(AddrStatus.AVAILABLE)
+ .setProvStatus(ProvStatus.PROVISIONED)
+ .build())
+ .build();
+ when(mActivationApi.checkEntitlementStatus()).thenReturn(mEntitlementResult);
+ buildActivity(ActivityConstants.LAUNCH_APP_ACTIVATE);
+
+ mWfcActivationController.reevaluateEntitlementStatus();
+
+ verify(mActivationApi).onWfcSettingChanged(true, mEntitlementResult);
+ verify(mActivationUi).setResultAndFinish(Activity.RESULT_OK);
+ }
+
+ @Test
+ public void handleEntitlementStatusAfterActivation_unexpectedStatus_showGeneralErrorUi() {
+ EntitlementResult mEntitlementResult =
+ EntitlementResult.builder()
+ .setVowifiStatus(
+ Ts43VowifiStatus.builder()
+ .setEntitlementStatus(EntitlementStatus.DISABLED)
+ .setTcStatus(TcStatus.IN_PROGRESS)
+ .setAddrStatus(AddrStatus.IN_PROGRESS)
+ .build())
+ .build();
+ when(mActivationApi.checkEntitlementStatus()).thenReturn(mEntitlementResult);
+ buildActivity(ActivityConstants.LAUNCH_APP_ACTIVATE);
+
+ mWfcActivationController.reevaluateEntitlementStatus();
+
+ verifyErrorUi(R.string.activate_title, R.string.wfc_activation_error);
+ }
+
private void buildActivity(int extraLaunchCarrierApp) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, SUB_ID);
@@ -155,7 +295,17 @@ public class WfcActivationControllerTest {
when(mNetworkInfo.isConnected()).thenReturn(isConnected);
}
- private void verifyErrorUi(InOrder inOrder, int title, int errorMesssage) {
+ private void verifyErrorUi(int title, int errorMesssage) {
+ verify(mActivationUi)
+ .showActivationUi(
+ title,
+ errorMesssage,
+ false, R.string.ok,
+ WfcActivationUi.RESULT_FAILURE,
+ 0);
+ }
+
+ private void verifyErrorUiInOrder(InOrder inOrder, int title, int errorMesssage) {
inOrder.verify(mActivationUi)
.showActivationUi(
title,
@@ -165,7 +315,7 @@ public class WfcActivationControllerTest {
0);
}
- private void verifyGeneralWaitingUi(InOrder inOrder, int title) {
+ private void verifyGeneralWaitingUiInOrder(InOrder inOrder, int title) {
inOrder.verify(mActivationUi)
.showActivationUi(title, R.string.progress_text, true, 0, 0, 0);
}