blob: e8ba5b8168d7c9b0205dd0a55224f41e48752afa [file] [log] [blame]
Erik Kline54f2f372017-05-15 21:11:47 +09001/*
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
markchien503be612020-04-12 21:41:29 +080017package com.android.networkstack.tethering;
Erik Kline54f2f372017-05-15 21:11:47 +090018
Erik Kline0e61baa2017-03-09 11:44:11 +090019import static android.net.ConnectivityManager.TYPE_ETHERNET;
Erik Kline54f2f372017-05-15 21:11:47 +090020import static android.net.ConnectivityManager.TYPE_MOBILE;
21import static android.net.ConnectivityManager.TYPE_MOBILE_DUN;
22import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
23import static android.net.ConnectivityManager.TYPE_WIFI;
markchien2dfee022020-01-13 16:09:42 +080024import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
markchien0b595072019-01-08 23:52:21 +080025import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
Remi NGUYEN VANe3bb5c52018-06-12 15:57:04 +090026
markchien2dfee022020-01-13 16:09:42 +080027import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
28import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
markchien0b595072019-01-08 23:52:21 +080029
Erik Kline54f2f372017-05-15 21:11:47 +090030import static org.junit.Assert.assertEquals;
31import static org.junit.Assert.assertFalse;
32import static org.junit.Assert.assertTrue;
markchien2dfee022020-01-13 16:09:42 +080033import static org.mockito.Matchers.anyBoolean;
34import static org.mockito.Matchers.eq;
Erik Kline54f2f372017-05-15 21:11:47 +090035import static org.mockito.Mockito.when;
36
37import android.content.Context;
Erik Kline54f2f372017-05-15 21:11:47 +090038import android.content.res.Resources;
Erik Kline6bd74532017-05-19 10:10:41 +090039import android.net.util.SharedLog;
markchien2dfee022020-01-13 16:09:42 +080040import android.provider.DeviceConfig;
Erik Kline54f2f372017-05-15 21:11:47 +090041import android.telephony.TelephonyManager;
42
Brett Chabot1ae2aa62019-03-04 14:14:56 -080043import androidx.test.filters.SmallTest;
44import androidx.test.runner.AndroidJUnit4;
45
Erik Kline54f2f372017-05-15 21:11:47 +090046import com.android.internal.util.test.BroadcastInterceptingContext;
47
markchien2dfee022020-01-13 16:09:42 +080048import org.junit.After;
Erik Kline54f2f372017-05-15 21:11:47 +090049import org.junit.Before;
50import org.junit.Test;
51import org.junit.runner.RunWith;
52import org.mockito.Mock;
markchien2dfee022020-01-13 16:09:42 +080053import org.mockito.MockitoSession;
54import org.mockito.quality.Strictness;
Erik Kline54f2f372017-05-15 21:11:47 +090055
markchiendb3a2362018-10-05 12:36:08 +080056import java.util.Arrays;
markchien0b595072019-01-08 23:52:21 +080057import java.util.Iterator;
Erik Kline54f2f372017-05-15 21:11:47 +090058
59@RunWith(AndroidJUnit4.class)
60@SmallTest
61public class TetheringConfigurationTest {
Erik Kline6bd74532017-05-19 10:10:41 +090062 private final SharedLog mLog = new SharedLog("TetheringConfigurationTest");
markchien0b595072019-01-08 23:52:21 +080063
64 private static final String[] PROVISIONING_APP_NAME = {"some", "app"};
Erik Kline54f2f372017-05-15 21:11:47 +090065 @Mock private Context mContext;
66 @Mock private TelephonyManager mTelephonyManager;
67 @Mock private Resources mResources;
markchien0b595072019-01-08 23:52:21 +080068 @Mock private Resources mResourcesForSubId;
Erik Kline54f2f372017-05-15 21:11:47 +090069 private Context mMockContext;
70 private boolean mHasTelephonyManager;
markchien2dfee022020-01-13 16:09:42 +080071 private boolean mEnableLegacyDhcpServer;
72 private MockitoSession mMockingSession;
Erik Kline54f2f372017-05-15 21:11:47 +090073
markchien0b595072019-01-08 23:52:21 +080074 private class MockTetheringConfiguration extends TetheringConfiguration {
75 MockTetheringConfiguration(Context ctx, SharedLog log, int id) {
76 super(ctx, log, id);
77 }
78
79 @Override
80 protected Resources getResourcesForSubIdWrapper(Context ctx, int subId) {
81 return mResourcesForSubId;
82 }
83 }
84
Erik Kline54f2f372017-05-15 21:11:47 +090085 private class MockContext extends BroadcastInterceptingContext {
86 MockContext(Context base) {
87 super(base);
88 }
89
90 @Override
markchiena6ba54d2019-09-03 15:58:06 +080091 public Resources getResources() {
92 return mResources;
93 }
Erik Kline54f2f372017-05-15 21:11:47 +090094
95 @Override
96 public Object getSystemService(String name) {
97 if (Context.TELEPHONY_SERVICE.equals(name)) {
98 return mHasTelephonyManager ? mTelephonyManager : null;
99 }
100 return super.getSystemService(name);
101 }
102 }
103
104 @Before
105 public void setUp() throws Exception {
markchien2dfee022020-01-13 16:09:42 +0800106 // TODO: use a dependencies class instead of mock statics.
107 mMockingSession = mockitoSession()
108 .initMocks(this)
109 .mockStatic(DeviceConfig.class)
110 .strictness(Strictness.WARN)
111 .startMocking();
112 doReturn(false).when(
113 () -> DeviceConfig.getBoolean(eq(NAMESPACE_CONNECTIVITY),
114 eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER), anyBoolean()));
115
markchienda4519a2020-01-14 12:46:53 +0800116 when(mResources.getStringArray(R.array.config_tether_dhcp_range)).thenReturn(
117 new String[0]);
junyulaiaea13ae2020-04-30 15:21:55 +0800118 when(mResources.getInteger(R.integer.config_tether_offload_poll_interval)).thenReturn(
119 TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS);
markchienda4519a2020-01-14 12:46:53 +0800120 when(mResources.getStringArray(R.array.config_tether_usb_regexs)).thenReturn(new String[0]);
121 when(mResources.getStringArray(R.array.config_tether_wifi_regexs))
Erik Kline54f2f372017-05-15 21:11:47 +0900122 .thenReturn(new String[]{ "test_wlan\\d" });
markchienda4519a2020-01-14 12:46:53 +0800123 when(mResources.getStringArray(R.array.config_tether_bluetooth_regexs)).thenReturn(
124 new String[0]);
125 when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(new int[0]);
126 when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app))
markchien0b595072019-01-08 23:52:21 +0800127 .thenReturn(new String[0]);
markchienda4519a2020-01-14 12:46:53 +0800128 when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
129 false);
markchiendb3a2362018-10-05 12:36:08 +0800130 mHasTelephonyManager = true;
Erik Kline54f2f372017-05-15 21:11:47 +0900131 mMockContext = new MockContext(mContext);
markchien2dfee022020-01-13 16:09:42 +0800132 mEnableLegacyDhcpServer = false;
133 }
134
135 @After
136 public void tearDown() throws Exception {
137 mMockingSession.finishMocking();
Erik Kline54f2f372017-05-15 21:11:47 +0900138 }
139
markchien9f246bd2019-04-03 10:43:09 +0800140 private TetheringConfiguration getTetheringConfiguration(int... legacyTetherUpstreamTypes) {
markchienda4519a2020-01-14 12:46:53 +0800141 when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(
markchiendb3a2362018-10-05 12:36:08 +0800142 legacyTetherUpstreamTypes);
143 return new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
144 }
145
146 @Test
147 public void testNoTelephonyManagerMeansNoDun() {
148 mHasTelephonyManager = false;
149 final TetheringConfiguration cfg = getTetheringConfiguration(
150 new int[]{TYPE_MOBILE_DUN, TYPE_WIFI});
151 assertFalse(cfg.isDunRequired);
152 assertFalse(cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_DUN));
153 // Just to prove we haven't clobbered Wi-Fi:
154 assertTrue(cfg.preferredUpstreamIfaceTypes.contains(TYPE_WIFI));
155 }
156
Erik Kline54f2f372017-05-15 21:11:47 +0900157 @Test
158 public void testDunFromTelephonyManagerMeansDun() {
markchien986750b2019-12-06 15:24:53 +0800159 when(mTelephonyManager.isTetheringApnRequired()).thenReturn(true);
Erik Kline54f2f372017-05-15 21:11:47 +0900160
markchien9f246bd2019-04-03 10:43:09 +0800161 final TetheringConfiguration cfgWifi = getTetheringConfiguration(TYPE_WIFI);
markchiendb3a2362018-10-05 12:36:08 +0800162 final TetheringConfiguration cfgMobileWifiHipri = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800163 TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI);
markchiendb3a2362018-10-05 12:36:08 +0800164 final TetheringConfiguration cfgWifiDun = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800165 TYPE_WIFI, TYPE_MOBILE_DUN);
markchiendb3a2362018-10-05 12:36:08 +0800166 final TetheringConfiguration cfgMobileWifiHipriDun = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800167 TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI, TYPE_MOBILE_DUN);
markchiendb3a2362018-10-05 12:36:08 +0800168
169 for (TetheringConfiguration cfg : Arrays.asList(cfgWifi, cfgMobileWifiHipri,
170 cfgWifiDun, cfgMobileWifiHipriDun)) {
171 String msg = "config=" + cfg.toString();
172 assertTrue(msg, cfg.isDunRequired);
173 assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_DUN));
174 assertFalse(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
175 assertFalse(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
176 // Just to prove we haven't clobbered Wi-Fi:
177 assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_WIFI));
178 }
Erik Kline54f2f372017-05-15 21:11:47 +0900179 }
180
181 @Test
182 public void testDunNotRequiredFromTelephonyManagerMeansNoDun() {
markchien986750b2019-12-06 15:24:53 +0800183 when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
Erik Kline54f2f372017-05-15 21:11:47 +0900184
markchien9f246bd2019-04-03 10:43:09 +0800185 final TetheringConfiguration cfgWifi = getTetheringConfiguration(TYPE_WIFI);
markchiendb3a2362018-10-05 12:36:08 +0800186 final TetheringConfiguration cfgMobileWifiHipri = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800187 TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI);
markchiendb3a2362018-10-05 12:36:08 +0800188 final TetheringConfiguration cfgWifiDun = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800189 TYPE_WIFI, TYPE_MOBILE_DUN);
markchiendb3a2362018-10-05 12:36:08 +0800190 final TetheringConfiguration cfgWifiMobile = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800191 TYPE_WIFI, TYPE_MOBILE);
markchiendb3a2362018-10-05 12:36:08 +0800192 final TetheringConfiguration cfgWifiHipri = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800193 TYPE_WIFI, TYPE_MOBILE_HIPRI);
markchiendb3a2362018-10-05 12:36:08 +0800194 final TetheringConfiguration cfgMobileWifiHipriDun = getTetheringConfiguration(
markchien9f246bd2019-04-03 10:43:09 +0800195 TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI, TYPE_MOBILE_DUN);
Erik Kline54f2f372017-05-15 21:11:47 +0900196
markchiendb3a2362018-10-05 12:36:08 +0800197 String msg;
markchien9f246bd2019-04-03 10:43:09 +0800198 // TYPE_MOBILE_DUN should be present in none of the combinations.
markchiendb3a2362018-10-05 12:36:08 +0800199 // TYPE_WIFI should not be affected.
200 for (TetheringConfiguration cfg : Arrays.asList(cfgWifi, cfgMobileWifiHipri, cfgWifiDun,
201 cfgWifiMobile, cfgWifiHipri, cfgMobileWifiHipriDun)) {
202 msg = "config=" + cfg.toString();
203 assertFalse(msg, cfg.isDunRequired);
204 assertFalse(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_DUN));
205 assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_WIFI));
206 }
Erik Kline54f2f372017-05-15 21:11:47 +0900207
markchiendb3a2362018-10-05 12:36:08 +0800208 for (TetheringConfiguration cfg : Arrays.asList(cfgWifi, cfgMobileWifiHipri, cfgWifiDun,
209 cfgMobileWifiHipriDun)) {
210 msg = "config=" + cfg.toString();
211 assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
212 assertTrue(msg, cfg.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
213 }
214 msg = "config=" + cfgWifiMobile.toString();
215 assertTrue(msg, cfgWifiMobile.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
216 assertFalse(msg, cfgWifiMobile.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
217 msg = "config=" + cfgWifiHipri.toString();
218 assertFalse(msg, cfgWifiHipri.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE));
219 assertTrue(msg, cfgWifiHipri.preferredUpstreamIfaceTypes.contains(TYPE_MOBILE_HIPRI));
220
Erik Kline54f2f372017-05-15 21:11:47 +0900221 }
Erik Kline0e61baa2017-03-09 11:44:11 +0900222
223 @Test
224 public void testNoDefinedUpstreamTypesAddsEthernet() {
markchienda4519a2020-01-14 12:46:53 +0800225 when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(new int[]{});
markchien986750b2019-12-06 15:24:53 +0800226 when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
Erik Kline0e61baa2017-03-09 11:44:11 +0900227
markchien0b595072019-01-08 23:52:21 +0800228 final TetheringConfiguration cfg = new TetheringConfiguration(
229 mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
Erik Kline0e61baa2017-03-09 11:44:11 +0900230 final Iterator<Integer> upstreamIterator = cfg.preferredUpstreamIfaceTypes.iterator();
231 assertTrue(upstreamIterator.hasNext());
232 assertEquals(TYPE_ETHERNET, upstreamIterator.next().intValue());
233 // The following is because the code always adds some kind of mobile
markchiendb3a2362018-10-05 12:36:08 +0800234 // upstream, be it DUN or, in this case where DUN is NOT required,
235 // make sure there is at least one of MOBILE or HIPRI. With the empty
236 // list of the configuration in this test, it will always add both
237 // MOBILE and HIPRI, in that order.
Erik Kline0e61baa2017-03-09 11:44:11 +0900238 assertTrue(upstreamIterator.hasNext());
239 assertEquals(TYPE_MOBILE, upstreamIterator.next().intValue());
240 assertTrue(upstreamIterator.hasNext());
241 assertEquals(TYPE_MOBILE_HIPRI, upstreamIterator.next().intValue());
242 assertFalse(upstreamIterator.hasNext());
243 }
244
245 @Test
246 public void testDefinedUpstreamTypesSansEthernetAddsEthernet() {
markchienda4519a2020-01-14 12:46:53 +0800247 when(mResources.getIntArray(R.array.config_tether_upstream_types)).thenReturn(
markchiendb3a2362018-10-05 12:36:08 +0800248 new int[]{TYPE_WIFI, TYPE_MOBILE_HIPRI});
markchien986750b2019-12-06 15:24:53 +0800249 when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
Erik Kline0e61baa2017-03-09 11:44:11 +0900250
markchien0b595072019-01-08 23:52:21 +0800251 final TetheringConfiguration cfg = new TetheringConfiguration(
252 mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
Erik Kline0e61baa2017-03-09 11:44:11 +0900253 final Iterator<Integer> upstreamIterator = cfg.preferredUpstreamIfaceTypes.iterator();
254 assertTrue(upstreamIterator.hasNext());
255 assertEquals(TYPE_ETHERNET, upstreamIterator.next().intValue());
256 assertTrue(upstreamIterator.hasNext());
257 assertEquals(TYPE_WIFI, upstreamIterator.next().intValue());
258 assertTrue(upstreamIterator.hasNext());
259 assertEquals(TYPE_MOBILE_HIPRI, upstreamIterator.next().intValue());
260 assertFalse(upstreamIterator.hasNext());
261 }
262
263 @Test
264 public void testDefinedUpstreamTypesWithEthernetDoesNotAddEthernet() {
markchienda4519a2020-01-14 12:46:53 +0800265 when(mResources.getIntArray(R.array.config_tether_upstream_types))
Erik Kline0e61baa2017-03-09 11:44:11 +0900266 .thenReturn(new int[]{TYPE_WIFI, TYPE_ETHERNET, TYPE_MOBILE_HIPRI});
markchien986750b2019-12-06 15:24:53 +0800267 when(mTelephonyManager.isTetheringApnRequired()).thenReturn(false);
Erik Kline0e61baa2017-03-09 11:44:11 +0900268
markchien0b595072019-01-08 23:52:21 +0800269 final TetheringConfiguration cfg = new TetheringConfiguration(
270 mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
Erik Kline0e61baa2017-03-09 11:44:11 +0900271 final Iterator<Integer> upstreamIterator = cfg.preferredUpstreamIfaceTypes.iterator();
272 assertTrue(upstreamIterator.hasNext());
273 assertEquals(TYPE_WIFI, upstreamIterator.next().intValue());
274 assertTrue(upstreamIterator.hasNext());
275 assertEquals(TYPE_ETHERNET, upstreamIterator.next().intValue());
276 assertTrue(upstreamIterator.hasNext());
277 assertEquals(TYPE_MOBILE_HIPRI, upstreamIterator.next().intValue());
278 assertFalse(upstreamIterator.hasNext());
279 }
Remi NGUYEN VANe3bb5c52018-06-12 15:57:04 +0900280
281 @Test
282 public void testNewDhcpServerDisabled() {
markchienda4519a2020-01-14 12:46:53 +0800283 when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
284 true);
markchien2dfee022020-01-13 16:09:42 +0800285 doReturn(false).when(
286 () -> DeviceConfig.getBoolean(eq(NAMESPACE_CONNECTIVITY),
287 eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER), anyBoolean()));
Remi NGUYEN VANe3bb5c52018-06-12 15:57:04 +0900288
markchien2dfee022020-01-13 16:09:42 +0800289 final TetheringConfiguration enableByRes =
290 new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
291 assertTrue(enableByRes.enableLegacyDhcpServer);
292
markchienda4519a2020-01-14 12:46:53 +0800293 when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
294 false);
markchien2dfee022020-01-13 16:09:42 +0800295 doReturn(true).when(
296 () -> DeviceConfig.getBoolean(eq(NAMESPACE_CONNECTIVITY),
297 eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER), anyBoolean()));
298
299 final TetheringConfiguration enableByDevConfig =
300 new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
301 assertTrue(enableByDevConfig.enableLegacyDhcpServer);
Remi NGUYEN VANe3bb5c52018-06-12 15:57:04 +0900302 }
303
304 @Test
305 public void testNewDhcpServerEnabled() {
markchienda4519a2020-01-14 12:46:53 +0800306 when(mResources.getBoolean(R.bool.config_tether_enable_legacy_dhcp_server)).thenReturn(
307 false);
markchien2dfee022020-01-13 16:09:42 +0800308 doReturn(false).when(
309 () -> DeviceConfig.getBoolean(eq(NAMESPACE_CONNECTIVITY),
310 eq(TetheringConfiguration.TETHER_ENABLE_LEGACY_DHCP_SERVER), anyBoolean()));
Remi NGUYEN VANe3bb5c52018-06-12 15:57:04 +0900311
markchien2dfee022020-01-13 16:09:42 +0800312 final TetheringConfiguration cfg =
313 new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
314
Remi NGUYEN VANe3bb5c52018-06-12 15:57:04 +0900315 assertFalse(cfg.enableLegacyDhcpServer);
316 }
markchien0b595072019-01-08 23:52:21 +0800317
318 @Test
junyulaiaea13ae2020-04-30 15:21:55 +0800319 public void testOffloadIntervalByResource() {
320 final TetheringConfiguration intervalByDefault =
321 new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
322 assertEquals(TetheringConfiguration.DEFAULT_TETHER_OFFLOAD_POLL_INTERVAL_MS,
323 intervalByDefault.getOffloadPollInterval());
324
325 final int[] testOverrides = {0, 3000, -1};
326 for (final int override : testOverrides) {
327 when(mResources.getInteger(R.integer.config_tether_offload_poll_interval)).thenReturn(
328 override);
329 final TetheringConfiguration overrideByRes =
330 new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
331 assertEquals(override, overrideByRes.getOffloadPollInterval());
332 }
333 }
334
335 @Test
markchien0b595072019-01-08 23:52:21 +0800336 public void testGetResourcesBySubId() {
337 setUpResourceForSubId();
338 final TetheringConfiguration cfg = new TetheringConfiguration(
339 mMockContext, mLog, INVALID_SUBSCRIPTION_ID);
340 assertTrue(cfg.provisioningApp.length == 0);
341 final int anyValidSubId = 1;
342 final MockTetheringConfiguration mockCfg =
343 new MockTetheringConfiguration(mMockContext, mLog, anyValidSubId);
344 assertEquals(mockCfg.provisioningApp[0], PROVISIONING_APP_NAME[0]);
345 assertEquals(mockCfg.provisioningApp[1], PROVISIONING_APP_NAME[1]);
346 }
347
348 private void setUpResourceForSubId() {
349 when(mResourcesForSubId.getStringArray(
markchienda4519a2020-01-14 12:46:53 +0800350 R.array.config_tether_dhcp_range)).thenReturn(new String[0]);
markchien0b595072019-01-08 23:52:21 +0800351 when(mResourcesForSubId.getStringArray(
markchienda4519a2020-01-14 12:46:53 +0800352 R.array.config_tether_usb_regexs)).thenReturn(new String[0]);
markchien0b595072019-01-08 23:52:21 +0800353 when(mResourcesForSubId.getStringArray(
markchienda4519a2020-01-14 12:46:53 +0800354 R.array.config_tether_wifi_regexs)).thenReturn(new String[]{ "test_wlan\\d" });
markchien0b595072019-01-08 23:52:21 +0800355 when(mResourcesForSubId.getStringArray(
markchienda4519a2020-01-14 12:46:53 +0800356 R.array.config_tether_bluetooth_regexs)).thenReturn(new String[0]);
357 when(mResourcesForSubId.getIntArray(R.array.config_tether_upstream_types)).thenReturn(
358 new int[0]);
markchien0b595072019-01-08 23:52:21 +0800359 when(mResourcesForSubId.getStringArray(
markchienda4519a2020-01-14 12:46:53 +0800360 R.array.config_mobile_hotspot_provision_app)).thenReturn(PROVISIONING_APP_NAME);
markchien0b595072019-01-08 23:52:21 +0800361 }
362
Erik Kline54f2f372017-05-15 21:11:47 +0900363}