diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/MockedNetworkTest.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/MockedNetworkTest.kt index d9791e448d..7d1e7a173c 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/MockedNetworkTest.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/MockedNetworkTest.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/ComposerMainTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/ComposerMainTests.kt index afeb9b8d0c..5b7e60d269 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/ComposerMainTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/ComposerMainTests.kt @@ -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) diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsChipsDeletionTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsChipsDeletionTests.kt index 82a0806857..a343c76f0f 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsChipsDeletionTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsChipsDeletionTests.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsCollapsedChipsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsCollapsedChipsTests.kt index 1be1133575..4257f131e9 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsCollapsedChipsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsCollapsedChipsTests.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsDuplicatedChipsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsDuplicatedChipsTests.kt index 8577e03d1c..2b6a8a0ecd 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsDuplicatedChipsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsDuplicatedChipsTests.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsInvalidChipsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsInvalidChipsTests.kt index 36097c2f8c..5e0364ecb0 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsInvalidChipsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsInvalidChipsTests.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsValidChipsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsValidChipsTests.kt index 96f3f1b3b0..2b2ebb242a 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsValidChipsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/chips/ComposerRecipientsValidChipsTests.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/drafts/ComposerDraftsMainTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/drafts/ComposerDraftsMainTests.kt index 625b30a4e1..cd0c517a25 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/drafts/ComposerDraftsMainTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/composer/drafts/ComposerDraftsMainTests.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/ConversationMarkAsReadTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/ConversationMarkAsReadTests.kt index 1224b047e1..0912c81765 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/ConversationMarkAsReadTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/ConversationMarkAsReadTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxFlowTest.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxFlowTest.kt index 6fb0495688..e99c67262b 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxFlowTest.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxFlowTest.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxParticipantsTest.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxParticipantsTest.kt index 249d90bfdb..8dcbb2bd4b 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxParticipantsTest.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxParticipantsTest.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxSwitchTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxSwitchTests.kt index 2315194908..b09854cdc1 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxSwitchTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MailboxSwitchTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MessageLoadingTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MessageLoadingTests.kt index 13f7e05a18..3d76eb71d5 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MessageLoadingTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/MessageLoadingTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/allmail/AllMailMailboxFolderColorsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/allmail/AllMailMailboxFolderColorsTests.kt index d02ba5500e..2a7dab90c3 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/allmail/AllMailMailboxFolderColorsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/allmail/AllMailMailboxFolderColorsTests.kt @@ -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 ) { diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailHtmlSanitizationTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailHtmlSanitizationTests.kt index edc6a10ccc..ce58f6f0a3 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailHtmlSanitizationTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailHtmlSanitizationTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailRemoteContentTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailRemoteContentTests.kt index 3cd76cacc9..53821be84f 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailRemoteContentTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/ConversationDetailRemoteContentTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailHtmlSanitizationTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailHtmlSanitizationTests.kt index 557a1ede10..e84a1e70cb 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailHtmlSanitizationTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailHtmlSanitizationTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailRemoteContentTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailRemoteContentTests.kt index 82598b0a00..0144df6c47 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailRemoteContentTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bodycontent/MessageDetailRemoteContentTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/ConversationDetailMoveToBottomSheetDismissalTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/ConversationDetailMoveToBottomSheetDismissalTests.kt index d411e42017..e44ea150d9 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/ConversationDetailMoveToBottomSheetDismissalTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/ConversationDetailMoveToBottomSheetDismissalTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/MessageDetailLabelAsBottomSheetDismissalTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/MessageDetailLabelAsBottomSheetDismissalTests.kt index 3ac9849fef..b046c95a6d 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/MessageDetailLabelAsBottomSheetDismissalTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/labelas/MessageDetailLabelAsBottomSheetDismissalTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailLabelAsBottomSheetDismissalTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailLabelAsBottomSheetDismissalTests.kt index bb5683c4ff..164a39b5b8 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailLabelAsBottomSheetDismissalTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailLabelAsBottomSheetDismissalTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailMoveToBottomSheetMainTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailMoveToBottomSheetMainTests.kt index 1eacafb604..6b710b8384 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailMoveToBottomSheetMainTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/ConversationDetailMoveToBottomSheetMainTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetActionTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetActionTests.kt index 4a2f876119..e63a3b5038 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetActionTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetActionTests.kt @@ -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 diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetLabelsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetLabelsTests.kt index 125d7562a0..519f2d10ea 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetLabelsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetLabelsTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetMainTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetMainTests.kt index 39bf9046f2..669309c145 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetMainTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/DetailMoveToBottomSheetMainTests.kt @@ -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 ) { diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetDismissalTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetDismissalTests.kt index a8a66c8f99..78812f0163 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetDismissalTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetDismissalTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetMainTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetMainTests.kt index 7a236084e9..653d42f72f 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetMainTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/detail/bottomsheet/moveto/MessageDetailMoveToBottomSheetMainTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/drafts/DraftsMailboxTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/drafts/DraftsMailboxTests.kt index c7b730537e..1694938aa2 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/drafts/DraftsMailboxTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/drafts/DraftsMailboxTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/ConversationModeAppendItemsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/ConversationModeAppendItemsTests.kt index c0109a44e7..015ac367b4 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/ConversationModeAppendItemsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/ConversationModeAppendItemsTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/MessageModeAppendItemsTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/MessageModeAppendItemsTests.kt index e03c12a35b..a9df241f97 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/MessageModeAppendItemsTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/append/MessageModeAppendItemsTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/ConversationModeMailboxPullToRefreshErrorTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/ConversationModeMailboxPullToRefreshErrorTests.kt index 5dbb8eb1e1..5a80c23d0f 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/ConversationModeMailboxPullToRefreshErrorTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/ConversationModeMailboxPullToRefreshErrorTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/MessageModeMailboxPullToRefreshErrorTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/MessageModeMailboxPullToRefreshErrorTests.kt index dd69fc67f3..5b29fd2e90 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/MessageModeMailboxPullToRefreshErrorTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/mailbox/errors/pulltorefresh/MessageModeMailboxPullToRefreshErrorTests.kt @@ -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" diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/menu/SidebarMenuFoldersTests.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/menu/SidebarMenuFoldersTests.kt index 78ae811f9e..6efb6e6ba3 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/menu/SidebarMenuFoldersTests.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/menu/SidebarMenuFoldersTests.kt @@ -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 ) { diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/settings/SettingsFlowTest.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/settings/SettingsFlowTest.kt index fbcc513a13..af875d326d 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/settings/SettingsFlowTest.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/e2e/settings/SettingsFlowTest.kt @@ -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) } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginStrategy.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginTestUserTypes.kt similarity index 52% rename from app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginStrategy.kt rename to app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginTestUserTypes.kt index 217e5fe508..eea94715ab 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginStrategy.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginTestUserTypes.kt @@ -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") + } } diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginType.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginType.kt new file mode 100644 index 0000000000..27d7a23124 --- /dev/null +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/login/LoginType.kt @@ -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 . + */ + +package ch.protonmail.android.uitest.helpers.login + +sealed class LoginType { + + class LoggedIn(val id: String) : LoginType() + object LoggedOut : LoginType() +} diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/network/AuthenticationDispatcher.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/network/AuthenticationDispatcher.kt new file mode 100644 index 0000000000..0099610011 --- /dev/null +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/network/AuthenticationDispatcher.kt @@ -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 . + */ + +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 + ) +} diff --git a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/network/DefaultNetworkDispatcher.kt b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/network/DefaultNetworkDispatcher.kt index c4219047a9..cdd074ebec 100644 --- a/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/network/DefaultNetworkDispatcher.kt +++ b/app/src/uiTest/kotlin/ch/protonmail/android/uitest/helpers/network/DefaultNetworkDispatcher.kt @@ -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( diff --git a/scripts/uitests/AssetsFile.lock b/scripts/uitests/AssetsFile.lock index 1df472f3ed..195428f025 100644 --- a/scripts/uitests/AssetsFile.lock +++ b/scripts/uitests/AssetsFile.lock @@ -1 +1 @@ -NETWORK_ASSETS_TARGET_REF=c4d46eb99cf2fa39cd3d7a4f87b0da4bba905db6 +NETWORK_ASSETS_TARGET_REF=ac7f69f3c188d3c8ed5a3992dd3e1ec2cff52a02 diff --git a/test/network-mocks/src/main/kotlin/ch/protonmail/android/networkmocks/mockwebserver/MockNetworkDispatcher.kt b/test/network-mocks/src/main/kotlin/ch/protonmail/android/networkmocks/mockwebserver/MockNetworkDispatcher.kt index 284336baf6..9272686c49 100644 --- a/test/network-mocks/src/main/kotlin/ch/protonmail/android/networkmocks/mockwebserver/MockNetworkDispatcher.kt +++ b/test/network-mocks/src/main/kotlin/ch/protonmail/android/networkmocks/mockwebserver/MockNetworkDispatcher.kt @@ -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() + val requestsList: List = 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()) +} diff --git a/test/network-mocks/src/test/kotlin/ch/protonmail/android/networkmocks/MockNetworkDispatcherTests.kt b/test/network-mocks/src/test/kotlin/ch/protonmail/android/networkmocks/MockNetworkDispatcherTests.kt index fed2e5d151..c74802f9f1 100644 --- a/test/network-mocks/src/test/kotlin/ch/protonmail/android/networkmocks/MockNetworkDispatcherTests.kt +++ b/test/network-mocks/src/test/kotlin/ch/protonmail/android/networkmocks/MockNetworkDispatcherTests.kt @@ -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)