From eaca5b198280705b9f9df68b7766b3b7571e2caf Mon Sep 17 00:00:00 2001 From: Aaron Huang Date: Mon, 26 Jul 2021 12:31:24 +0800 Subject: [PATCH] Add a test for NetworkIdentity.getMetered() NetworkIdentity has adapted NET_CAPABILITY_TEMPORARILY_NOT_METERED network capability so add a test case for it. Ignore-AOSP-First: The parent of this change contains a CL will conflict with internal tree so ignore AOSP first. Bug: 183776809 Test: this Change-Id: I2ca2a8b4db664b76a5a5ee82fcff451efd87c8ff --- .../java/android/net/NetworkIdentityTest.kt | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/unit/java/android/net/NetworkIdentityTest.kt b/tests/unit/java/android/net/NetworkIdentityTest.kt index f96359300e..b1ffc9250e 100644 --- a/tests/unit/java/android/net/NetworkIdentityTest.kt +++ b/tests/unit/java/android/net/NetworkIdentityTest.kt @@ -16,20 +16,38 @@ package android.net +import android.content.Context +import android.net.ConnectivityManager.TYPE_MOBILE import android.net.NetworkIdentity.OEM_NONE import android.net.NetworkIdentity.OEM_PAID import android.net.NetworkIdentity.OEM_PRIVATE import android.net.NetworkIdentity.getOemBitfield +import android.telephony.TelephonyManager import android.os.Build import com.android.testutils.DevSdkIgnoreRule import com.android.testutils.DevSdkIgnoreRunner import org.junit.Test import org.junit.runner.RunWith +import org.mockito.Mockito.mock import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertTrue + +private const val TEST_IMSI = "testimsi" @RunWith(DevSdkIgnoreRunner::class) @DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R) class NetworkIdentityTest { + private val mockContext = mock(Context::class.java) + + private fun buildMobileNetworkStateSnapshot( + caps: NetworkCapabilities, + subscriberId: String + ): NetworkStateSnapshot { + return NetworkStateSnapshot(mock(Network::class.java), caps, + LinkProperties(), subscriberId, TYPE_MOBILE) + } + @Test fun testGetOemBitfield() { val oemNone = NetworkCapabilities().apply { @@ -54,4 +72,32 @@ class NetworkIdentityTest { assertEquals(getOemBitfield(oemPrivate), OEM_PRIVATE) assertEquals(getOemBitfield(oemAll), OEM_PAID or OEM_PRIVATE) } + + @Test + fun testGetMetered() { + // Verify network is metered. + val netIdent1 = NetworkIdentity.buildNetworkIdentity(mockContext, + buildMobileNetworkStateSnapshot(NetworkCapabilities(), TEST_IMSI), + false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS) + assertTrue(netIdent1.getMetered()) + + // Verify network is not metered because it has NET_CAPABILITY_NOT_METERED capability. + val capsNotMetered = NetworkCapabilities.Builder().apply { + addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) + }.build() + val netIdent2 = NetworkIdentity.buildNetworkIdentity(mockContext, + buildMobileNetworkStateSnapshot(capsNotMetered, TEST_IMSI), + false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS) + assertFalse(netIdent2.getMetered()) + + // Verify network is not metered because it has NET_CAPABILITY_TEMPORARILY_NOT_METERED + // capability . + val capsTempNotMetered = NetworkCapabilities().apply { + setCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED, true) + } + val netIdent3 = NetworkIdentity.buildNetworkIdentity(mockContext, + buildMobileNetworkStateSnapshot(capsTempNotMetered, TEST_IMSI), + false /* defaultNetwork */, TelephonyManager.NETWORK_TYPE_UMTS) + assertFalse(netIdent3.getMetered()) + } }