diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-05-30 13:05:30 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-06-07 17:51:06 +0200 |
| commit | 6b1c918efc3cb0ef02d6e4e058d1dfe25dce7b33 (patch) | |
| tree | 41feb4f2540d9e589cee8bbf1275269f6cb9ab44 /android/app/src/androidTest | |
| parent | 07f1ecbeb787ce59812b59c0b7974cfc40e73071 (diff) | |
| download | mullvadvpn-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.kt | 19 | ||||
| -rw-r--r-- | android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt | 69 |
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 " + |
