Introduce multiple accounts support in UI tests

ALlow using different accounts in test suites depending on account type, scope, status.

MAILANDR-640
This commit is contained in:
Niccolò Forlini
2023-07-07 08:59:47 +00:00
parent 9561c7fd1c
commit bcff71292e
41 changed files with 310 additions and 255 deletions
@@ -20,18 +20,15 @@ package ch.protonmail.android.uitest
import androidx.compose.ui.test.junit4.ComposeTestRule
import ch.protonmail.android.uitest.helpers.core.TestIdWatcher
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.login.LoginTestUserTypes
import ch.protonmail.android.uitest.helpers.login.LoginType
import ch.protonmail.android.uitest.helpers.network.authenticationDispatcher
import ch.protonmail.android.uitest.rule.MainInitializerRule
import ch.protonmail.android.uitest.rule.MockTimeRule
import ch.protonmail.android.uitest.util.ComposeTestRuleHolder
import dagger.hilt.android.testing.HiltAndroidRule
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import me.proton.core.accountmanager.domain.AccountManager
import me.proton.core.user.domain.UserManager
import okhttp3.mockwebserver.MockWebServer
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.rules.RuleChain
@@ -40,23 +37,17 @@ import javax.inject.Inject
/**
* A base test class used in UI tests that require complete network isolation.
*
* @param loginStrategy the login strategy to follow for a given test suite.
* @param loginType the login type to use for a given test suite.
*/
@HiltAndroidTest
internal open class MockedNetworkTest(
private val loginStrategy: LoginStrategy = LoginStrategy.LoggedIn.PrimaryUser
private val loginType: LoginType = LoginTestUserTypes.Deprecated.GrumpyCat
) {
private val hiltAndroidRule = HiltAndroidRule(this)
private val composeTestRule: ComposeTestRule = ComposeTestRuleHolder.createAndGetComposeRule()
@Inject
lateinit var accountManager: AccountManager
@Inject
lateinit var userManager: UserManager
@Inject
lateinit var mockWebServer: MockWebServer
@@ -76,37 +67,6 @@ internal open class MockedNetworkTest(
@Before
fun setup() {
hiltAndroidRule.inject()
handleLogin()
}
@After
fun tearDown() {
handleLogout()
}
private fun handleLogin() {
when (loginStrategy) {
is LoginStrategy.LoggedIn.PrimaryUser -> {
runBlocking(Dispatchers.IO) {
accountManager.addAccount(loginStrategy.account, loginStrategy.session)
userManager.addUser(loginStrategy.user, emptyList())
}
}
else -> Unit
}
}
private fun handleLogout() {
when (loginStrategy) {
is LoginStrategy.LoggedIn.PrimaryUser -> {
runBlocking(Dispatchers.IO) {
accountManager.removeAccount(loginStrategy.account.userId)
}
}
else -> Unit
}
mockWebServer.dispatcher = authenticationDispatcher(loginType)
}
}
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.composer
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.MockPriority
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -30,7 +31,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.snackbar.SnackbarTextEntry
import ch.protonmail.android.uitest.robot.common.section.keyboardSection
@@ -61,7 +61,7 @@ import org.junit.Test
@SmokeExtendedTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut), ComposerTests {
internal class ComposerMainTests : MockedNetworkTest(), ComposerTests {
@JvmField
@BindValue
@@ -71,7 +71,7 @@ internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrate
@Test
@TestId("79034")
fun checkNavigationToComposerIsDisabledWhenFeatureToggleIsEnabled() {
mockWebServer.dispatcher = mockNetworkDispatcher {
mockWebServer.dispatcher combineWith mockNetworkDispatcher {
addMockRequests(
"/mail/v4/messages"
respondWith "/mail/v4/messages/messages_empty.json"
@@ -99,7 +99,7 @@ internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrate
@Test
@TestId("79035")
fun checkNavigationToComposerIsEnabledWhenFeatureToggleIsDisabled() {
mockWebServer.dispatcher = mockNetworkDispatcher {
mockWebServer.dispatcher combineWith mockNetworkDispatcher {
addMockRequests(
"/mail/v4/messages"
respondWith "/mail/v4/messages/messages_empty.json"
@@ -128,7 +128,7 @@ internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrate
@Test
@TestId("79036")
fun checkComposerMainFieldsAndInteractions() {
mockWebServer.dispatcher = mockNetworkDispatcher {
mockWebServer.dispatcher combineWith mockNetworkDispatcher {
addMockRequests(
"/mail/v4/messages"
respondWith "/mail/v4/messages/messages_empty.json"
@@ -188,7 +188,7 @@ internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrate
@Test
@TestId("79037")
fun checkComposerCloseNavigation() {
mockWebServer.dispatcher = mockNetworkDispatcher {
mockWebServer.dispatcher combineWith mockNetworkDispatcher {
addMockRequests(
"/mail/v4/messages"
respondWith "/mail/v4/messages/messages_empty.json"
@@ -219,7 +219,7 @@ internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrate
@Test
@TestId("79038")
fun checkComposerBackButtonNavigation() {
mockWebServer.dispatcher = mockNetworkDispatcher {
mockWebServer.dispatcher combineWith mockNetworkDispatcher {
addMockRequests(
"/mail/v4/messages"
respondWith "/mail/v4/messages/messages_empty.json"
@@ -252,7 +252,7 @@ internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrate
@Test
@TestId("79039")
fun checkComposerKeyboardDismissalWithBackButton() {
mockWebServer.dispatcher = mockNetworkDispatcher {
mockWebServer.dispatcher combineWith mockNetworkDispatcher {
addMockRequests(
"/mail/v4/messages"
respondWith "/mail/v4/messages/messages_empty.json"
@@ -283,7 +283,7 @@ internal class ComposerMainTests : MockedNetworkTest(loginStrategy = LoginStrate
@Test
@TestId("190226 - 190227")
fun testCollapseExpandChevron() {
mockWebServer.dispatcher = composerMockNetworkDispatcher()
mockWebServer.dispatcher combineWith composerMockNetworkDispatcher()
navigator {
navigateTo(Destination.Composer)
@@ -19,13 +19,13 @@
package ch.protonmail.android.uitest.e2e.composer.chips
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.RegressionTest
import ch.protonmail.android.test.annotations.suite.SmokeTest
import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.robot.composer.composerRobot
import ch.protonmail.android.uitest.robot.composer.model.chips.ChipsCreationTrigger
import ch.protonmail.android.uitest.robot.composer.model.chips.RecipientChipEntry
@@ -44,9 +44,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ComposerRecipientsChipsDeletionTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut),
ComposerChipsTests {
internal class ComposerRecipientsChipsDeletionTests : MockedNetworkTest(), ComposerChipsTests {
@JvmField
@BindValue
@@ -54,7 +52,7 @@ internal class ComposerRecipientsChipsDeletionTests :
@Before
fun navigateToComposer() {
mockWebServer.dispatcher = composerMockNetworkDispatcher()
mockWebServer.dispatcher combineWith composerMockNetworkDispatcher()
navigator { navigateTo(Destination.Composer) }
}
@@ -19,13 +19,13 @@
package ch.protonmail.android.uitest.e2e.composer.chips
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.RegressionTest
import ch.protonmail.android.test.annotations.suite.SmokeTest
import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.robot.composer.composerRobot
import ch.protonmail.android.uitest.robot.composer.model.chips.RecipientChipEntry
import ch.protonmail.android.uitest.robot.composer.model.chips.RecipientChipValidationState
@@ -45,9 +45,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ComposerRecipientsCollapsedChipsTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut),
ComposerChipsTests {
internal class ComposerRecipientsCollapsedChipsTests : MockedNetworkTest(), ComposerChipsTests {
@JvmField
@BindValue
@@ -83,7 +81,7 @@ internal class ComposerRecipientsCollapsedChipsTests :
@Before
fun navigateToComposer() {
mockWebServer.dispatcher = composerMockNetworkDispatcher()
mockWebServer.dispatcher combineWith composerMockNetworkDispatcher()
navigator { navigateTo(Destination.Composer) }
}
@@ -19,12 +19,12 @@
package ch.protonmail.android.uitest.e2e.composer.chips
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.RegressionTest
import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.models.snackbar.SnackbarTextEntry
import ch.protonmail.android.uitest.robot.common.section.snackbarSection
import ch.protonmail.android.uitest.robot.common.section.verify
@@ -47,9 +47,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ComposerRecipientsDuplicatedChipsTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut),
ComposerChipsTests {
internal class ComposerRecipientsDuplicatedChipsTests : MockedNetworkTest(), ComposerChipsTests {
@JvmField
@BindValue
@@ -63,7 +61,7 @@ internal class ComposerRecipientsDuplicatedChipsTests :
@Before
fun navigateToComposer() {
mockWebServer.dispatcher = composerMockNetworkDispatcher()
mockWebServer.dispatcher combineWith composerMockNetworkDispatcher()
navigator { navigateTo(Destination.Composer) }
}
@@ -19,13 +19,13 @@
package ch.protonmail.android.uitest.e2e.composer.chips
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.SmokeExtendedTest
import ch.protonmail.android.test.annotations.suite.SmokeTest
import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.models.snackbar.SnackbarTextEntry
import ch.protonmail.android.uitest.robot.common.section.snackbarSection
import ch.protonmail.android.uitest.robot.common.section.verify
@@ -49,9 +49,7 @@ import org.junit.Test
@SmokeExtendedTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ComposerRecipientsInvalidChipsTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut),
ComposerChipsTests {
internal class ComposerRecipientsInvalidChipsTests : MockedNetworkTest(), ComposerChipsTests {
@JvmField
@BindValue
@@ -65,7 +63,7 @@ internal class ComposerRecipientsInvalidChipsTests :
@Before
fun navigateToComposer() {
mockWebServer.dispatcher = composerMockNetworkDispatcher()
mockWebServer.dispatcher combineWith composerMockNetworkDispatcher()
navigator { navigateTo(Destination.Composer) }
}
@@ -19,13 +19,13 @@
package ch.protonmail.android.uitest.e2e.composer.chips
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.SmokeExtendedTest
import ch.protonmail.android.test.annotations.suite.SmokeTest
import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.robot.composer.composerRobot
import ch.protonmail.android.uitest.robot.composer.model.chips.ChipsCreationTrigger
import ch.protonmail.android.uitest.robot.composer.model.chips.RecipientChipEntry
@@ -46,9 +46,7 @@ import org.junit.Test
@SmokeExtendedTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ComposerRecipientsValidChipsTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut),
ComposerChipsTests {
internal class ComposerRecipientsValidChipsTests : MockedNetworkTest(), ComposerChipsTests {
@JvmField
@BindValue
@@ -62,7 +60,7 @@ internal class ComposerRecipientsValidChipsTests :
@Before
fun navigateToComposer() {
mockWebServer.dispatcher = composerMockNetworkDispatcher()
mockWebServer.dispatcher combineWith composerMockNetworkDispatcher()
navigator { navigateTo(Destination.Composer) }
}
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.composer.drafts
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.SmokeTest
import ch.protonmail.android.test.annotations.suite.TemporaryTest
import ch.protonmail.android.uitest.MockedNetworkTest
@@ -26,7 +27,6 @@ import ch.protonmail.android.uitest.e2e.composer.ComposerTests
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.mailbox.MailboxListItemEntry
import ch.protonmail.android.uitest.models.mailbox.MailboxType
@@ -55,7 +55,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ComposerDraftsMainTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut), ComposerTests {
internal class ComposerDraftsMainTests : MockedNetworkTest(), ComposerTests {
@JvmField
@BindValue
@@ -63,7 +63,7 @@ internal class ComposerDraftsMainTests : MockedNetworkTest(loginStrategy = Login
@Before
fun navigateToComposer() {
mockWebServer.dispatcher = composerMockNetworkDispatcher()
mockWebServer.dispatcher combineWith composerMockNetworkDispatcher()
navigator { navigateTo(Destination.Composer) }
}
@@ -20,6 +20,7 @@ package ch.protonmail.android.uitest.e2e.mailbox
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.mailsettings.domain.model.Theme
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -31,7 +32,6 @@ import ch.protonmail.android.uitest.helpers.core.AppThemeHelper
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.messageDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.messageBodySection
@@ -53,7 +53,7 @@ import javax.inject.Inject
@SmokeExtendedTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationMarkAsReadTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class ConversationMarkAsReadTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -70,7 +70,7 @@ internal class ConversationMarkAsReadTests : MockedNetworkTest(loginStrategy = L
@Test
@TestId("78994")
fun checkConversationMarkedAsReadWhenLastUnreadMessageIsOpened() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_78994.json"
@@ -18,6 +18,7 @@
package ch.protonmail.android.uitest.e2e.mailbox
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.SmokeTest
import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
@@ -40,7 +41,7 @@ internal class MailboxFlowTest : MockedNetworkTest() {
@Before
fun setupDispatcher() {
mockWebServer.dispatcher = mockNetworkDispatcher()
mockWebServer.dispatcher combineWith mockNetworkDispatcher()
navigator { navigateTo(Destination.Inbox, performLoginViaUI = false) }
}
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.withStatusCode
@@ -27,7 +28,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.mailbox.MailboxListItemEntry
@@ -44,7 +44,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MailboxParticipantsTest : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class MailboxParticipantsTest : MockedNetworkTest() {
@JvmField
@BindValue
@@ -77,7 +77,10 @@ internal class MailboxParticipantsTest : MockedNetworkTest(loginStrategy = Login
@Test
@TestId("77426")
fun checkAvatarInitialsWithMissingParticipantDetailsInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false, useDefaultContacts = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultContacts = false
) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_77426.json"
@@ -108,7 +111,10 @@ internal class MailboxParticipantsTest : MockedNetworkTest(loginStrategy = Login
@Test
@TestId("77427")
fun checkAvatarInitialsWithMissingParticipantDetailsInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false, useDefaultContacts = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultContacts = false
) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_77427.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.serveOnce
import ch.protonmail.android.networkmocks.mockwebserver.requests.withNetworkDelay
@@ -28,7 +29,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.mailbox.MailboxListItemEntry
@@ -46,7 +46,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MailboxSwitchTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class MailboxSwitchTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -63,7 +63,7 @@ internal class MailboxSwitchTests : MockedNetworkTest(loginStrategy = LoginStrat
@Test
@TestId("183527")
fun checkMailboxSwitchConversationToMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_183527.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.messageDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.messageBodySection
@@ -47,7 +47,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageLoadingTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class MessageLoadingTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -56,7 +56,7 @@ internal class MessageLoadingTests : MockedNetworkTest(loginStrategy = LoginStra
@Test
@TestId("66392")
fun checkMessageLoadedInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_66392.json"
@@ -106,7 +106,7 @@ internal class MessageLoadingTests : MockedNetworkTest(loginStrategy = LoginStra
@Test
@TestId("66393")
fun checkMessageLoadedInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_66393.json"
@@ -159,7 +159,7 @@ internal class MessageLoadingTests : MockedNetworkTest(loginStrategy = LoginStra
@Test
@TestId("66394")
fun checkLongMessageLoadedInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_66394.json"
@@ -209,7 +209,7 @@ internal class MessageLoadingTests : MockedNetworkTest(loginStrategy = LoginStra
@Test
@TestId("66395")
fun checkLongMessageLoadedInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_66395.json"
@@ -262,7 +262,7 @@ internal class MessageLoadingTests : MockedNetworkTest(loginStrategy = LoginStra
@Test
@TestId("78993")
fun checkMostRecentUnreadMessageIsOpenedInConversation() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_78993.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.allmail
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.MockPriority
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.folders.MailFolderEntry
@@ -48,7 +48,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class AllMailMailboxFolderColorsTests : MockedNetworkTest() {
private val menuRobot = MenuRobot()
@@ -75,7 +75,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80673")
fun checkFolderColorInAllMailWithSettingEnabledAndParentInheritingDisabledInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -104,7 +104,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80674")
fun checkFolderColorInAllMailWithSettingEnabledAndParentInheritingDisabledInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -133,7 +133,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80675")
fun checkFolderColorInAllMailWithSettingEnabledAndParentInheritingEnabledInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -162,7 +162,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80676")
fun checkFolderColorInAllMailWithSettingEnabledAndParentInheritingEnabledInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -191,7 +191,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80677")
fun checkFolderColorInAllMailWithSettingDisabledAndParentInheritingEnabledInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -220,7 +220,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80678")
fun checkFolderColorInAllMailWithSettingDisabledAndParentInheritingEnabledInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -249,7 +249,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80679")
fun checkFolderColorInAllMailWithSettingDisabledAndParentInheritingDisabledInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -278,7 +278,7 @@ internal class AllMailMailboxFolderColorsTests : MockedNetworkTest(loginStrategy
@Test
@TestId("80680")
fun checkFolderColorInAllMailWithSettingDisabledAndParentInheritingDisabledInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false
) {
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bodycontent
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.conversationDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.messageBodySection
@@ -44,7 +44,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationDetailHtmlSanitizationTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class ConversationDetailHtmlSanitizationTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -53,7 +53,7 @@ internal class ConversationDetailHtmlSanitizationTests : MockedNetworkTest(login
@Test
@TestId("189699")
fun checkHtmlSanitizationInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -22,6 +22,7 @@ import arrow.core.Either
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.maildetail.domain.usecase.GetDecryptedMessageBody
import ch.protonmail.android.mailmessage.domain.entity.MimeType
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -34,7 +35,6 @@ import ch.protonmail.android.uitest.e2e.mailbox.detail.DetailRemoteContentTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.conversationDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.conversation.messagesCollapsedSection
@@ -52,9 +52,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationDetailRemoteContentTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut),
DetailRemoteContentTest {
internal class ConversationDetailRemoteContentTests : MockedNetworkTest(), DetailRemoteContentTest {
private val expectedBodyText = "Various img elements"
private val expectedBodyTextSecondMessage = "Various img elements (2)"
@@ -80,7 +78,7 @@ internal class ConversationDetailRemoteContentTests :
@SmokeTest
@TestId("184206")
fun checkRemoteContentNotBlockedWhenConversationModeIsEnabled() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_184206.json"
@@ -116,7 +114,7 @@ internal class ConversationDetailRemoteContentTests :
@Test
@TestId("184208")
fun checkRemoteContentNotBlockedWithMultipleMessagesWhenConversationModeIsEnabled() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_184208.json"
@@ -152,7 +150,7 @@ internal class ConversationDetailRemoteContentTests :
@Test
@TestId("184209")
fun checkRemoteContentNotBlockedOnMultipleMessagesWhenConversationModeIsEnabled() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_184209.json"
@@ -217,7 +215,7 @@ internal class ConversationDetailRemoteContentTests :
@SmokeTest
@TestId("184211")
fun checkRemoteContentBlockedWhenConversationModeIsEnabled() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_184211.json"
@@ -253,7 +251,7 @@ internal class ConversationDetailRemoteContentTests :
@Test
@TestId("184212")
fun checkRemoteContentBlockedWithMultipleMessagesWhenConversationModeIsEnabled() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_184212.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bodycontent
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.messageDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.messageBodySection
@@ -44,7 +44,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageDetailHtmlSanitizationTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class MessageDetailHtmlSanitizationTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -53,7 +53,7 @@ internal class MessageDetailHtmlSanitizationTests : MockedNetworkTest(loginStrat
@Test
@TestId("189700")
fun checkHtmlSanitizationInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -22,6 +22,7 @@ import arrow.core.Either
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.maildetail.domain.usecase.GetDecryptedMessageBody
import ch.protonmail.android.mailmessage.domain.entity.MimeType
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -33,7 +34,6 @@ import ch.protonmail.android.uitest.e2e.mailbox.detail.DetailRemoteContentTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.messageDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.messageBodySection
@@ -49,9 +49,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageDetailRemoteContentTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut),
DetailRemoteContentTest {
internal class MessageDetailRemoteContentTests : MockedNetworkTest(), DetailRemoteContentTest {
private val expectedBodyText = "Various img elements"
@@ -75,7 +73,7 @@ internal class MessageDetailRemoteContentTests :
@Test
@TestId("184207")
fun checkRemoteContentNotBlockedWhenConversationModeIsDisabled() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_184207.json"
@@ -108,7 +106,7 @@ internal class MessageDetailRemoteContentTests :
@Test
@TestId("184210")
fun checkRemoteContentBlockedWhenConversationModeIsDisabled() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_184210.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.labelas
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.conversationDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.bottomBarSection
@@ -51,9 +51,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationDetailMoveToBottomSheetDismissalTests : MockedNetworkTest(
loginStrategy = LoginStrategy.LoggedOut
) {
internal class ConversationDetailMoveToBottomSheetDismissalTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -62,7 +60,7 @@ internal class ConversationDetailMoveToBottomSheetDismissalTests : MockedNetwork
@Test
@TestId("79353")
fun checkConversationMoveToBottomSheetDismissalWithBackButton() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79353.json"
@@ -111,7 +109,7 @@ internal class ConversationDetailMoveToBottomSheetDismissalTests : MockedNetwork
@Test
@TestId("79355")
fun checkConversationMoveToBottomSheetDismissalWithExternalTap() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79355.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.labelas
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.messageDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.bottomBarSection
@@ -48,8 +48,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageDetailLabelAsBottomSheetDismissalTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class MessageDetailLabelAsBottomSheetDismissalTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -58,7 +57,7 @@ internal class MessageDetailLabelAsBottomSheetDismissalTests :
@Test
@TestId("79354/2")
fun checkMessageLabelAsBottomSheetDismissalWithBackButton() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79354.json"
@@ -100,7 +99,7 @@ internal class MessageDetailLabelAsBottomSheetDismissalTests :
@Test
@TestId("79356/2")
fun checkMessageLabelAsBottomSheetDismissalWithExternalTap() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79356.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.moveto
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.conversationDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.bottomBarSection
@@ -50,9 +50,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationDetailLabelAsBottomSheetDismissalTests : MockedNetworkTest(
loginStrategy = LoginStrategy.LoggedOut
) {
internal class ConversationDetailLabelAsBottomSheetDismissalTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -61,7 +59,7 @@ internal class ConversationDetailLabelAsBottomSheetDismissalTests : MockedNetwor
@Test
@TestId("79353/2")
fun checkConversationLabelAsBottomSheetDismissalWithBackButton() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79353.json"
@@ -110,7 +108,7 @@ internal class ConversationDetailLabelAsBottomSheetDismissalTests : MockedNetwor
@Test
@TestId("79355/2")
fun checkConversationLabelAsBottomSheetDismissalWithExternalTap() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79355.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.moveto
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.conversationDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.bottomBarSection
@@ -46,9 +46,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationDetailMoveToBottomSheetMainTests : MockedNetworkTest(
loginStrategy = LoginStrategy.LoggedOut
) {
internal class ConversationDetailMoveToBottomSheetMainTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -57,7 +55,7 @@ internal class ConversationDetailMoveToBottomSheetMainTests : MockedNetworkTest(
@Test
@TestId("185409")
fun checkMoveToBottomSheetComponentsInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_185409.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.moveto
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.serveOnce
@@ -28,7 +29,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.folders.Tint
@@ -59,7 +59,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class DetailMoveToBottomSheetActionTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class DetailMoveToBottomSheetActionTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -83,7 +83,7 @@ internal class DetailMoveToBottomSheetActionTests : MockedNetworkTest(loginStrat
@Test
@TestId("185418")
fun checkMoveToBottomSheetSystemToSystemFolder() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_185418.json"
@@ -123,7 +123,7 @@ internal class DetailMoveToBottomSheetActionTests : MockedNetworkTest(loginStrat
@Test
@TestId("185419")
fun checkMoveToBottomSheetCustomToCustomFolder() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false,
useDefaultMailReadResponses = true
@@ -166,7 +166,7 @@ internal class DetailMoveToBottomSheetActionTests : MockedNetworkTest(loginStrat
@Test
@TestId("185419/2 - 185421")
fun checkMoveToBottomSheetCustomToSystemFolder() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false,
useDefaultMailReadResponses = true
@@ -209,7 +209,7 @@ internal class DetailMoveToBottomSheetActionTests : MockedNetworkTest(loginStrat
@Test
@TestId("185419/3 - 185423")
fun checkMoveToBottomSheetSystemToCustomFolder() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false,
useDefaultMailReadResponses = true
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.moveto
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.serveOnce
@@ -28,7 +29,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.folders.MailLabelEntry
@@ -52,7 +52,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class DetailMoveToBottomSheetLabelsTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class DetailMoveToBottomSheetLabelsTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -72,7 +72,7 @@ internal class DetailMoveToBottomSheetLabelsTests : MockedNetworkTest(loginStrat
@Test
@TestId("185425")
fun checkMoveToBottomSheetMoveToTrashFolder() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultLabels = false,
useDefaultMailReadResponses = true
@@ -135,7 +135,10 @@ internal class DetailMoveToBottomSheetLabelsTests : MockedNetworkTest(loginStrat
@Test
@TestId("185425/2 - 185426")
fun checkMoveToBottomSheetMoveToSpamFolder() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false, useDefaultLabels = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultLabels = false
) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_185425.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.moveto
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.folders.Tint
import ch.protonmail.android.uitest.robot.detail.conversationDetailRobot
@@ -48,9 +48,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class DetailMoveToBottomSheetMainTests : MockedNetworkTest(
loginStrategy = LoginStrategy.LoggedOut
) {
internal class DetailMoveToBottomSheetMainTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -72,7 +70,7 @@ internal class DetailMoveToBottomSheetMainTests : MockedNetworkTest(
@Test
@TestId("185411")
fun checkMoveToBottomSheetComponentsWithNoCustomFolders() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_185411.json"
@@ -106,7 +104,7 @@ internal class DetailMoveToBottomSheetMainTests : MockedNetworkTest(
@Test
@TestId("185412")
fun checkMoveToBottomSheetComponentsWithCustomFolders() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultCustomFolders = false,
useDefaultMailReadResponses = true
@@ -149,7 +147,7 @@ internal class DetailMoveToBottomSheetMainTests : MockedNetworkTest(
@Test
@TestId("185414")
fun checkMoveToBottomSheetComponentsSelection() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultMailReadResponses = true
) {
@@ -194,7 +192,7 @@ internal class DetailMoveToBottomSheetMainTests : MockedNetworkTest(
@Test
@TestId("185415")
fun checkMoveToBottomSheetSelectionIsGoneAfterDismissal() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultMailReadResponses = true
) {
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.moveto
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.messageDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.bottomBarSection
@@ -49,8 +49,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageDetailMoveToBottomSheetDismissalTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class MessageDetailMoveToBottomSheetDismissalTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -59,7 +58,7 @@ internal class MessageDetailMoveToBottomSheetDismissalTests :
@Test
@TestId("79354")
fun checkMessageMoveToBottomSheetDismissalWithBackButton() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79354.json"
@@ -101,7 +100,7 @@ internal class MessageDetailMoveToBottomSheetDismissalTests :
@Test
@TestId("79356")
fun checkMessageMoveToBottomSheetDismissalWithExternalTap() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_79356.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.detail.bottomsheet.moveto
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.matchWildcards
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.robot.detail.messageDetailRobot
import ch.protonmail.android.uitest.robot.detail.section.bottomBarSection
@@ -46,9 +46,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageDetailMoveToBottomSheetMainTests : MockedNetworkTest(
loginStrategy = LoginStrategy.LoggedOut
) {
internal class MessageDetailMoveToBottomSheetMainTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -57,7 +55,7 @@ internal class MessageDetailMoveToBottomSheetMainTests : MockedNetworkTest(
@Test
@TestId("185410")
fun checkMoveToBottomSheetComponentsInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_185410.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.drafts
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.MockPriority
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
@@ -29,7 +30,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.mailbox.MailboxListItemEntry
@@ -46,7 +46,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class DraftsMailboxTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class DraftsMailboxTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -55,7 +55,7 @@ internal class DraftsMailboxTests : MockedNetworkTest(loginStrategy = LoginStrat
@Test
@TestId("80395")
fun checkParticipantNameInDraftFoldersWhenNotSpecified() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_80395.json"
@@ -91,7 +91,10 @@ internal class DraftsMailboxTests : MockedNetworkTest(loginStrategy = LoginStrat
@Test
@TestId("80396")
fun checkParticipantNameInDraftFoldersWhenSpecifiedAndIsAContact() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false, useDefaultContacts = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultContacts = false
) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_80396.json"
@@ -133,7 +136,10 @@ internal class DraftsMailboxTests : MockedNetworkTest(loginStrategy = LoginStrat
@Test
@TestId("80397")
fun checkParticipantNameInDraftFoldersWhenSpecifiedAndIsNotAContact() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false, useDefaultContacts = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultMailSettings = false,
useDefaultContacts = false
) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_80397.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.errors.append
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.MockPriority
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.serveOnce
@@ -30,7 +31,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.mailbox.MailboxListItemEntry
@@ -44,8 +44,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationModeAppendItemsTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut), MailboxAppendItemsTests {
internal class ConversationModeAppendItemsTests : MockedNetworkTest(), MailboxAppendItemsTests {
@JvmField
@BindValue
@@ -63,7 +62,7 @@ internal class ConversationModeAppendItemsTests :
@TestId("189113")
@Suppress("MaxLineLength")
fun checkAppendErrorAndRetryInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -94,7 +93,7 @@ internal class ConversationModeAppendItemsTests :
@TestId("189113/2 - 189158")
@Suppress("MaxLineLength")
fun checkAppendItemsInConversationMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.errors.append
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.MockPriority
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.serveOnce
@@ -30,7 +31,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.avatar.AvatarInitial
import ch.protonmail.android.uitest.models.mailbox.MailboxListItemEntry
@@ -44,8 +44,7 @@ import org.junit.Test
@SmokeTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageModeAppendItemsTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut), MailboxAppendItemsTests {
internal class MessageModeAppendItemsTests : MockedNetworkTest(), MailboxAppendItemsTests {
@JvmField
@BindValue
@@ -63,7 +62,7 @@ internal class MessageModeAppendItemsTests :
@TestId("189114")
@Suppress("MaxLineLength")
fun checkAppendErrorAndRetryInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -94,7 +93,7 @@ internal class MessageModeAppendItemsTests :
@TestId("189114/2 - 189159")
@Suppress("MaxLineLength")
fun checkAppendItemsInMessageMode() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.errors.pulltorefresh
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.serveOnce
@@ -30,7 +31,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import dagger.hilt.android.testing.BindValue
import dagger.hilt.android.testing.HiltAndroidTest
@@ -43,7 +43,7 @@ import org.junit.Test
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class ConversationModeMailboxPullToRefreshErrorTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut), MailboxPullToRefreshErrorTests {
MockedNetworkTest(), MailboxPullToRefreshErrorTests {
@JvmField
@BindValue
@@ -52,7 +52,7 @@ internal class ConversationModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188892")
fun checkConversationsLoadingErrorToError() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -76,7 +76,7 @@ internal class ConversationModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188893")
fun checkConversationsLoadingContentToError() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -101,7 +101,7 @@ internal class ConversationModeMailboxPullToRefreshErrorTests :
@SmokeTest
@TestId("188894")
fun checkConversationsLoadingErrorToContent() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -125,7 +125,7 @@ internal class ConversationModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188895")
fun checkConversationsLoadingEmptyToError() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -149,7 +149,7 @@ internal class ConversationModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188896")
fun checkConversationsLoadingErrorToEmpty() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -174,7 +174,7 @@ internal class ConversationModeMailboxPullToRefreshErrorTests :
@SmokeTest
@TestId("188897")
fun checkConversationsLoadingEmptyToContent() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_conversation.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.mailbox.errors.pulltorefresh
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.serveOnce
@@ -30,7 +31,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import dagger.hilt.android.testing.BindValue
import dagger.hilt.android.testing.HiltAndroidTest
@@ -43,7 +43,7 @@ import org.junit.Test
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class MessageModeMailboxPullToRefreshErrorTests :
MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut), MailboxPullToRefreshErrorTests {
MockedNetworkTest(), MailboxPullToRefreshErrorTests {
@JvmField
@BindValue
@@ -52,7 +52,7 @@ internal class MessageModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188899")
fun checkMessagesLoadingErrorToError() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -76,7 +76,7 @@ internal class MessageModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188900")
fun checkMessagesLoadingContentToError() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -101,7 +101,7 @@ internal class MessageModeMailboxPullToRefreshErrorTests :
@SmokeTest
@TestId("188901")
fun checkMessagesLoadingErrorToContent() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -125,7 +125,7 @@ internal class MessageModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188902")
fun checkMessagesLoadingEmptyToError() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -149,7 +149,7 @@ internal class MessageModeMailboxPullToRefreshErrorTests :
@Test
@TestId("188903")
fun checkMessagesLoadingErrorToEmpty() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -174,7 +174,7 @@ internal class MessageModeMailboxPullToRefreshErrorTests :
@SmokeTest
@TestId("188904")
fun checkMessagesLoadingEmptyToContent() {
mockWebServer.dispatcher = mockNetworkDispatcher(useDefaultMailSettings = false) {
mockWebServer.dispatcher combineWith mockNetworkDispatcher(useDefaultMailSettings = false) {
addMockRequests(
"/mail/v4/settings"
respondWith "/mail/v4/settings/mail-v4-settings_placeholder_messages.json"
@@ -19,6 +19,7 @@
package ch.protonmail.android.uitest.e2e.menu
import ch.protonmail.android.di.ServerProofModule
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.withStatusCode
@@ -27,7 +28,6 @@ import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.TestId
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
import ch.protonmail.android.uitest.helpers.core.navigation.navigator
import ch.protonmail.android.uitest.helpers.login.LoginStrategy
import ch.protonmail.android.uitest.helpers.network.mockNetworkDispatcher
import ch.protonmail.android.uitest.models.folders.SidebarCustomItemEntry
import ch.protonmail.android.uitest.models.folders.Tint
@@ -43,7 +43,7 @@ import org.junit.Test
@RegressionTest
@HiltAndroidTest
@UninstallModules(ServerProofModule::class)
internal class SidebarMenuFoldersTests : MockedNetworkTest(loginStrategy = LoginStrategy.LoggedOut) {
internal class SidebarMenuFoldersTests : MockedNetworkTest() {
@JvmField
@BindValue
@@ -52,7 +52,7 @@ internal class SidebarMenuFoldersTests : MockedNetworkTest(loginStrategy = Login
@Test
@TestId("68718")
fun checkShortHexAndStandardColorFolderAreDisplayedInSidebarMenu() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultCustomFolders = false,
useDefaultMailSettings = false
) {
@@ -88,7 +88,7 @@ internal class SidebarMenuFoldersTests : MockedNetworkTest(loginStrategy = Login
@Test
@TestId("79096")
fun checkFoldersColorWhenSettingIsOffWithNoParentInheritingInSidebarMenu() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultCustomFolders = false,
useDefaultMailSettings = false
) {
@@ -123,7 +123,7 @@ internal class SidebarMenuFoldersTests : MockedNetworkTest(loginStrategy = Login
@Test
@TestId("79097")
fun checkFoldersColorWhenSettingIsOffWithParentInheritingInSidebarMenu() {
mockWebServer.dispatcher = mockNetworkDispatcher(
mockWebServer.dispatcher combineWith mockNetworkDispatcher(
useDefaultCustomFolders = false,
useDefaultMailSettings = false
) {
@@ -18,6 +18,7 @@
package ch.protonmail.android.uitest.e2e.settings
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.test.annotations.suite.SmokeTest
import ch.protonmail.android.uitest.MockedNetworkTest
import ch.protonmail.android.uitest.helpers.core.navigation.Destination
@@ -40,7 +41,7 @@ internal class SettingsFlowTest : MockedNetworkTest() {
@Before
fun setupDispatcher() {
mockWebServer.dispatcher = mockNetworkDispatcher()
mockWebServer.dispatcher combineWith mockNetworkDispatcher()
navigator { navigateTo(Destination.Inbox, performLoginViaUI = false) }
}
@@ -18,27 +18,19 @@
package ch.protonmail.android.uitest.helpers.login
import ch.protonmail.android.mailcommon.domain.sample.AccountSample
import ch.protonmail.android.mailcommon.domain.sample.SessionSample
import ch.protonmail.android.mailcommon.domain.sample.UserSample
import me.proton.core.account.domain.entity.Account
import me.proton.core.network.domain.session.Session
import me.proton.core.user.domain.entity.User
object LoginTestUserTypes {
object Free {
internal sealed class LoginStrategy {
sealed class LoggedIn(
val account: Account,
val session: Session,
val user: User
) : LoginStrategy() {
object PrimaryUser : LoggedIn(
account = AccountSample.Primary,
session = SessionSample.Primary,
user = UserSample.Primary
)
val SleepyKoala = LoginType.LoggedIn("slpkla")
}
object LoggedOut : LoginStrategy()
object Paid {
val FancyCapybara = LoginType.LoggedIn("fncyra")
}
object Deprecated {
val GrumpyCat = LoginType.LoggedIn("gmpcat")
}
}
@@ -0,0 +1,25 @@
/*
* Copyright (c) 2022 Proton Technologies AG
* This file is part of Proton Technologies AG and Proton Mail.
*
* Proton Mail is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Proton Mail is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Proton Mail. If not, see <https://www.gnu.org/licenses/>.
*/
package ch.protonmail.android.uitest.helpers.login
sealed class LoginType {
class LoggedIn(val id: String) : LoginType()
object LoggedOut : LoginType()
}
@@ -0,0 +1,48 @@
/*
* Copyright (c) 2022 Proton Technologies AG
* This file is part of Proton Technologies AG and Proton Mail.
*
* Proton Mail is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Proton Mail is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Proton Mail. If not, see <https://www.gnu.org/licenses/>.
*/
package ch.protonmail.android.uitest.helpers.network
import ch.protonmail.android.networkmocks.mockwebserver.MockNetworkDispatcher
import ch.protonmail.android.networkmocks.mockwebserver.requests.respondWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.withStatusCode
import ch.protonmail.android.uitest.helpers.login.LoginType
/**
* Returns a [MockNetworkDispatcher] instance with valid authenticator mocks depending on the passed [LoginType].
*
* @param loginType the login type (logged in, out).
*
* @return an instance of [MockNetworkDispatcher] with predefined mock definitions.
*/
internal fun authenticationDispatcher(loginType: LoginType) = MockNetworkDispatcher().apply {
val id = when (loginType) {
is LoginType.LoggedIn -> loginType.id
else -> return@apply
}
addMockRequests(
"/auth/v4" respondWith "/auth/v4/auth-v4_$id.json" withStatusCode 200,
"/auth/v4/info" respondWith "/auth/v4/info/info_$id.json" withStatusCode 200,
"/auth/v4/sessions" respondWith "/auth/v4/sessions/sessions_$id.json" withStatusCode 200,
"/core/v4/users" respondWith "/core/v4/users/users_$id.json" withStatusCode 200,
"/core/v4/addresses" respondWith "/core/v4/addresses/addresses_$id.json" withStatusCode 200,
"/core/v4/keys/salts" respondWith "/core/v4/keys/salts/salts_$id.json" withStatusCode 200,
"/auth/v4/scopes" respondWith "/auth/v4/scopes/scopes_$id.json" withStatusCode 200
)
}
@@ -33,7 +33,6 @@ import ch.protonmail.android.networkmocks.mockwebserver.requests.withStatusCode
* with default values that can be easily overridden.
*/
internal fun mockNetworkDispatcher(
useDefaultAuth: Boolean = true,
useDefaultCoreSettings: Boolean = true,
useDefaultMailSettings: Boolean = true,
useDefaultContacts: Boolean = true,
@@ -45,17 +44,6 @@ internal fun mockNetworkDispatcher(
ignoreEvents: Boolean = true,
additionalMockDefinitions: MockNetworkDispatcher.() -> Unit = {}
) = MockNetworkDispatcher().apply {
if (useDefaultAuth) {
addMockRequests(
"/auth/v4" respondWith "/auth/v4/auth-v4_base_placeholder.json" withStatusCode 200,
"/auth/v4/info" respondWith "/auth/v4/info/info_base_placeholder.json" withStatusCode 200,
"/auth/v4/sessions" respondWith "/auth/v4/sessions/sessions_base_placeholder.json" withStatusCode 200,
"/core/v4/users" respondWith "/core/v4/users/users_base_placeholder.json" withStatusCode 200,
"/core/v4/addresses" respondWith "/core/v4/addresses/addresses_base_placeholder.json" withStatusCode 200,
"/core/v4/keys/salts" respondWith "/core/v4/keys/salts/salts_base_placeholder.json" withStatusCode 200,
"/auth/v4/scopes" respondWith "/auth/v4/scopes/scopes_base_placeholder.json" withStatusCode 200
)
}
if (useDefaultCoreSettings) {
addMockRequests(
+1 -1
View File
@@ -1 +1 @@
NETWORK_ASSETS_TARGET_REF=c4d46eb99cf2fa39cd3d7a4f87b0da4bba905db6
NETWORK_ASSETS_TARGET_REF=ac7f69f3c188d3c8ed5a3992dd3e1ec2cff52a02
@@ -50,7 +50,7 @@ import okhttp3.mockwebserver.RecordedRequest
* @Test
* fun testCase() {
* // Simple usage and definition of a custom dispatcher.
* mockWebServer.dispatcher = MockNetworkDispatcher().apply {
* mockWebServer.dispatcher extendWith MockNetworkDispatcher().apply {
* addMockRequests(
* "/api/v1/path" respondWith "/api/v1/localPath" withStatusCode 200,
* "/api/v1/path2" respondWith "/api/v1/localPath2" withStatusCode 401
@@ -70,6 +70,7 @@ class MockNetworkDispatcher(
) : Dispatcher() {
private val knownRequests = mutableListOf<MockRequest>()
val requestsList: List<MockRequest> = knownRequests
override fun dispatch(request: RecordedRequest): MockResponse {
val remotePath = checkNotNull(request.path) {
@@ -143,3 +144,17 @@ class MockNetworkDispatcher(
private const val DefaultAssetsRootPath = "assets/network-mocks"
}
}
/**
* Allows combining the current list of mocked requests with the one from another [MockNetworkDispatcher].
*
* @param dispatcher a [MockNetworkDispatcher] instance.
*
* @throws IllegalArgumentException if the receiver is not a [MockNetworkDispatcher].
*/
infix fun Dispatcher.combineWith(dispatcher: MockNetworkDispatcher) {
require(this is MockNetworkDispatcher) {
"Receiver needs to be a MockNetworkDispatcher instance."
}
addMockRequests(*dispatcher.requestsList.toTypedArray())
}
@@ -19,6 +19,7 @@
package ch.protonmail.android.networkmocks
import ch.protonmail.android.networkmocks.mockwebserver.MockNetworkDispatcher
import ch.protonmail.android.networkmocks.mockwebserver.combineWith
import ch.protonmail.android.networkmocks.mockwebserver.requests.MimeType
import ch.protonmail.android.networkmocks.mockwebserver.requests.MockPriority
import ch.protonmail.android.networkmocks.mockwebserver.requests.ignoreQueryParams
@@ -228,7 +229,7 @@ internal class MockNetworkDispatcherTests {
val firstExpectedStatusCode = 200
val firstExpectedBody = """{ "a": 1 }"""
val secondExpectedStatusCode = 500
val secondExpectedBody = """{ "b" : 2 }"""
val secondExpectedBody = """{ "b": 2 }"""
val request = buildRequest("api/v1/test")
@@ -247,7 +248,7 @@ internal class MockNetworkDispatcherTests {
assertEquals(firstExpectedStatusCode, firstResponse.code)
assertEquals(firstExpectedBody, firstResponse.body?.string())
assertEquals(secondExpectedStatusCode, secondResponse.code)
assertNotEquals(secondExpectedBody, secondResponse.body?.string())
assertEquals(secondExpectedBody, secondResponse.body?.string())
}
@Test
@@ -312,6 +313,43 @@ internal class MockNetworkDispatcherTests {
assertEquals(expectedBody, response.body?.string())
}
@Test
fun `when the dispatcher is extended, then it contains all the requests and serves the additional definitions`() {
// Given
val firstExpectedStatusCode = 200
val firstExpectedBody = """{ "a": 1 }"""
val secondExpectedStatusCode = 200
val secondExpectedBody = """{ "b": 2 }"""
val firstMockDefinition = "/api/v1/test1" respondWith "/api/v1/test_1.json" withStatusCode 200
val secondMockDefinition = "/api/v1/test2" respondWith "/api/v1/test_2.json" withStatusCode 200
val request = buildRequest("api/v1/test1")
val secondRequest = buildRequest("api/v1/test2")
mockWebServer.dispatcher = mockNetworkDispatcher {
addMockRequests(firstMockDefinition)
}
mockWebServer.dispatcher combineWith mockNetworkDispatcher {
addMockRequests(secondMockDefinition)
}
// When
val firstResponse = runBlocking { performRequest(request) }
val secondResponse = runBlocking { performRequest(secondRequest) }
// Then
assertEquals(firstExpectedStatusCode, firstResponse.code)
assertEquals(firstExpectedBody, firstResponse.body?.string())
assertEquals(secondExpectedStatusCode, secondResponse.code)
assertEquals(secondExpectedBody, secondResponse.body?.string())
assertEquals(
listOf(firstMockDefinition, secondMockDefinition),
(mockWebServer.dispatcher as MockNetworkDispatcher).requestsList
)
}
private fun mockNetworkDispatcher(func: MockNetworkDispatcher.() -> Unit) =
MockNetworkDispatcher(assetsRootPath = "assets/mock").apply(func)