diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-01-23 09:04:27 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-01-31 15:28:35 +0100 |
| commit | 1f85f3a1ffd5fe3ba05c5c545f5a116134041670 (patch) | |
| tree | a98d33e995a02020d15dbadaa9fd8079f2168419 /android/test/mockapi | |
| parent | 5d9f8470a857855dcec276a90926d0a9b8ce4cf0 (diff) | |
| download | mullvadvpn-1f85f3a1ffd5fe3ba05c5c545f5a116134041670.tar.xz mullvadvpn-1f85f3a1ffd5fe3ba05c5c545f5a116134041670.zip | |
Add account expiry mockapi test
Diffstat (limited to 'android/test/mockapi')
2 files changed, 94 insertions, 2 deletions
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt new file mode 100644 index 0000000000..469040c4c4 --- /dev/null +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt @@ -0,0 +1,93 @@ +package net.mullvad.mullvadvpn.test.mockapi + +import androidx.test.uiautomator.By +import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer +import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove +import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown +import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout +import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST +import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2 +import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2 +import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero +import net.mullvad.mullvadvpn.util.toExpiryDateString +import org.junit.jupiter.api.Disabled +import org.junit.jupiter.api.Test + +class AccountExpiryMockApiTest : MockApiTest() { + + @Test + fun testAccountExpiryDateUpdated() { + // Arrange + val validAccountToken = "1234123412341234" + val oldAccountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1) + apiDispatcher.apply { + expectedAccountToken = validAccountToken + accountExpiry = oldAccountExpiry + devices = DEFAULT_DEVICE_LIST.toMutableMap() + devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2 + } + + // Act + app.launch(endpoint) + device.clickAgreeOnPrivacyDisclaimer() + device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove() + device.dismissChangelogDialogIfShown() + app.waitForLoginPrompt() + app.attemptLogin(validAccountToken) + + // Assert logged in + app.ensureLoggedIn() + + // Add one month to the account expiry + val newAccountExpiry = oldAccountExpiry.plusMonths(1) + apiDispatcher.accountExpiry = newAccountExpiry + + // Go to account page to update the account expiry + app.clickAccountCog() + + app.ensureAccountScreen() + device.findObjectWithTimeout(By.text(newAccountExpiry.toExpiryDateString())) + } + + @Test + @Disabled( + "Disabled since we have a bug in the app that makes it unstable. " + + "We can restore it after the bug has been fixed" + ) + fun testAccountTimeExpiredWhileUsingTheAppShouldShowOutOfTimeScreen() { + // Arrange + val validAccountToken = "1234123412341234" + val oldAccountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1) + apiDispatcher.apply { + expectedAccountToken = validAccountToken + accountExpiry = oldAccountExpiry + devices = DEFAULT_DEVICE_LIST.toMutableMap() + devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2 + } + + // Act + app.launch(endpoint) + device.clickAgreeOnPrivacyDisclaimer() + device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove() + device.dismissChangelogDialogIfShown() + app.waitForLoginPrompt() + app.attemptLogin(validAccountToken) + + // Assert logged in + app.ensureLoggedIn() + + // Set account time as expired + val newAccountExpiry = oldAccountExpiry.minusMonths(2) + apiDispatcher.accountExpiry = newAccountExpiry + + // Go to account page to update the account expiry + app.clickAccountCog() + app.ensureAccountScreen() + + // Go back to the main screen + device.pressBack() + + // Assert that we show the out of time screen + app.ensureOutOfTime() + } +} diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt index 0dcbc308dc..6b03a65020 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt @@ -7,7 +7,6 @@ import net.mullvad.mullvadvpn.test.common.constant.DEFAULT_INTERACTION_TIMEOUT import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown -import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2 @@ -85,6 +84,6 @@ class LoginMockApiTest : MockApiTest() { app.attemptLogin(validAccountToken) // Assert - device.findObjectWithTimeout(By.text("Out of time")) + app.ensureOutOfTime() } } |
