summaryrefslogtreecommitdiffhomepage
path: root/android/src/test
diff options
context:
space:
mode:
authorAleksandr Granin <aleksandr@mullvad.net>2021-04-07 14:27:04 +0200
committerAleksandr Granin <aleksandr@mullvad.net>2021-04-08 13:26:19 +0200
commitdf33a7600b3f3e1976ba2ab5e7b43d4cbedc169a (patch)
tree504d0182bc9f1c431e7bfa77f3fb13f20717c6ce /android/src/test
parent26c034a746bbebaa519663ba41fdf65406ede4ed (diff)
downloadmullvadvpn-df33a7600b3f3e1976ba2ab5e7b43d4cbedc169a.tar.xz
mullvadvpn-df33a7600b3f3e1976ba2ab5e7b43d4cbedc169a.zip
Add ServiceConnection scope. Fix SplitTunnelingViewmodel tests
Diffstat (limited to 'android/src/test')
-rw-r--r--android/src/test/kotlin/net/mullvad/mullvadvpn/di/AppModuleTest.kt47
-rw-r--r--android/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt14
2 files changed, 55 insertions, 6 deletions
diff --git a/android/src/test/kotlin/net/mullvad/mullvadvpn/di/AppModuleTest.kt b/android/src/test/kotlin/net/mullvad/mullvadvpn/di/AppModuleTest.kt
new file mode 100644
index 0000000000..6984b064c1
--- /dev/null
+++ b/android/src/test/kotlin/net/mullvad/mullvadvpn/di/AppModuleTest.kt
@@ -0,0 +1,47 @@
+package net.mullvad.mullvadvpn.di
+
+import android.os.Messenger
+import io.mockk.mockk
+import io.mockk.unmockkAll
+import kotlin.test.assertEquals
+import net.mullvad.mullvadvpn.ipc.Event
+import net.mullvad.mullvadvpn.ipc.MessageDispatcher
+import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnection
+import net.mullvad.mullvadvpn.ui.serviceconnection.SplitTunneling
+import org.junit.After
+import org.junit.Rule
+import org.junit.Test
+import org.koin.core.parameter.parametersOf
+import org.koin.core.qualifier.named
+import org.koin.core.scope.Scope
+import org.koin.test.KoinTest
+import org.koin.test.KoinTestRule
+
+class AppModuleTest : KoinTest {
+
+ @get:Rule
+ val koinTestRule = KoinTestRule.create {
+ modules(appModule)
+ }
+
+ @After
+ fun tearDown() {
+ unmockkAll()
+ }
+
+ @Test
+ fun test_scope_linking() {
+ val appsScope: Scope = getKoin().createScope(APPS_SCOPE, named(APPS_SCOPE))
+ val serviceConnectionScope = getKoin().createScope<ServiceConnection>()
+
+ appsScope.linkTo(serviceConnectionScope)
+
+ val mockedMessenger = mockk<Messenger>()
+ val mockedEventMessageHandler = mockk<MessageDispatcher<Event>>(relaxed = true)
+ val serviceConnectionSplitTunneling = serviceConnectionScope.get<SplitTunneling>(
+ parameters = { parametersOf(mockedMessenger, mockedEventMessageHandler) }
+ )
+
+ assertEquals(appsScope.get<SplitTunneling>(), serviceConnectionSplitTunneling)
+ }
+}
diff --git a/android/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt b/android/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt
index 00e6174487..f2834082c5 100644
--- a/android/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt
+++ b/android/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt
@@ -80,7 +80,8 @@ class SplitTunnelingViewModelTest {
fun test_apps_list_delivered() = runBlockingTest(testCoroutineRule.testDispatcher) {
val appExcluded = AppData("test.excluded", 0, "testName1")
val appNotExcluded = AppData("test.not.excluded", 0, "testName2")
- every { mockedSplitTunneling.excludedAppList } returns listOf(appExcluded.packageName)
+ every { mockedSplitTunneling.isAppExcluded(appExcluded.packageName) } returns true
+ every { mockedSplitTunneling.isAppExcluded(appNotExcluded.packageName) } returns false
initTestSubject(listOf(appExcluded, appNotExcluded))
testSubject.processIntent(ViewIntent.ViewIsReady)
@@ -99,14 +100,15 @@ class SplitTunnelingViewModelTest {
assertLists(expectedList, actualList)
verifyAll {
mockedSplitTunneling.enabled
- mockedSplitTunneling.excludedAppList
+ mockedSplitTunneling.isAppExcluded(appExcluded.packageName)
+ mockedSplitTunneling.isAppExcluded(appNotExcluded.packageName)
}
}
@Test
fun test_remove_app_from_excluded() = runBlockingTest(testCoroutineRule.testDispatcher) {
val app = AppData("test", 0, "testName")
- every { mockedSplitTunneling.excludedAppList } returns listOf(app.packageName)
+ every { mockedSplitTunneling.isAppExcluded(app.packageName) } returns true
every { mockedSplitTunneling.includeApp(app.packageName) } just Runs
initTestSubject(listOf(app))
@@ -137,7 +139,7 @@ class SplitTunnelingViewModelTest {
verifyAll {
mockedSplitTunneling.enabled
- mockedSplitTunneling.excludedAppList
+ mockedSplitTunneling.isAppExcluded(app.packageName)
mockedSplitTunneling.includeApp(app.packageName)
}
}
@@ -145,7 +147,7 @@ class SplitTunnelingViewModelTest {
@Test
fun test_add_app_to_excluded() = runBlockingTest(testCoroutineRule.testDispatcher) {
val app = AppData("test", 0, "testName")
- every { mockedSplitTunneling.excludedAppList } returns emptyList()
+ every { mockedSplitTunneling.isAppExcluded(app.packageName) } returns false
every { mockedSplitTunneling.excludeApp(app.packageName) } just Runs
initTestSubject(listOf(app))
testSubject.processIntent(ViewIntent.ViewIsReady)
@@ -175,7 +177,7 @@ class SplitTunnelingViewModelTest {
verifyAll {
mockedSplitTunneling.enabled
- mockedSplitTunneling.excludedAppList
+ mockedSplitTunneling.isAppExcluded(app.packageName)
mockedSplitTunneling.excludeApp(app.packageName)
}
}