diff options
| author | Chiachang Wang <chiachangwang@google.com> | 2021-08-10 15:13:39 +0800 |
|---|---|---|
| committer | Chiachang Wang <chiachangwang@google.com> | 2021-08-11 14:55:00 +0800 |
| commit | c07315aa08ff18e9c6d35c34505407e58d6b62db (patch) | |
| tree | dba74783bec9d931097378bcf259492fa95e3ab0 /tests/common/java/android/net/NetworkCapabilitiesTest.java | |
| parent | d4c0d59179128d58ed482c0f0b3117d71898d67a (diff) | |
The net cap value should be bit shifted before &ing
The check intends to do the bit & operation. The net cap value
should be shifted against the original capabilities.
Also fix the typo in the method name.
Bug: 191918212
Test: atest FrameworksNetTests
Change-Id: I98396b2538f36fe8b29d27a544a2dfb3060bc9c5
Diffstat (limited to 'tests/common/java/android/net/NetworkCapabilitiesTest.java')
| -rw-r--r-- | tests/common/java/android/net/NetworkCapabilitiesTest.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/common/java/android/net/NetworkCapabilitiesTest.java b/tests/common/java/android/net/NetworkCapabilitiesTest.java index 493a201f44..3d0cb92e78 100644 --- a/tests/common/java/android/net/NetworkCapabilitiesTest.java +++ b/tests/common/java/android/net/NetworkCapabilitiesTest.java @@ -1167,4 +1167,48 @@ public class NetworkCapabilitiesTest { // Ensure test case fails if new net cap is added into default cap but no update here. assertEquals(0, nc.getCapabilities().length); } + + @Test @IgnoreUpTo(Build.VERSION_CODES.R) + public void testRestrictCapabilitiesForTestNetwork() { + final int ownerUid = 1234; + final int[] administratorUids = {1001, ownerUid}; + final NetworkCapabilities nonRestrictedNc = new NetworkCapabilities.Builder() + .addTransportType(TRANSPORT_CELLULAR) + .addTransportType(TRANSPORT_VPN) + .addCapability(NET_CAPABILITY_MMS) + .addCapability(NET_CAPABILITY_NOT_METERED) + .setAdministratorUids(administratorUids) + .setOwnerUid(ownerUid) + .setSubscriptionIds(Set.of(TEST_SUBID1)).build(); + + nonRestrictedNc.restrictCapabilitiesForTestNetwork(ownerUid); + // TRANSPORT_TEST will be appended + assertTrue(nonRestrictedNc.hasTransport(TRANSPORT_TEST)); + assertEquals(Set.of(TEST_SUBID1), nonRestrictedNc.getSubscriptionIds()); + // Non-UNRESTRICTED_TEST_NETWORKS_ALLOWED_TRANSPORTS will be removed + assertFalse(nonRestrictedNc.hasTransport(TRANSPORT_CELLULAR)); + assertTrue(nonRestrictedNc.hasTransport(TRANSPORT_VPN)); + // Only TEST_NETWORKS_ALLOWED_CAPABILITIES will be kept + assertFalse(nonRestrictedNc.hasCapability(NET_CAPABILITY_MMS)); + assertTrue(nonRestrictedNc.hasCapability(NET_CAPABILITY_NOT_METERED)); + + final NetworkCapabilities restrictedNc = new NetworkCapabilities.Builder(nonRestrictedNc) + .removeCapability(NET_CAPABILITY_NOT_RESTRICTED) + .addTransportType(TRANSPORT_CELLULAR) + .addCapability(NET_CAPABILITY_MMS).build(); + restrictedNc.restrictCapabilitiesForTestNetwork(ownerUid); + // It may declare any transport if the net cap is restricted + assertTrue(restrictedNc.hasTransport(TRANSPORT_CELLULAR)); + // SubIds will be cleared. + assertEquals(new ArraySet<>(), restrictedNc.getSubscriptionIds()); + // Only retain the owner and administrator UIDs if they match the app registering the remote + // caller that registered the network. + assertEquals(ownerUid, restrictedNc.getOwnerUid()); + assertArrayEquals(new int[] {ownerUid}, restrictedNc.getAdministratorUids()); + // The creator UID does not match the owner and administrator UIDs will clear the owner and + // administrator UIDs. + restrictedNc.restrictCapabilitiesForTestNetwork(5678); + assertEquals(INVALID_UID, restrictedNc.getOwnerUid()); + assertArrayEquals(new int[0], restrictedNc.getAdministratorUids()); + } } |
