summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/androidTest
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-07-03 15:29:20 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-07-13 13:19:29 +0200
commit9cdbb9c78f1682cc9b9c3c78bef314ba12dbac28 (patch)
treea7f8f26af194304e1a3967f9d64db051e01a3e8e /android/app/src/androidTest
parent80a0705ab69dea7041fbc9176f2b7f2dd5c139e5 (diff)
downloadmullvadvpn-9cdbb9c78f1682cc9b9c3c78bef314ba12dbac28.tar.xz
mullvadvpn-9cdbb9c78f1682cc9b9c3c78bef314ba12dbac28.zip
Add the ability to set a custom wireguard port
Diffstat (limited to 'android/app/src/androidTest')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt125
1 files changed, 123 insertions, 2 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 1b97a47914..47f7d8280c 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
@@ -21,6 +21,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_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
import net.mullvad.mullvadvpn.model.Constraint
import net.mullvad.mullvadvpn.model.Port
@@ -623,6 +625,8 @@ class VpnSettingsScreenTest {
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
+
+ // Act
composeTestRule
.onNodeWithTag(LAZY_LIST_TEST_TAG)
.performScrollToNode(
@@ -653,19 +657,21 @@ class VpnSettingsScreenTest {
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
+
+ // Act
composeTestRule
.onNodeWithTag(LAZY_LIST_TEST_TAG)
.performScrollToNode(
hasTestTag(String.format(LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, 53))
)
-
- // Assert
composeTestRule
.onNodeWithTagAndText(
testTag = String.format(LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, 51820),
text = "51820"
)
.performClick()
+
+ // Assert
verify(exactly = 1) {
mockSelectWireguardPortSelectionListener.invoke(Constraint.Only(Port(51820)))
}
@@ -692,6 +698,121 @@ class VpnSettingsScreenTest {
.assertExists()
}
+ @Test
+ fun testShowWireguardCustomPortDialog() {
+ // Arrange
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState =
+ VpnSettingsUiState.CustomPortDialogUiState(
+ availablePortRanges = listOf(PortRange(53, 53), PortRange(120, 121))
+ ),
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+
+ // Assert
+ composeTestRule.onNodeWithText("Valid ranges: 53, 120-121").assertExists()
+ }
+
+ @Test
+ fun testShowWireguardCustomPort() {
+ // Arrange
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState =
+ VpnSettingsUiState.DefaultUiState(
+ selectedWireguardPort = Constraint.Only(Port(4000))
+ ),
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+
+ // Act
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG))
+
+ // Assert
+ composeTestRule.onNodeWithText("4000").assertExists()
+ }
+
+ @Test
+ fun testClickWireguardCustomPortMainCell() {
+ // Arrange
+ val mockOnShowCustomPortDialog: () -> Unit = mockk(relaxed = true)
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.DefaultUiState(),
+ onShowCustomPortDialog = mockOnShowCustomPortDialog,
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+
+ // Act
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG))
+ composeTestRule.onNodeWithTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG).performClick()
+
+ // Assert
+ verify { mockOnShowCustomPortDialog.invoke() }
+ }
+
+ @Test
+ fun testClickWireguardCustomPortNumberCell() {
+ // Arrange
+ val mockOnShowCustomPortDialog: () -> Unit = mockk(relaxed = true)
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState =
+ VpnSettingsUiState.DefaultUiState(
+ selectedWireguardPort = Constraint.Only(Port(4000))
+ ),
+ onShowCustomPortDialog = mockOnShowCustomPortDialog,
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+
+ // Act
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG))
+ composeTestRule
+ .onNodeWithTag(testTag = LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG)
+ .performClick()
+
+ // Assert
+ verify { mockOnShowCustomPortDialog.invoke() }
+ }
+
+ @Test
+ fun testSelectWireguardCustomPort() {
+ // Arrange
+ val onWireguardPortSelected: (Constraint<Port>) -> Unit = mockk(relaxed = true)
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState =
+ VpnSettingsUiState.DefaultUiState(
+ selectedWireguardPort = Constraint.Only(Port(4000))
+ ),
+ onWireguardPortSelected = onWireguardPortSelected,
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+
+ // Act
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG))
+ composeTestRule
+ .onNodeWithTag(testTag = LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG)
+ .performClick()
+
+ // Assert
+ verify { onWireguardPortSelected.invoke(Constraint.Only(Port(4000))) }
+ }
+
companion object {
private const val LOCAL_DNS_SERVER_WARNING =
"The local DNS server will not work unless you enable " +