summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/test
diff options
context:
space:
mode:
authorsaber safavi <saber.safavi@codic.se>2022-12-13 14:18:37 +0100
committersaber safavi <saber.safavi@codic.se>2022-12-13 15:09:47 +0100
commitfa9f5a0d8fe897ce65a63cee4918fcf77442c761 (patch)
tree00a7a77607c16d100532c438dcba78057c0487bd /android/app/src/test
parent65ca693d4e5f768633e448d57259de7cbf77e3e9 (diff)
downloadmullvadvpn-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.kt81
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()
+ }
+}