OSDN Git Service

Use a different string for vpn summary.
[android-x86/packages-apps-Settings.git] / tests / robotests / src / com / android / settings / network / VpnPreferenceControllerTest.java
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.network;
18
19 import static com.google.common.truth.Truth.assertThat;
20 import static android.arch.lifecycle.Lifecycle.Event.ON_PAUSE;
21 import static android.arch.lifecycle.Lifecycle.Event.ON_RESUME;
22 import static org.mockito.Matchers.any;
23 import static org.mockito.Matchers.anyString;
24 import static org.mockito.Mockito.doReturn;
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.arch.lifecycle.LifecycleOwner;
30 import android.content.Context;
31 import android.net.ConnectivityManager;
32 import android.net.IConnectivityManager;
33 import android.net.NetworkRequest;
34 import android.os.IBinder;
35 import android.os.UserHandle;
36 import android.support.v7.preference.Preference;
37 import android.support.v7.preference.PreferenceScreen;
38
39 import com.android.internal.net.VpnConfig;
40 import com.android.settings.testutils.SettingsRobolectricTestRunner;
41 import com.android.settingslib.core.lifecycle.Lifecycle;
42
43 import org.junit.Before;
44 import org.junit.Test;
45 import org.junit.runner.RunWith;
46 import org.mockito.Mock;
47 import org.mockito.MockitoAnnotations;
48 import org.robolectric.RuntimeEnvironment;
49 import org.robolectric.shadows.ShadowServiceManager;
50
51 @RunWith(SettingsRobolectricTestRunner.class)
52 public class VpnPreferenceControllerTest {
53
54     @Mock
55     private Context mContext;
56     @Mock
57     private ConnectivityManager mConnectivityManager;
58     @Mock
59     private IBinder mBinder;
60     @Mock
61     private IConnectivityManager mConnectivityManagerService;
62     @Mock
63     private PreferenceScreen mScreen;
64     @Mock
65     private Preference mPreference;
66     private VpnPreferenceController mController;
67     private Lifecycle mLifecycle;
68     private LifecycleOwner mLifecycleOwner;
69
70     @Before
71     public void setUp() {
72         MockitoAnnotations.initMocks(this);
73         when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
74                 .thenReturn(mConnectivityManager);
75         when(mBinder.queryLocalInterface("android.net.IConnectivityManager"))
76                 .thenReturn(mConnectivityManagerService);
77         ShadowServiceManager.addService(Context.CONNECTIVITY_SERVICE, mBinder);
78         when(mScreen.findPreference(anyString())).thenReturn(mPreference);
79
80         mController = spy(new VpnPreferenceController(mContext));
81         mLifecycleOwner = () -> mLifecycle;
82         mLifecycle = new Lifecycle(mLifecycleOwner);
83         mLifecycle.addObserver(mController);
84     }
85
86     @Test
87     public void displayPreference_available_shouldSetDependency() {
88         doReturn(true).when(mController).isAvailable();
89         mController.displayPreference(mScreen);
90
91         verify(mPreference).setDependency(AirplaneModePreferenceController.KEY_TOGGLE_AIRPLANE);
92     }
93
94     @Test
95     public void goThroughLifecycle_shouldRegisterUnregisterListener() {
96         doReturn(true).when(mController).isAvailable();
97
98         mLifecycle.handleLifecycleEvent(ON_RESUME);
99         verify(mConnectivityManager).registerNetworkCallback(
100                 any(NetworkRequest.class), any(ConnectivityManager.NetworkCallback.class));
101
102         mLifecycle.handleLifecycleEvent(ON_PAUSE);
103         verify(mConnectivityManager).unregisterNetworkCallback(
104                 any(ConnectivityManager.NetworkCallback.class));
105     }
106
107     @Test
108     public void getNameForVpnConfig_legacyVPNConfig_shouldSetSummaryToConnected() {
109         final VpnConfig config = new VpnConfig();
110         config.legacy = true;
111         final VpnPreferenceController controller =
112                 new VpnPreferenceController(RuntimeEnvironment.application);
113
114         final String summary = controller.getNameForVpnConfig(config, UserHandle.CURRENT);
115
116         assertThat(summary).isEqualTo("Connected");
117     }
118 }