summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/androidTest
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-05-30 13:05:30 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-06-07 17:51:06 +0200
commit6b1c918efc3cb0ef02d6e4e058d1dfe25dce7b33 (patch)
tree41feb4f2540d9e589cee8bbf1275269f6cb9ab44 /android/app/src/androidTest
parent07f1ecbeb787ce59812b59c0b7974cfc40e73071 (diff)
downloadmullvadvpn-6b1c918efc3cb0ef02d6e4e058d1dfe25dce7b33.tar.xz
mullvadvpn-6b1c918efc3cb0ef02d6e4e058d1dfe25dce7b33.zip
Add tests for quantum resistant tunnel
Diffstat (limited to 'android/app/src/androidTest')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt19
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt69
2 files changed, 88 insertions, 0 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt
new file mode 100644
index 0000000000..26ba0d5f4b
--- /dev/null
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/Finders.kt
@@ -0,0 +1,19 @@
+package net.mullvad.mullvadvpn
+
+import androidx.compose.ui.test.SemanticsNodeInteraction
+import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
+import androidx.compose.ui.test.hasAnyChild
+import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.hasText
+
+fun SemanticsNodeInteractionsProvider.onNodeWithTagAndChildrenText(
+ testTag: String,
+ text: String,
+ substring: Boolean = false,
+ ignoreCase: Boolean = false,
+ useUnmergedTree: Boolean = false
+): SemanticsNodeInteraction =
+ onNode(
+ hasTestTag(testTag).and(hasAnyChild(hasText(text, substring, ignoreCase))),
+ useUnmergedTree
+ )
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 046e773bc7..728dce08d9 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
@@ -19,7 +19,11 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState
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.model.QuantumResistantState
+import net.mullvad.mullvadvpn.onNodeWithTagAndChildrenText
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
import net.mullvad.mullvadvpn.viewmodel.StagedDns
import org.junit.Before
@@ -563,6 +567,71 @@ class VpnSettingsScreenTest {
composeTestRule.onNodeWithText("Submit").assertIsNotEnabled()
}
+ @Test
+ @OptIn(ExperimentalMaterialApi::class)
+ fun testShowSelectedTunnelQuantumOption() {
+ // Arrange
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState =
+ VpnSettingsUiState.DefaultUiState(quantumResistant = QuantumResistantState.On),
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG))
+
+ // Assert
+ composeTestRule
+ .onNodeWithTagAndChildrenText(testTag = LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG, text = "On")
+ .assertExists()
+ }
+
+ @Test
+ @OptIn(ExperimentalMaterialApi::class)
+ fun testSelectTunnelQuantumOption() {
+ // Arrange
+ val mockSelectQuantumResistantSettingListener: (QuantumResistantState) -> Unit =
+ mockk(relaxed = true)
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState =
+ VpnSettingsUiState.DefaultUiState(
+ quantumResistant = QuantumResistantState.Auto,
+ ),
+ onSelectQuantumResistanceSetting = mockSelectQuantumResistantSettingListener,
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG))
+
+ // Assert
+ composeTestRule
+ .onNodeWithTagAndChildrenText(testTag = LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG, text = "On")
+ .performClick()
+ verify(exactly = 1) {
+ mockSelectQuantumResistantSettingListener.invoke(QuantumResistantState.On)
+ }
+ }
+
+ @Test
+ @OptIn(ExperimentalMaterialApi::class)
+ fun testShowTunnelQuantumInfo() {
+ // Arrange
+ composeTestRule.setContent {
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.QuantumResistanceInfoDialogUiState(),
+ toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
+ )
+ }
+
+ // Assert
+ composeTestRule.onNodeWithText("Got it!").assertExists()
+ }
+
companion object {
private const val LOCAL_DNS_SERVER_WARNING =
"The local DNS server will not work unless you enable " +