Home | History | Annotate | Download | only in firmwareversion
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.settings.deviceinfo.firmwareversion;
     18 
     19 import static com.android.settings.deviceinfo.firmwareversion.SecurityPatchLevelDialogController.SECURITY_PATCH_LABEL_ID;
     20 import static com.android.settings.deviceinfo.firmwareversion.SecurityPatchLevelDialogController.SECURITY_PATCH_VALUE_ID;
     21 import static org.mockito.ArgumentMatchers.any;
     22 import static org.mockito.ArgumentMatchers.anyInt;
     23 import static org.mockito.ArgumentMatchers.eq;
     24 import static org.mockito.Mockito.never;
     25 import static org.mockito.Mockito.spy;
     26 import static org.mockito.Mockito.verify;
     27 import static org.mockito.Mockito.when;
     28 
     29 import android.content.Context;
     30 import android.os.Build;
     31 import android.view.View;
     32 
     33 import com.android.settings.testutils.SettingsRobolectricTestRunner;
     34 import com.android.settingslib.wrapper.PackageManagerWrapper;
     35 
     36 import org.junit.Before;
     37 import org.junit.Test;
     38 import org.junit.runner.RunWith;
     39 import org.mockito.Mock;
     40 import org.mockito.MockitoAnnotations;
     41 import org.robolectric.RuntimeEnvironment;
     42 import org.robolectric.util.ReflectionHelpers;
     43 
     44 import java.util.Collections;
     45 
     46 @RunWith(SettingsRobolectricTestRunner.class)
     47 public class SecurityPatchLevelDialogControllerTest {
     48 
     49     @Mock
     50     private PackageManagerWrapper mPackageManager;
     51     @Mock
     52     private FirmwareVersionDialogFragment mDialog;
     53     @Mock
     54     private View mView;
     55 
     56     private Context mContext;
     57     private SecurityPatchLevelDialogController mController;
     58 
     59     @Before
     60     public void setup() {
     61         MockitoAnnotations.initMocks(this);
     62         mContext = spy(RuntimeEnvironment.application);
     63         when(mDialog.getContext()).thenReturn(mContext);
     64     }
     65 
     66     @Test
     67     public void initialize_noPatchInfo_shouldRemoveSettingFromDialog() {
     68         ReflectionHelpers.setStaticField(Build.VERSION.class, "SECURITY_PATCH", "");
     69         mController = new SecurityPatchLevelDialogController(mDialog);
     70 
     71         mController.initialize();
     72 
     73         verify(mDialog).removeSettingFromScreen(SECURITY_PATCH_VALUE_ID);
     74         verify(mDialog).removeSettingFromScreen(SECURITY_PATCH_LABEL_ID);
     75     }
     76 
     77     @Test
     78     public void initialize_patchInfoAvailable_shouldRegisterListeners() {
     79         ReflectionHelpers.setStaticField(Build.VERSION.class, "SECURITY_PATCH", "foobar");
     80         mController = new SecurityPatchLevelDialogController(mDialog);
     81 
     82         mController.initialize();
     83 
     84         verify(mDialog).registerClickListener(eq(SECURITY_PATCH_LABEL_ID), any());
     85         verify(mDialog).registerClickListener(eq(SECURITY_PATCH_VALUE_ID), any());
     86     }
     87 
     88     @Test
     89     public void onClick_noActivityIntent_shouldDoNothing() {
     90         when(mPackageManager.queryIntentActivities(any(), anyInt()))
     91             .thenReturn(Collections.emptyList());
     92         mController = new SecurityPatchLevelDialogController(mDialog);
     93         ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
     94 
     95         mController.onClick(mView);
     96 
     97         verify(mContext, never()).startActivity(any());
     98     }
     99 
    100     @Test
    101     public void onClick_activityIntentFound_shouldStartActivity() {
    102         when(mPackageManager.queryIntentActivities(any(), anyInt()))
    103             .thenReturn(Collections.singletonList(null));
    104         mController = new SecurityPatchLevelDialogController(mDialog);
    105         ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
    106 
    107         mController.onClick(mView);
    108 
    109         verify(mContext).startActivity(any());
    110     }
    111 }
    112