Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28fc41c4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Restrict guest user to configure WiFi by QR code" into tm-qpr-dev am:...

Merge "Restrict guest user to configure WiFi by QR code" into tm-qpr-dev am: cc0754b4 am: 6da32e8c

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/18869535



Change-Id: I48c23041bbe828678b6f179312ace6d920bb03f7
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 5ad4f1e6 6da32e8c
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -17,13 +17,16 @@
package com.android.settings.wifi.dpp;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.UserManager;
import android.provider.Settings;
import android.util.EventLog;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
@@ -116,6 +119,13 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements

    @Override
    protected void handleIntent(Intent intent) {
        if (isGuestUser(getApplicationContext())) {
            Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!");
            EventLog.writeEvent(0x534e4554, "224772890", -1 /* UID */, "User is a guest");
            finish();
            return;
        }

        String action = intent != null ? intent.getAction() : null;
        if (action == null) {
            finish();
@@ -185,7 +195,8 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements
        }
    }

    private void showQrCodeScannerFragment() {
    @VisibleForTesting
    void showQrCodeScannerFragment() {
        WifiDppQrCodeScannerFragment fragment =
                (WifiDppQrCodeScannerFragment) mFragmentManager.findFragmentByTag(
                        WifiDppUtils.TAG_FRAGMENT_QR_CODE_SCANNER);
@@ -384,4 +395,11 @@ public class WifiDppConfiguratorActivity extends WifiDppBaseActivity implements

        return null;
    }

    private static boolean isGuestUser(Context context) {
        if (context == null) return false;
        final UserManager userManager = context.getSystemService(UserManager.class);
        if (userManager == null) return false;
        return userManager.isGuestUser();
    }
}
+62 −0
Original line number Diff line number Diff line
@@ -16,16 +16,78 @@

package com.android.settings.wifi.dpp;

import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.Intent;
import android.os.UserManager;

import androidx.test.core.app.ApplicationProvider;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;

@RunWith(RobolectricTestRunner.class)
public class WifiDppConfiguratorActivityTest {

    @Rule
    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
    @Spy
    Context mContext = ApplicationProvider.getApplicationContext();
    @Mock
    UserManager mUserManager;

    WifiDppConfiguratorActivity mActivity;
    Intent mIntent;

    @Before
    public void setUp() {
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.isGuestUser()).thenReturn(false);

        mIntent = new Intent(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
        mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
        mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WPA");
        mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "\\012345678,");

        mActivity = spy(Robolectric.setupActivity(WifiDppConfiguratorActivity.class));
        when(mActivity.getApplicationContext()).thenReturn(mContext);
    }

    @Test
    public void launchActivity_noIntentAction_shouldNotFatalException() {
        WifiDppConfiguratorActivity wifiDppConfiguratorActivity =
                Robolectric.setupActivity(WifiDppConfiguratorActivity.class);
    }

    @Test
    public void handleIntent_isGuestUser_shouldFinish() {
        when(mUserManager.isGuestUser()).thenReturn(true);

        mActivity.handleIntent(mIntent);

        verify(mActivity).finish();
    }

    @Test
    public void handleIntent_notGuestUser_shouldNotFinish() {
        when(mUserManager.isGuestUser()).thenReturn(false);
        doNothing().when(mActivity).showQrCodeScannerFragment();

        mActivity.handleIntent(mIntent);

        verify(mActivity, never()).finish();
    }
}