summaryrefslogtreecommitdiff
path: root/main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt')
-rw-r--r--main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt146
1 files changed, 146 insertions, 0 deletions
diff --git a/main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt b/main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt
new file mode 100644
index 00000000..75505655
--- /dev/null
+++ b/main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2012-2023 Arne Schwabe
+ * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ */
+package de.blinkt.openvpn.core
+
+import android.content.Context
+import android.os.Bundle
+import androidx.test.core.app.ApplicationProvider
+import de.blinkt.openvpn.VpnProfile
+import de.blinkt.openvpn.api.AppRestrictions
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+
+interface createTestBundle
+
+@RunWith(RobolectricTestRunner::class)
+class TestRestrictions : createTestBundle {
+ @Test
+ fun testImportRestrictions() {
+
+ val context: Context = ApplicationProvider.getApplicationContext();
+
+ val appr = AppRestrictions.getInstance(context);
+ val b: Bundle = createTestBundle()
+
+
+ appr.parseRestrictionsBundle(context, b);
+
+ val pm = ProfileManager.getInstance(context);
+
+ Assert.assertEquals(pm.profiles.size, 1)
+
+ val firstProfile: VpnProfile = pm.profiles.first()
+
+ Assert.assertEquals(
+ firstProfile.uuidString,
+ "F8AEE125-2D7A-44E9-B9EB-82FB619D51CC".lowercase()
+ )
+ Assert.assertEquals(
+ firstProfile.importedProfileHash,
+ "4098294f8a8d25bb6e85cef5672dfba13ed63719"
+ )
+
+ /* Try to remove the imported profiles again */
+ }
+
+ private fun createTestBundle(): Bundle {
+ val b: Bundle = Bundle();
+
+ val miniconfig = "client\nremote test.blinkt.de\n";
+
+ val testVPN = Bundle();
+ testVPN.putString("name", "Unit Test VPN");
+ testVPN.putString("ovpn", miniconfig)
+ testVPN.putString("uuid", "F8AEE125-2D7A-44E9-B9EB-82FB619D51CC");
+
+ val ba: Array<Bundle> = arrayOf(testVPN)
+
+ b.putParcelableArray("vpn_configuration_list", ba)
+ b.putString("defaultprofile", "F8AEE125-2D7A-44E9-B9EB-82FB619D51CC")
+ b.putString("version", "1")
+ b.putString("allowed_remote_access", "some.random.app")
+ return b
+ }
+
+ private fun createTestBundleEmptyVPN(): Bundle {
+ val b: Bundle = Bundle();
+ val ba: Array<Bundle> = arrayOf()
+
+ b.putParcelableArray("vpn_configuration_list", ba)
+ b.putString("version", "1")
+ b.putString("allowed_remote_access", "some.random.app");
+ return b
+ }
+
+ @Test
+ fun testImportRestrictionsDelete() {
+
+ val context: Context = ApplicationProvider.getApplicationContext();
+
+ val appr = AppRestrictions.getInstance(context);
+ val b: Bundle = createTestBundle()
+
+ appr.parseRestrictionsBundle(context, b)
+
+ /* add another not restriction managed profile */
+ val otherVP: VpnProfile = VpnProfile("another")
+
+ val pm = ProfileManager.getInstance(context)
+ pm.addProfile(otherVP)
+
+ Assert.assertEquals(pm.profiles.size, 2)
+
+ val bEmpty: Bundle = createTestBundleEmptyVPN()
+ appr.parseRestrictionsBundle(context, bEmpty)
+
+ Assert.assertEquals(pm.profiles.size, 1)
+
+ val firstProfile: VpnProfile = pm.profiles.first()
+
+ Assert.assertEquals(
+ firstProfile.name,
+ "another"
+ )
+
+ }
+
+ @Test
+ fun testImportRestrictionsDeleteEmptyProfileList() {
+
+ val context: Context = ApplicationProvider.getApplicationContext();
+
+ val appr = AppRestrictions.getInstance(context);
+ val b: Bundle = createTestBundle()
+
+ appr.parseRestrictionsBundle(context, b)
+
+ /* add another not restriction managed profile */
+ val otherVP: VpnProfile = VpnProfile("another")
+
+ val pm = ProfileManager.getInstance(context)
+ pm.addProfile(otherVP)
+
+ Assert.assertEquals(pm.profiles.size, 2)
+
+ val bNoVPNConfigList: Bundle = Bundle();
+
+ bNoVPNConfigList.putString("version", "1")
+
+
+ appr.parseRestrictionsBundle(context, bNoVPNConfigList)
+
+ Assert.assertEquals(pm.profiles.size, 1)
+
+ val firstProfile: VpnProfile = pm.profiles.first()
+
+ Assert.assertEquals(
+ firstProfile.name,
+ "another"
+ )
+
+ }
+}