diff options
| author | saber safavi <saber.safavi@codic.se> | 2022-12-13 14:18:37 +0100 |
|---|---|---|
| committer | saber safavi <saber.safavi@codic.se> | 2022-12-13 15:09:47 +0100 |
| commit | fa9f5a0d8fe897ce65a63cee4918fcf77442c761 (patch) | |
| tree | 00a7a77607c16d100532c438dcba78057c0487bd /android/app/src/test | |
| parent | 65ca693d4e5f768633e448d57259de7cbf77e3e9 (diff) | |
| download | mullvadvpn-fa9f5a0d8fe897ce65a63cee4918fcf77442c761.tar.xz mullvadvpn-fa9f5a0d8fe897ce65a63cee4918fcf77442c761.zip | |
Fix crash on device messenger communication
Diffstat (limited to 'android/app/src/test')
| -rw-r--r-- | android/app/src/test/kotlin/net/mullvad/mullvadvpn/service/ServiceConnectionDeviceDataSourceTest.kt | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/service/ServiceConnectionDeviceDataSourceTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/service/ServiceConnectionDeviceDataSourceTest.kt new file mode 100644 index 0000000000..8b737cba69 --- /dev/null +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/service/ServiceConnectionDeviceDataSourceTest.kt @@ -0,0 +1,81 @@ +package net.mullvad.mullvadvpn.service + +import android.os.DeadObjectException +import android.os.Looper +import android.os.Messenger +import io.mockk.MockKAnnotations +import io.mockk.Runs +import io.mockk.every +import io.mockk.impl.annotations.MockK +import io.mockk.just +import io.mockk.mockk +import io.mockk.mockkObject +import io.mockk.mockkStatic +import io.mockk.unmockkAll +import kotlin.reflect.KClass +import net.mullvad.mullvadvpn.ipc.Event +import net.mullvad.mullvadvpn.ipc.EventDispatcher +import net.mullvad.mullvadvpn.ipc.Request +import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionDeviceDataSource +import net.mullvad.mullvadvpn.util.JobTracker +import org.junit.After +import org.junit.Before +import org.junit.Test + +class ServiceConnectionDeviceDataSourceTest { + private val tracker = JobTracker() + + @MockK + private lateinit var mockedMainLooper: Looper + + @MockK + private lateinit var mockedDispatchingHandler: EventDispatcher + + @MockK + private lateinit var connection: Messenger + + lateinit var serviceConnectionDeviceDataSource: ServiceConnectionDeviceDataSource + + @Before + fun setup() { + mockkStatic(Looper::class) + mockkStatic(android.util.Log::class) + MockKAnnotations.init(this) + mockkObject(Request.GetDevice, Request.RefreshDeviceState) + every { Request.GetDevice.message } returns mockk() + every { Request.RefreshDeviceState.message } returns mockk() + every { Looper.getMainLooper() } returns mockedMainLooper + every { android.util.Log.e(any(), any()) } returns mockk(relaxed = true) + } + + @After + fun tearDown() { + unmockkAll() + } + + @Test + fun test_get_devices_list() { + // Arrange + every { connection.send(any()) } just Runs + every { + mockedDispatchingHandler.registerHandler(any<KClass<Event>>(), any()) + } just Runs + // Act and Assert no crashes + serviceConnectionDeviceDataSource = + ServiceConnectionDeviceDataSource(connection, mockedDispatchingHandler) + serviceConnectionDeviceDataSource.getDevice() + } + + @Test + fun test_catch_exception_on_devices_list() { + // Arrange + every { connection.send(any()) } throws DeadObjectException() + every { + mockedDispatchingHandler.registerHandler(any<KClass<Event>>(), any()) + } just Runs + // Act and Assert no crashes + serviceConnectionDeviceDataSource = + ServiceConnectionDeviceDataSource(connection, mockedDispatchingHandler) + serviceConnectionDeviceDataSource.getDevice() + } +} |
