Home | History | Annotate | Download | only in development
      1 package com.android.settings.development;
      2 
      3 import static org.mockito.ArgumentMatchers.any;
      4 import static org.mockito.Mockito.doReturn;
      5 import static org.mockito.Mockito.never;
      6 import static org.mockito.Mockito.spy;
      7 import static org.mockito.Mockito.verify;
      8 import static org.mockito.Mockito.when;
      9 
     10 import android.app.backup.IBackupManager;
     11 import android.content.Context;
     12 import android.os.RemoteException;
     13 import android.os.UserManager;
     14 import android.support.v7.preference.Preference;
     15 import android.support.v7.preference.PreferenceScreen;
     16 
     17 import com.android.settings.R;
     18 import com.android.settings.testutils.SettingsRobolectricTestRunner;
     19 
     20 import org.junit.Before;
     21 import org.junit.Test;
     22 import org.junit.runner.RunWith;
     23 import org.mockito.Mock;
     24 import org.mockito.MockitoAnnotations;
     25 import org.robolectric.RuntimeEnvironment;
     26 import org.robolectric.util.ReflectionHelpers;
     27 
     28 @RunWith(SettingsRobolectricTestRunner.class)
     29 public class LocalBackupPasswordPreferenceControllerTest {
     30 
     31     @Mock
     32     private Preference mPreference;
     33     @Mock
     34     private PreferenceScreen mScreen;
     35     @Mock
     36     private UserManager mUserManager;
     37     @Mock
     38     private IBackupManager mBackupManager;
     39 
     40     private Context mContext;
     41     private LocalBackupPasswordPreferenceController mController;
     42 
     43     @Before
     44     public void setup() {
     45         MockitoAnnotations.initMocks(this);
     46         mContext = RuntimeEnvironment.application;
     47         mController = spy(new LocalBackupPasswordPreferenceController(mContext));
     48         ReflectionHelpers.setField(mController, "mUserManager", mUserManager);
     49         when(mScreen.findPreference(mController.getPreferenceKey()))
     50             .thenReturn(mPreference);
     51     }
     52 
     53     @Test
     54     public void updateState_hasBackupPassword_preferenceShouldHavePasswordSetSummary()
     55             throws RemoteException {
     56         ReflectionHelpers.setField(mController, "mBackupManager", mBackupManager);
     57         doReturn(true).when(mController).isAdminUser();
     58         when(mBackupManager.hasBackupPassword()).thenReturn(true);
     59         mController.displayPreference(mScreen);
     60 
     61         mController.updateState(mPreference);
     62 
     63         verify(mPreference).setSummary(R.string.local_backup_password_summary_change);
     64     }
     65 
     66     @Test
     67     public void updateState_noBackupPassword_preferenceShouldHaveNoPasswordSetSummary()
     68             throws RemoteException {
     69         ReflectionHelpers.setField(mController, "mBackupManager", mBackupManager);
     70         doReturn(true).when(mController).isAdminUser();
     71         when(mBackupManager.hasBackupPassword()).thenReturn(false);
     72         mController.displayPreference(mScreen);
     73 
     74         mController.updateState(mPreference);
     75 
     76         verify(mPreference).setSummary(R.string.local_backup_password_summary_none);
     77     }
     78 
     79     @Test
     80     public void updateState_backupManagerIsNull_shouldDisablePreference() throws RemoteException {
     81         ReflectionHelpers.setField(mController, "mBackupManager", null);
     82         doReturn(true).when(mController).isAdminUser();
     83         when(mBackupManager.hasBackupPassword()).thenReturn(true);
     84         mController.displayPreference(mScreen);
     85 
     86         mController.updateState(mPreference);
     87 
     88         verify(mPreference).setEnabled(false);
     89         verify(mPreference, never()).setSummary(any());
     90     }
     91 
     92     @Test
     93     public void updateState_backupManagerIsNotNullAndNotAdminUser_shouldDisablePreference()
     94             throws RemoteException {
     95         ReflectionHelpers.setField(mController, "mBackupManager", mBackupManager);
     96         doReturn(false).when(mController).isAdminUser();
     97         when(mBackupManager.hasBackupPassword()).thenReturn(true);
     98 
     99         mController.updateState(mPreference);
    100 
    101         verify(mPreference).setEnabled(false);
    102         verify(mPreference, never()).setSummary(any());
    103     }
    104 
    105     @Test
    106     public void updateState_backupManagerIsNotNullAndAdminUser_shouldEnablePreference()
    107             throws RemoteException {
    108         ReflectionHelpers.setField(mController, "mBackupManager", mBackupManager);
    109         doReturn(true).when(mController).isAdminUser();
    110         when(mBackupManager.hasBackupPassword()).thenReturn(true);
    111 
    112         mController.updateState(mPreference);
    113 
    114         verify(mPreference).setEnabled(true);
    115         verify(mPreference, never()).setSummary(any());
    116     }
    117 }
    118