Merge "Adding an option to install a certificate from the CA certificate menu" into sc-dev

This commit is contained in:
Betty Chang
2021-05-27 09:04:42 +00:00
committed by Android (Google) Code Review
4 changed files with 90 additions and 11 deletions

View File

@@ -18,11 +18,17 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.IpConfiguration;
import android.net.wifi.WifiConfiguration;
@@ -30,12 +36,14 @@ import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiEnterpriseConfig.Eap;
import android.net.wifi.WifiEnterpriseConfig.Phase2;
import android.net.wifi.WifiManager;
import android.os.UserHandle;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.LinearLayout;
@@ -54,6 +62,7 @@ import com.google.common.collect.ImmutableList;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
@@ -81,6 +90,7 @@ public class WifiConfigController2Test {
private Spinner mHiddenSettingsSpinner;
private Spinner mEapCaCertSpinner;
private Spinner mEapUserCertSpinner;
private String mUnspecifiedCertString;
private String mUseSystemCertsString;
private String mDoNotProvideEapUserCertString;
private ShadowSubscriptionManager mShadowSubscriptionManager;
@@ -107,10 +117,16 @@ public class WifiConfigController2Test {
private static final String SAVED_CA_CERT = "saved CA cert";
private static final String SAVED_USER_CERT = "saved user cert";
private static final int POSITION_SYSTEM_CERT = 1;
private static final int POSITION_INSTALL_CERT = 2;
private static final String ACTION_INSTALL_CERTS = "android.credentials.INSTALL";
private static final String KEY_INSTALL_CERTIFICATE = "certificate_install_usage";
private static final String INSTALL_CERTIFICATE_VALUE = "wifi";
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mContext = spy(RuntimeEnvironment.application);
when(mConfigUiBase.getContext()).thenReturn(mContext);
when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_PSK);
mView = LayoutInflater.from(mContext).inflate(R.layout.wifi_dialog, null);
@@ -119,6 +135,7 @@ public class WifiConfigController2Test {
mEapCaCertSpinner = mView.findViewById(R.id.ca_cert);
mEapUserCertSpinner = mView.findViewById(R.id.user_cert);
mUseSystemCertsString = mContext.getString(R.string.wifi_use_system_certs);
mUnspecifiedCertString = mContext.getString(R.string.wifi_unspecified);
mDoNotProvideEapUserCertString =
mContext.getString(R.string.wifi_do_not_provide_eap_user_cert);
ipSettingsSpinner.setSelection(DHCP);
@@ -709,7 +726,6 @@ public class WifiConfigController2Test {
Phase2.AKA_PRIME);
}
@Test
public void getEapConfig_withPeapPhase2Unknown_shouldContainNoneMethod() {
setUpModifyingSavedPeapConfigController();
@@ -835,9 +851,30 @@ public class WifiConfigController2Test {
public void loadCaCertificateValue_shouldPersistentAsDefault() {
setUpModifyingSavedCertificateConfigController(null, null);
mEapCaCertSpinner.setSelection(POSITION_SYSTEM_CERT);
assertThat(mEapCaCertSpinner.getSelectedItem()).isEqualTo(mUseSystemCertsString);
}
@Test
public void onItemSelected_shouldPersistentInstallCertsAndStartInstallActivity() {
String installCertsString = "install_certs";
Spinner eapCaCertSpinner = mock(Spinner.class);
AdapterView view = mock(AdapterView.class);
when(eapCaCertSpinner.getItemAtPosition(anyInt())).thenReturn(view);
when(view.toString()).thenReturn(installCertsString);
mController.mInstallCertsString = installCertsString;
mController.mEapCaCertSpinner = eapCaCertSpinner;
mController.onItemSelected(eapCaCertSpinner, null, POSITION_INSTALL_CERT, 0);
final ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
verify(mContext).startActivity(argumentCaptor.capture());
final Intent intent = argumentCaptor.getValue();
assertThat(intent.getAction()).isEqualTo(ACTION_INSTALL_CERTS);
assertThat(intent.getExtra(KEY_INSTALL_CERTIFICATE, ""))
.isEqualTo(INSTALL_CERTIFICATE_VALUE);
}
@Test
public void loadSavedCaCertificateValue_shouldBeCorrectValue() {
setUpModifyingSavedCertificateConfigController(SAVED_CA_CERT, null);