diff --git a/tests/cts/net/src/android/net/cts/Ikev2VpnTest.java b/tests/cts/net/src/android/net/cts/Ikev2VpnTest.java index ec5c8c5413..a3a65b6400 100644 --- a/tests/cts/net/src/android/net/cts/Ikev2VpnTest.java +++ b/tests/cts/net/src/android/net/cts/Ikev2VpnTest.java @@ -35,12 +35,14 @@ import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.junit.Assume.assumeTrue; +import static org.junit.Assume.assumeFalse; import android.Manifest; import android.annotation.NonNull; import android.app.AppOpsManager; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.ConnectivityManager; import android.net.Ikev2VpnProfile; import android.net.IpSecAlgorithm; @@ -72,6 +74,7 @@ import com.android.testutils.TestableNetworkCallback; import org.bouncycastle.x509.X509V1CertificateGenerator; import org.junit.After; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -200,6 +203,12 @@ public class Ikev2VpnTest { mUserCertKey = generateRandomCertAndKeyPair(); } + @Before + public void setUp() { + assumeFalse("Skipping test because watches don't support VPN", + sContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)); + } + @After public void tearDown() { for (TestableNetworkCallback callback : mCallbacksToUnregister) { diff --git a/tests/cts/net/src/android/net/cts/VpnServiceTest.java b/tests/cts/net/src/android/net/cts/VpnServiceTest.java index 5c7b5ca082..f343e83c97 100644 --- a/tests/cts/net/src/android/net/cts/VpnServiceTest.java +++ b/tests/cts/net/src/android/net/cts/VpnServiceTest.java @@ -15,12 +15,28 @@ */ package android.net.cts; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeFalse; + +import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.VpnService; import android.os.ParcelFileDescriptor; import android.platform.test.annotations.AppModeFull; import android.test.AndroidTestCase; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.io.File; import java.net.DatagramSocket; import java.net.Socket; @@ -30,12 +46,21 @@ import java.net.Socket; * blocks us from writing tests for positive cases. For now we only test for * negative cases, and we will try to cover the rest in the future. */ -public class VpnServiceTest extends AndroidTestCase { +@RunWith(AndroidJUnit4.class) +public class VpnServiceTest { private static final String TAG = VpnServiceTest.class.getSimpleName(); + private final Context mContext = InstrumentationRegistry.getContext(); private VpnService mVpnService = new VpnService(); + @Before + public void setUp() { + assumeFalse("Skipping test because watches don't support VPN", + mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH)); + } + + @Test @AppModeFull(reason = "PackageManager#queryIntentActivities cannot access in instant app mode") public void testPrepare() throws Exception { // Should never return null since we are not prepared. @@ -47,6 +72,7 @@ public class VpnServiceTest extends AndroidTestCase { assertEquals(1, count); } + @Test @AppModeFull(reason = "establish() requires prepare(), which requires PackageManager access") public void testEstablish() throws Exception { ParcelFileDescriptor descriptor = null; @@ -63,6 +89,7 @@ public class VpnServiceTest extends AndroidTestCase { } } + @Test @AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager") public void testProtect_DatagramSocket() throws Exception { DatagramSocket socket = new DatagramSocket(); @@ -78,6 +105,7 @@ public class VpnServiceTest extends AndroidTestCase { } } + @Test @AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager") public void testProtect_Socket() throws Exception { Socket socket = new Socket(); @@ -93,6 +121,7 @@ public class VpnServiceTest extends AndroidTestCase { } } + @Test @AppModeFull(reason = "Protecting sockets requires prepare(), which requires PackageManager") public void testProtect_int() throws Exception { DatagramSocket socket = new DatagramSocket(); @@ -114,6 +143,7 @@ public class VpnServiceTest extends AndroidTestCase { } } + @Test public void testTunDevice() throws Exception { File file = new File("/dev/tun"); assertTrue(file.exists()); diff --git a/tests/unit/java/android/net/VpnManagerTest.java b/tests/unit/java/android/net/VpnManagerTest.java index 532081a946..2ab4e45412 100644 --- a/tests/unit/java/android/net/VpnManagerTest.java +++ b/tests/unit/java/android/net/VpnManagerTest.java @@ -19,6 +19,7 @@ package android.net; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assume.assumeFalse; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; @@ -27,11 +28,13 @@ import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Build; import android.test.mock.MockContext; import android.util.SparseArray; import androidx.test.filters.SmallTest; +import androidx.test.InstrumentationRegistry; import com.android.internal.net.VpnProfile; import com.android.internal.util.MessageUtils; @@ -47,6 +50,7 @@ import org.junit.runner.RunWith; @RunWith(DevSdkIgnoreRunner.class) @DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R) public class VpnManagerTest { + private static final String PKG_NAME = "fooPackage"; private static final String SESSION_NAME_STRING = "testSession"; @@ -66,6 +70,9 @@ public class VpnManagerTest { @Before public void setUp() throws Exception { + assumeFalse("Skipping test because watches don't support VPN", + InstrumentationRegistry.getContext().getPackageManager().hasSystemFeature( + PackageManager.FEATURE_WATCH)); mMockService = mock(IVpnManager.class); mVpnManager = new VpnManager(mMockContext, mMockService); }