diff options
| author | Aleksandr Granin <aleksandr@mullvad.net> | 2021-04-07 14:27:04 +0200 |
|---|---|---|
| committer | Aleksandr Granin <aleksandr@mullvad.net> | 2021-04-08 13:26:19 +0200 |
| commit | df33a7600b3f3e1976ba2ab5e7b43d4cbedc169a (patch) | |
| tree | 504d0182bc9f1c431e7bfa77f3fb13f20717c6ce /android/src/test | |
| parent | 26c034a746bbebaa519663ba41fdf65406ede4ed (diff) | |
| download | mullvadvpn-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.kt | 47 | ||||
| -rw-r--r-- | android/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SplitTunnelingViewModelTest.kt | 14 |
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) } } |
