1bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/* 2bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Copyright (C) 2016 The Android Open Source Project 3bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 4bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Licensed under the Apache License, Version 2.0 (the "License"); 5bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * you may not use this file except in compliance with the License. 6bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * You may obtain a copy of the License at 7bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 8bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * http://www.apache.org/licenses/LICENSE-2.0 9bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 10bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Unless required by applicable law or agreed to in writing, software 11bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * distributed under the License is distributed on an "AS IS" BASIS, 12bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * See the License for the specific language governing permissions and 14bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * limitations under the License 15bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 16bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 17bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskipackage com.android.server.wifi; 18bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 19bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport static org.junit.Assert.assertEquals; 20bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport static org.junit.Assert.assertNull; 210fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport static org.mockito.Mockito.anyInt; 220fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport static org.mockito.Mockito.when; 23bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 240fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport android.content.pm.UserInfo; 25bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.net.wifi.WifiConfiguration; 26bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.os.UserHandle; 270fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport android.os.UserManager; 28bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.test.suitebuilder.annotation.SmallTest; 290fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport android.util.SparseArray; 30bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 310fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport com.android.server.wifi.MockAnswerUtil.AnswerWithArguments; 320fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 330fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport org.junit.Before; 34bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport org.junit.Test; 350fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport org.mockito.Mock; 360fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport org.mockito.MockitoAnnotations; 37bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 38bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport java.util.ArrayList; 39bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport java.util.Arrays; 40bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport java.util.HashSet; 41bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport java.util.List; 42bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport java.util.Set; 43bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 44bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/** 45bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Unit tests for {@link com.android.server.wifi.ConfigurationMapTest}. 46bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 47bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski@SmallTest 48bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskipublic class ConfigurationMapTest { 49bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski private static final List<WifiConfiguration> CONFIGS = Arrays.asList( 500fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski WifiConfigurationTestUtil.generateWifiConfig( 510fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 0, 1000000, "\"red\"", true, true, null, null), 520fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski WifiConfigurationTestUtil.generateWifiConfig( 530fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 1, 1000001, "\"green\"", true, false, "example.com", "Green"), 540fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski WifiConfigurationTestUtil.generateWifiConfig( 550fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 2, 1200000, "\"blue\"", false, true, null, null), 560fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski WifiConfigurationTestUtil.generateWifiConfig( 57bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 3, 1100000, "\"cyan\"", true, true, null, null), 580fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski WifiConfigurationTestUtil.generateWifiConfig( 590fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 4, 1100001, "\"yellow\"", true, true, "example.org", "Yellow"), 600fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski WifiConfigurationTestUtil.generateWifiConfig( 610fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 5, 1100002, "\"magenta\"", false, false, null, null)); 620fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 630fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski private static final SparseArray<List<UserInfo>> USER_PROFILES = new SparseArray<>(); 640fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski static { 650fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski USER_PROFILES.put(UserHandle.USER_SYSTEM, Arrays.asList( 660fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski new UserInfo(UserHandle.USER_SYSTEM, "Owner", 0), 670fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski new UserInfo(12, "Managed Profile", 0))); 680fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski USER_PROFILES.put(10, Arrays.asList(new UserInfo(10, "Alice", 0))); 690fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski USER_PROFILES.put(11, Arrays.asList(new UserInfo(11, "Bob", 0))); 700fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski } 710fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 720fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski @Mock UserManager mUserManager; 73bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 74bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski private int mCurrentUserId = UserHandle.USER_SYSTEM; 750fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski private ConfigurationMap mConfigs; 760fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 770fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski /** 780fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Sets up the test harness before running a test. 790fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski */ 800fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski @Before 810fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski public void setUp() { 820fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski MockitoAnnotations.initMocks(this); 830fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski 840fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski when(mUserManager.getProfiles(anyInt())) 850fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski .then(new AnswerWithArguments() { 860fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski public List<UserInfo> answer(int userId) { 870fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski return USER_PROFILES.get(userId); 880fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski } 890fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski }); 900fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski mConfigs = new ConfigurationMap(mUserManager); 910fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski } 92bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 93bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski public void switchUser(int newUserId) { 94bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski Set<WifiConfiguration> hiddenConfigurations = new HashSet<>(); 95bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski for (WifiConfiguration config : mConfigs.valuesForAllUsers()) { 960fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski if (WifiConfigurationUtil.isVisibleToAnyProfile(config, 970fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski USER_PROFILES.get(mCurrentUserId)) 980fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski && !WifiConfigurationUtil.isVisibleToAnyProfile(config, 990fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski USER_PROFILES.get(newUserId))) { 100bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski hiddenConfigurations.add(config); 101bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 102bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 103bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 104bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski mCurrentUserId = newUserId; 105bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(hiddenConfigurations, new HashSet<>(mConfigs.handleUserSwitch(newUserId))); 106bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 107bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 108bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski public void verifyGetters(List<WifiConfiguration> configs) { 109bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final Set<WifiConfiguration> configsForCurrentUser = new HashSet<>(); 110bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final Set<WifiConfiguration> enabledConfigsForCurrentUser = new HashSet<>(); 111bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final List<WifiConfiguration> configsNotForCurrentUser = new ArrayList<>(); 112bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 113bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Find out which network configurations should be / should not be visible to the current 114bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // user. Also, check that *ForAllUsers() methods can be used to access all network 115bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // configurations, irrespective of their visibility to the current user. 116bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski for (WifiConfiguration config : configs) { 1170fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski if (WifiConfigurationUtil.isVisibleToAnyProfile(config, 1180fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski USER_PROFILES.get(mCurrentUserId))) { 119bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configsForCurrentUser.add(config); 120bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski if (config.status != WifiConfiguration.Status.DISABLED) { 121bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski enabledConfigsForCurrentUser.add(config); 122bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 123bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } else { 124bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configsNotForCurrentUser.add(config); 125bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 126bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 127bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config, mConfigs.getForAllUsers(config.networkId)); 128bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config, 129bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski mConfigs.getByConfigKeyIDForAllUsers(config.configKey().hashCode())); 130bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 131bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 132bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that *ForCurrentUser() methods can be used to access network configurations 133bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // visible to the current user. 134bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski for (WifiConfiguration config : configsForCurrentUser) { 135bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config, mConfigs.getForCurrentUser(config.networkId)); 136bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski if (config.FQDN != null) { 137bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config, mConfigs.getByFQDNForCurrentUser(config.FQDN)); 138bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 139bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config, mConfigs.getByConfigKeyForCurrentUser(config.configKey())); 140bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final boolean wasEphemeral = config.ephemeral; 141bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.ephemeral = false; 142bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.getEphemeralForCurrentUser(config.SSID)); 143bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.ephemeral = true; 144bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config, mConfigs.getEphemeralForCurrentUser(config.SSID)); 145bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.ephemeral = wasEphemeral; 146bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 147bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 148bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that *ForCurrentUser() methods cannot be used to access network configurations not 149bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // visible to the current user. 150bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski for (WifiConfiguration config : configsNotForCurrentUser) { 151bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.getForCurrentUser(config.networkId)); 152bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski if (config.FQDN != null) { 153bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.getByFQDNForCurrentUser(config.FQDN)); 154bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 155bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.getByConfigKeyForCurrentUser(config.configKey())); 156bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final boolean wasEphemeral = config.ephemeral; 157bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.ephemeral = false; 158bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.getEphemeralForCurrentUser(config.SSID)); 159bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.ephemeral = true; 160bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.getEphemeralForCurrentUser(config.SSID)); 161bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.ephemeral = wasEphemeral; 162bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 163bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 164bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that the methods which refer to more than one network configuration return the 165bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // correct sets of networks. 166bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(configs.size(), mConfigs.sizeForAllUsers()); 167bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(configsForCurrentUser.size(), mConfigs.sizeForCurrentUser()); 168bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(enabledConfigsForCurrentUser, 169bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski new HashSet<WifiConfiguration>(mConfigs.getEnabledNetworksForCurrentUser())); 170bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(new HashSet<>(configs), 171bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski new HashSet<WifiConfiguration>(mConfigs.valuesForAllUsers())); 172bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 173bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 174bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski /** 175bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Verifies that all getters return the correct network configurations, taking into account the 176bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * current user. Also verifies that handleUserSwitch() returns the list of network 177bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * configurations that are no longer visible. 178bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 179bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski @Test 180bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski public void testGettersAndHandleUserSwitch() { 181bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski for (WifiConfiguration config : CONFIGS) { 182bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.put(config)); 183bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 184bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 185bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(CONFIGS); 186bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 187bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski switchUser(10); 188bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(CONFIGS); 189bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 190bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski switchUser(11); 191bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(CONFIGS); 192bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 193bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 194bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski /** 195bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Verifies put(), remove() and clear(). 196bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 197bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski @Test 198bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski public void testPutRemoveClear() { 199bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final List<WifiConfiguration> configs = new ArrayList<>(); 200bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final WifiConfiguration config1 = CONFIGS.get(0); 201bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 202bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that there are no network configurations to start with. 203bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski switchUser(UserHandle.getUserId(config1.creatorUid)); 204bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(configs); 205bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 206bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Add |config1|. 207bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.put(config1)); 208bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that the getters return |config1|. 209bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configs.add(config1); 210bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(configs); 211bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 212bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Overwrite |config1| with |config2|. 213bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final WifiConfiguration config2 = CONFIGS.get(1); 214bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config2.networkId = config1.networkId; 215bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config1, mConfigs.put(config2)); 216bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that the getters return |config2| only. 217bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configs.clear(); 218bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configs.add(config2); 219bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(configs); 220bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 2210fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski // Add |config3|, which belongs to a managed profile of the current user. 222bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final WifiConfiguration config3 = CONFIGS.get(2); 223bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertNull(mConfigs.put(config3)); 224bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that the getters return |config2| and |config3|. 225bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configs.add(config3); 226bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(configs); 227bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 228bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Remove |config2|. 229bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski assertEquals(config2, mConfigs.remove(config2.networkId)); 230bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that the getters return |config3| only. 231bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configs.remove(config2); 232bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(configs); 233bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 234bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Clear all network configurations. 235bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski mConfigs.clear(); 236bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski // Verify that the getters do not return any network configurations. 237bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski configs.clear(); 238bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski verifyGetters(configs); 239bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 240bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski} 241