}
}
+ @VisibleForTesting
+ KeyStore getKeyStore() {
+ return KeyStore.getInstance();
+ }
+
private void loadCertificates(
Spinner spinner,
String prefix,
if (showUsePreinstalledCertOption) {
certs.add(mUseSystemCertsString);
}
- certs.addAll(
- Arrays.asList(KeyStore.getInstance().list(prefix, android.os.Process.WIFI_UID)));
+ try {
+ certs.addAll(
+ Arrays.asList(getKeyStore().list(prefix, android.os.Process.WIFI_UID)));
+ } catch (Exception e) {
+ Log.e(TAG, "can't get the certificate list from KeyStore");
+ }
certs.add(noCertificateString);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.os.ServiceSpecificException;
+import android.security.KeyStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
private View mView;
@Mock
private AccessPoint mAccessPoint;
+ @Mock
+ private KeyStore mKeyStore;
public WifiConfigController mController;
private static final String HEX_PSK = "01234567012345670123456701234567012345670123456701234567"
assertThat(mView.findViewById(R.id.eap).getVisibility()).isEqualTo(View.GONE);
}
+ @Test
+ public void loadCertificates_keyStoreListFail_shouldNotCrash() {
+ // Set up
+ when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_EAP);
+ when(mKeyStore.list(anyString()))
+ .thenThrow(new ServiceSpecificException(-1, "permission error"));
+
+ mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint,
+ WifiConfigUiBase.MODE_CONNECT);
+
+ // Verify that the EAP method menu is visible.
+ assertThat(mView.findViewById(R.id.eap).getVisibility()).isEqualTo(View.VISIBLE);
+ // No Crash
+ }
+
public class TestWifiConfigController extends WifiConfigController {
private TestWifiConfigController(
boolean isSplitSystemUser() {
return false;
}
+
+ @Override
+ KeyStore getKeyStore() { return mKeyStore; }
}
}