diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-01-20 02:17:14 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-01-20 02:17:14 +0000 |
commit | 4f18cee4855e26db8139479a5949348b28cd955a (patch) | |
tree | 4865f9fe699e4ba1d90875c70d15bf4da9cf512b | |
parent | cb9a43ed09f9f295a01916a47124fedf9e4c1ada (diff) | |
parent | 068bef20c42e2dd741608f6e602be941bcfe75a2 (diff) | |
download | ImsServiceEntitlement-4f18cee4855e26db8139479a5949348b28cd955a.tar.gz |
Snap for 7090944 from 068bef20c42e2dd741608f6e602be941bcfe75a2 to sc-d1-release
Change-Id: I2337729ea6fcd294956ea6dce85d3dc431febc67
-rw-r--r-- | src/com/android/ImsServiceEntitlement/ts43/Ts43VowifiStatus.java | 66 | ||||
-rw-r--r-- | tests/src/com/android/imsserviceentitlement/WfcActivationControllerTest.java | 174 |
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); } |