diff options
author | Rebecca Silberstein <silberst@google.com> | 2018-03-30 18:34:37 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-03-30 18:34:37 +0000 |
commit | 9ba2e5f5bf08a25a14fee695c72c534419f211cd (patch) | |
tree | ccd505f6b49e09a38b291d4111909bd93a831378 /tests | |
parent | 05a370d9aede8f307a10a8c27fa17e18240aa8d8 (diff) | |
parent | df39a431ac58f21f350dd8a9282fc3f7cb311a0f (diff) |
Merge "WifiPermissionsUtil: update canAccessScanResults" into pi-dev
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/util/WifiPermissionsUtilTest.java | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/util/WifiPermissionsUtilTest.java b/tests/wifitests/src/com/android/server/wifi/util/WifiPermissionsUtilTest.java index d5608a677..6e582db6d 100644 --- a/tests/wifitests/src/com/android/server/wifi/util/WifiPermissionsUtilTest.java +++ b/tests/wifitests/src/com/android/server/wifi/util/WifiPermissionsUtilTest.java @@ -37,6 +37,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; +import android.support.test.filters.SmallTest; import com.android.server.wifi.BinderUtil; import com.android.server.wifi.FakeWifiLog; @@ -58,6 +59,7 @@ import java.util.HashMap; /** Unit tests for {@link WifiPermissionsUtil}. */ @RunWith(JUnit4.class) +@SmallTest public class WifiPermissionsUtilTest { public static final String TAG = "WifiPermissionsUtilTest"; @@ -368,6 +370,112 @@ public class WifiPermissionsUtilTest { } /** + * Test case setting: Package is valid + * Location Mode Disabled + * Caller has location permission + * has Peer Mac Address read permission + * Validate result is false + * - Uid is not an active network scorer + * - Uid doesn't have Coarse Location Access + * - which implies No Location Permission + */ + @Test + public void testCannotAccessScanResults_LocationModeDisabled() throws Exception { + boolean output = true; + mThrowSecurityException = false; + mUid = MANAGED_PROFILE_UID; + mPermissionsList.put(mMacAddressPermission, mUid); + mWifiScanAllowApps = AppOpsManager.MODE_ALLOWED; + mPermissionsList.put(mInteractAcrossUsersFullPermission, mUid); + mLocationModeSetting = Settings.Secure.LOCATION_MODE_OFF; + + setupTestCase(); + when(mMockPermissionsWrapper.getChangeWifiConfigPermission(mUid)) + .thenReturn(PackageManager.PERMISSION_DENIED); + + WifiPermissionsUtil codeUnderTest = new WifiPermissionsUtil(mMockPermissionsWrapper, + mMockContext, mMockWifiSettingsStore, mMockUserManager, mWifiInjector); + try { + output = codeUnderTest.canAccessScanResults(TEST_PACKAGE_NAME, mUid); + } catch (SecurityException e) { + throw e; + } + assertEquals(true, output); + } + + /** + * Test case setting: Package is valid + * Location Mode Disabled + * Caller has location permisson + * Caller has CHANGE_WIFI_STATE + * Validate result is false + * - Doesn't have Peer Mac Address read permission + * - Uid is not an active network scorer + * - Location Mode is enabled but the uid + * - doesn't have Coarse Location Access + * - which implies scan result access + */ + @Test + public void testCanAccessScanResults_LocationModeDisabledHasChangeWifiState() throws Exception { + boolean output = false; + mThrowSecurityException = false; + mUid = MANAGED_PROFILE_UID; + mPermissionsList.put(mMacAddressPermission, mUid); + mWifiScanAllowApps = AppOpsManager.MODE_ALLOWED; + mPermissionsList.put(mInteractAcrossUsersFullPermission, mUid); + mLocationModeSetting = Settings.Secure.LOCATION_MODE_OFF; + + setupTestCase(); + when(mMockPermissionsWrapper.getChangeWifiConfigPermission(mUid)) + .thenReturn(PackageManager.PERMISSION_GRANTED); + + WifiPermissionsUtil codeUnderTest = new WifiPermissionsUtil(mMockPermissionsWrapper, + mMockContext, mMockWifiSettingsStore, mMockUserManager, mWifiInjector); + try { + output = codeUnderTest.canAccessScanResults(TEST_PACKAGE_NAME, mUid); + } catch (SecurityException e) { + throw e; + } + assertEquals(true, output); + } + + /** + * Test case setting: Package is valid + * Location Mode Disabled + * Caller has location permisson + * Caller has ACCESS_WIFI_STATE + * Validate result is false + * - Doesn't have Peer Mac Address read permission + * - Uid is not an active network scorer + * - Location Mode is enabled but the uid + * - doesn't have Coarse Location Access + * - which implies scan result access + */ + @Test + public void testCanAccessScanResults_LocationModeDisabledHasAccessWifiState() throws Exception { + boolean output = false; + mThrowSecurityException = false; + mUid = MANAGED_PROFILE_UID; + mPermissionsList.put(mMacAddressPermission, mUid); + mWifiScanAllowApps = AppOpsManager.MODE_ALLOWED; + mPermissionsList.put(mInteractAcrossUsersFullPermission, mUid); + mLocationModeSetting = Settings.Secure.LOCATION_MODE_OFF; + + setupTestCase(); + when(mMockPermissionsWrapper.getAccessWifiStatePermission(mUid)) + .thenReturn(PackageManager.PERMISSION_GRANTED); + + WifiPermissionsUtil codeUnderTest = new WifiPermissionsUtil(mMockPermissionsWrapper, + mMockContext, mMockWifiSettingsStore, mMockUserManager, mWifiInjector); + try { + output = codeUnderTest.canAccessScanResults(TEST_PACKAGE_NAME, mUid); + } catch (SecurityException e) { + throw e; + } + assertEquals(true, output); + } + + /** * Test case setting: Invalid Package * Expect a securityException */ |