summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2024-06-03 14:25:18 +0200
committerDavid Göransson <david.goransson@mullvad.net>2024-06-04 08:27:03 +0200
commit7db4937fd42cb6e91d2d980c3696f8fb37061e21 (patch)
treef72be795a7b76357ac88001af6c0be5e06097f6f /android
parent270c44a7a5e0f427d2fb4efc3de7a2dda178cb30 (diff)
downloadmullvadvpn-7db4937fd42cb6e91d2d980c3696f8fb37061e21.tar.xz
mullvadvpn-7db4937fd42cb6e91d2d980c3696f8fb37061e21.zip
Add test
Diffstat (limited to 'android')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt55
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt20
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt6
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelTest.kt13
5 files changed, 92 insertions, 6 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt
index ca7a01a0a9..15b0d935b2 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt
@@ -17,6 +17,8 @@ import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_X_TEST_TAG
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_UDP_OVER_TCP_PORT_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG
@@ -207,6 +209,36 @@ class VpnSettingsScreenTest {
}
@Test
+ fun testShowTcpOverUdpPortOptions() =
+ composeExtension.use {
+ // Arrange
+ setContentWithTheme {
+ VpnSettingsScreen(
+ state =
+ VpnSettingsUiState.createDefault(
+ selectedObfuscationPort = Constraint.Only(Port(5001))
+ ),
+ )
+ }
+
+ // Act
+ onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_UDP_OVER_TCP_PORT_TEST_TAG))
+ onNodeWithText("UDP-over-TCP port").performClick()
+ onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(
+ hasTestTag(String.format(LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_X_TEST_TAG, 5001))
+ )
+
+ // Assert
+ onNodeWithTagAndText(
+ testTag = String.format(LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_X_TEST_TAG, 5001),
+ text = "5001"
+ )
+ .assertExists()
+ }
+
+ @Test
fun testShowSelectedTunnelQuantumOption() =
composeExtension.use {
// Arrange
@@ -402,6 +434,29 @@ class VpnSettingsScreenTest {
}
@Test
+ fun testShowObfuscationInfo() =
+ composeExtension.use {
+ val mockedNavigateToObfuscationInfo: () -> Unit = mockk(relaxed = true)
+
+ // Arrange
+ setContentWithTheme {
+ VpnSettingsScreen(
+ state = VpnSettingsUiState.createDefault(),
+ navigateToObfuscationInfo = mockedNavigateToObfuscationInfo
+ )
+ }
+
+ // Act
+
+ onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_UDP_OVER_TCP_PORT_TEST_TAG))
+ onNodeWithText("WireGuard obfuscation").performClick()
+
+ // Assert
+ verify(exactly = 1) { mockedNavigateToObfuscationInfo() }
+ }
+
+ @Test
fun testShowTunnelQuantumInfo() =
composeExtension.use {
val mockedShowTunnelQuantumInfoClick: () -> Unit = mockk(relaxed = true)
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt
index 73a6a5283d..b19f534456 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt
@@ -13,6 +13,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.focus.focusProperties
+import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
@@ -46,6 +47,7 @@ fun ExpandableComposeCell(
title: String,
isExpanded: Boolean,
isEnabled: Boolean = true,
+ testTag: String = "",
onCellClicked: (Boolean) -> Unit = {},
onInfoClicked: (() -> Unit)? = null
) {
@@ -53,7 +55,7 @@ fun ExpandableComposeCell(
val bodyViewModifier = Modifier
BaseCell(
- modifier = Modifier.focusProperties { canFocus = false },
+ modifier = Modifier.testTag(testTag).focusProperties { canFocus = false },
headlineContent = {
BaseCellTitle(
title = title,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt
index 46420583c3..3332aa264e 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt
@@ -77,6 +77,9 @@ import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_AUTOMATIC_TEST_TAG
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_X_TEST_TAG
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_UDP_OVER_TCP_PORT_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG
@@ -531,7 +534,8 @@ fun VpnSettingsScreen(
itemWithDivider {
SelectableCell(
title = port.toString(),
- testTag = String.format(LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, port),
+ testTag =
+ String.format(null, LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, port),
isSelected = state.selectedWireguardPort.hasValue(port),
onCellClicked = { onWireguardPortSelected(Constraint.Only(Port(port))) }
)
@@ -591,7 +595,8 @@ fun VpnSettingsScreen(
title = stringResource(R.string.udp_over_tcp_port_title),
isExpanded = expandUdp2TcpPortSettings,
onInfoClicked = navigateUdp2TcpInfo,
- onCellClicked = { expandUdp2TcpPortSettings = !expandUdp2TcpPortSettings }
+ onCellClicked = { expandUdp2TcpPortSettings = !expandUdp2TcpPortSettings },
+ testTag = LAZY_LIST_UDP_OVER_TCP_PORT_TEST_TAG
)
}
@@ -600,7 +605,8 @@ fun VpnSettingsScreen(
SelectableCell(
title = stringResource(id = R.string.automatic),
isSelected = state.selectedObfuscationPort is Constraint.Any,
- onCellClicked = { onObfuscationPortSelected(Constraint.Any) }
+ onCellClicked = { onObfuscationPortSelected(Constraint.Any) },
+ testTag = LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_AUTOMATIC_TEST_TAG,
)
}
@@ -611,7 +617,13 @@ fun VpnSettingsScreen(
isSelected = state.selectedObfuscationPort.hasValue(port),
onCellClicked = {
onObfuscationPortSelected(Constraint.Only(Port(port)))
- }
+ },
+ testTag =
+ String.format(
+ null,
+ LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_X_TEST_TAG,
+ port
+ )
)
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt
index 8ebdaede33..0111fc7a46 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt
@@ -9,11 +9,15 @@ const val LAZY_LIST_TEST_TAG = "lazy_list_test_tag"
const val LAZY_LIST_LAST_ITEM_TEST_TAG = "lazy_list_last_item_test_tag"
const val LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG = "lazy_list_quantum_item_off_test_tag"
const val LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG = "lazy_list_quantum_item_on_test_tag"
-const val LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG = "lazy_list_quantum_item_%d_test_tag"
+const val LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG = "lazy_list_wireguard_item_%d_test_tag"
const val LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG =
"lazy_list_wireguard_custom_port_text_test_tag"
const val LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG =
"lazy_list_wireguard_custom_port_number_test_tag"
+const val LAZY_LIST_UDP_OVER_TCP_PORT_TEST_TAG = "lazy_list_udp_over_tcp_port_test_tag"
+const val LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_AUTOMATIC_TEST_TAG =
+ "lazy_list_udp_over_tcp_item_automatic_test_tag"
+const val LAZY_LIST_UDP_OVER_TCP_PORT_ITEM_X_TEST_TAG = "lazy_list_udp_over_tcp_item_%d_test_tag"
const val CUSTOM_PORT_DIALOG_INPUT_TEST_TAG = "custom_port_dialog_input_test_tag"
// SelectLocationScreen, ConnectScreen, CustomListLocationsScreen
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelTest.kt
index 29a6c764ba..a62b5d4bb3 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelTest.kt
@@ -67,6 +67,19 @@ class VpnSettingsViewModelTest {
}
@Test
+ fun `onSelectCustomTcpOverUdpPort should invoke setCustomObfuscationPort on SettingsRepository`() =
+ runTest {
+ val customPort = Port(5001)
+ coEvery {
+ mockSettingsRepository.setCustomObfuscationPort(Constraint.Only(customPort))
+ } returns Unit.right()
+ viewModel.onObfuscationPortSelected(Constraint.Only(customPort))
+ coVerify(exactly = 1) {
+ mockSettingsRepository.setCustomObfuscationPort(Constraint.Only(customPort))
+ }
+ }
+
+ @Test
fun `onSelectQuantumResistanceSetting should invoke setWireguardQuantumResistant on SettingsRepository`() =
runTest {
val quantumResistantState = QuantumResistantState.On