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

Commit 184bca9c authored by Kai Zhou's avatar Kai Zhou
Browse files

Add unit test in WifiDppConfiguratorActivity

* Bug: b/349252886
* Settings Intake: b/329012096

Test: atest tests/unit/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
Flag: com.android.settings.flags.enable_wifi_sharing_runtime_fragment

Change-Id: I951ed57acd40505c1ccecdb8420d197f7edd42f7
parent 06118ac0
Loading
Loading
Loading
Loading
+70 −1
Original line number Diff line number Diff line
@@ -20,15 +20,33 @@ import static android.os.UserManager.DISALLOW_ADD_WIFI_CONFIG;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.never;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;

import android.content.Context;
import android.content.Intent;
import android.os.UserManager;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.settings.flags.Flags;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.wifi.factory.WifiFeatureProvider;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -44,18 +62,36 @@ public class WifiDppConfiguratorActivityTest {

    @Rule
    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    @Spy
    private final Context mContext = ApplicationProvider.getApplicationContext();
    @Mock
    private UserManager mUserManager;
    @Mock
    private FragmentManager mFragmentManager;

    // Mock, created by FakeFeatureFactory
    private WifiFeatureProvider mWifiFeatureProviderMock;

    @Spy
    private WifiDppConfiguratorActivity mActivity;

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

        mActivity = new WifiDppConfiguratorActivity();
        mActivity.mFragmentManager = mFragmentManager;
        doReturn(mContext).when(mActivity).getApplicationContext();

        FragmentTransaction mockTransaction = mock(FragmentTransaction.class);
        when(mFragmentManager.beginTransaction()).thenReturn(mockTransaction);
        when(mockTransaction.replace(anyInt(), any(Fragment.class), anyString()))
                .thenReturn(mockTransaction);

        FakeFeatureFactory featureFactory = FakeFeatureFactory.setupForTest();
        mWifiFeatureProviderMock = featureFactory.mWifiFeatureProvider;
    }

    @Test
@@ -71,4 +107,37 @@ public class WifiDppConfiguratorActivityTest {

        assertThat(mActivity.isAddWifiConfigAllowed(mContext)).isFalse();
    }


    @Test
    @EnableFlags(Flags.FLAG_ENABLE_WIFI_SHARING_RUNTIME_FRAGMENT)
    public void showQrCodeGeneratorFragment_shouldUseFeatureFactory() {
        when(mUserManager.isGuestUser()).thenReturn(false);
        when(mWifiFeatureProviderMock.getWifiDppQrCodeGeneratorFragment())
                .thenReturn(new WifiDppQrCodeGeneratorFragment());

        mActivity.handleIntent(createQrCodeGeneratorIntent());

        verify(mWifiFeatureProviderMock).getWifiDppQrCodeGeneratorFragment();
    }

    @Test
    @DisableFlags(Flags.FLAG_ENABLE_WIFI_SHARING_RUNTIME_FRAGMENT)
    public void showQrCodeGeneratorFragment_shouldNotUseFeatureFactory() {
        when(mUserManager.isGuestUser()).thenReturn(false);

        mActivity.handleIntent(createQrCodeGeneratorIntent());

        verify(mWifiFeatureProviderMock, never())
                .getWifiDppQrCodeGeneratorFragment();
    }

    private static Intent createQrCodeGeneratorIntent() {
        Intent intent = new Intent(
                WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR);
        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SSID, "GoogleGuest");
        intent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WPA");
        intent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "\\012345678,");
        return intent;
    }
}