diff options
| author | David Göransson <david.goransson@mullvad.net> | 2025-05-21 11:57:51 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2025-05-21 11:57:51 +0200 |
| commit | b708e86feb1235a6241cd12e1b8315cea19a12d5 (patch) | |
| tree | 3946e8dc8792199eab45e6fee3d31775aa773fb8 /android/test | |
| parent | ee8c0578c5d7f330b40272cdec1ee62af2c5fd20 (diff) | |
| parent | f2b6a3d2d04d33e106b794ae489d506651f41f91 (diff) | |
| download | mullvadvpn-b708e86feb1235a6241cd12e1b8315cea19a12d5.tar.xz mullvadvpn-b708e86feb1235a6241cd12e1b8315cea19a12d5.zip | |
Merge branch 'rework-localproperties-and-e2eproperties-droid-1430'
Diffstat (limited to 'android/test')
16 files changed, 94 insertions, 103 deletions
diff --git a/android/test/e2e/README.md b/android/test/e2e/README.md index adbcc042cd..58f6206c87 100644 --- a/android/test/e2e/README.md +++ b/android/test/e2e/README.md @@ -4,17 +4,14 @@ The tests in this module are end-to-end tests that rely on the publicly accessib ## How to run the tests ### Locally -Set account numbers in the below command and then execute the command in the `android` directory to run the tests on a local device: -``` -./gradlew :test:e2e:connectedDebugAndroidTest \ - -Pvalid_test_account_number=XXXX \ - -Pinvalid_test_account_number=XXXX -``` -For convenience, the numbers can also be set in `<REPO-ROOT>/android/local.properties` in the following way: +Configure all the `mullvad.test.e2e.xxxx` properties located in `android/gradle.properties` by adding them into your `<GRADLE_USER_HOME>/gradle.properties`. + +You can also set these properties or override them when executing the command in the following way: ``` -valid_test_account_number=XXXX -invalid_test_account_number=XXXX +./gradlew :test:e2e:connectedDebugAndroidTest \ + -Pmullvad.test.e2e.prod.accountNumber.valid=XXXX \ + -Pmullvad.test.e2e.prod.accountNumber.invalid==XXXX ``` It's also possible to provide the numbers to the test runner during test execution. However note that this requires [the APKs to be installed manually](https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#architecture). @@ -22,14 +19,12 @@ It's also possible to provide the numbers to the test runner during test executi adb shell 'CLASSPATH=$(pm path androidx.test.services) app_process / \ androidx.test.services.shellexecutor.ShellMain am instrument -w \ -e clearPackageData true \ - -e valid_test_account_number XXXX \ - -e invalid_test_account_number XXXX \ + -e mullvad.test.e2e.prod.accountNumber.valid XXXX \ + -e mullvad.test.e2e.prod.accountNumber.invalid XXXX \ -e targetInstrumentation net.mullvad.mullvadvpn.test.e2e/androidx.test.runner.AndroidJUnitRunner \ androidx.test.orchestrator/.AndroidTestOrchestrator' ``` -If you want to run tests that make use of APIs hosted at Mullvad HQ you need to set `ENABLE_ACCESS_TO_LOCAL_API_TESTS=true` in `e2e.properties` or pass it as a command line argument when launching tests. - ### Firebase Test Lab Firebase Test Lab can be used to run the tests on vast collection of physical and virtual devices. @@ -43,7 +38,7 @@ gcloud firebase test android run \ --test ./android/test/e2e/build/outputs/apk/debug/e2e-debug.apk \ --device model=redfin,version=30,locale=en,orientation=portrait \ --use-orchestrator \ - --environment-variables clearPackageData=true,valid_test_account_number=XXXX,invalid_test_account_number=XXXX + --environment-variables clearPackageData=true,ORG_GRADLE_PROJECT_mullvad.test.e2e.prod.accountNumber.valid=XXXX,ORG_GRADLE_PROJECT_mullvad.test.e2e.prod.accountNumber.invalid=XXXX ``` If using gcloud via the docker image, the following can be executed in the `android` directory to run the tests (on a Pixel 5e): @@ -54,7 +49,7 @@ docker run --rm --volumes-from gcloud-config -v ${PWD}:/android gcr.io/google.co --test ./android/test/e2e/build/outputs/apk/debug/e2e-debug.apk \ --device model=redfin,version=30,locale=en,orientation=portrait \ --use-orchestrator \ - --environment-variables clearPackageData=true,valid_test_account_number=XXXX,invalid_test_account_number=XXXX + --environment-variables clearPackageData=true,ORG_GRADLE_PROJECT_mullvad.test.e2e.prod.accountNumber.valid=XXXX,ORG_GRADLE_PROJECT_mullvad.test.e2e.prod.accountNumber.invalid=XXXX ``` ## Test artefacts diff --git a/android/test/e2e/build.gradle.kts b/android/test/e2e/build.gradle.kts index 31181aab52..debd5ff9b6 100644 --- a/android/test/e2e/build.gradle.kts +++ b/android/test/e2e/build.gradle.kts @@ -1,5 +1,3 @@ -import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties -import java.util.Properties import org.gradle.internal.extensions.stdlib.capitalized plugins { @@ -23,42 +21,16 @@ android { "de.mannodermaus.junit5.AndroidJUnit5Builder" targetProjectPath = ":app" - fun Properties.addRequiredPropertyAsBuildConfigField(name: String) { - val value = - System.getenv(name) - ?: getProperty(name) - ?: throw GradleException("Missing property: $name") + testInstrumentationRunnerArguments += buildMap { + put("clearPackageData", "true") - buildConfigField(type = "String", name = name, value = "\"$value\"") - } - - Properties().apply { - load(project.file("e2e.properties").inputStream()) - addRequiredPropertyAsBuildConfigField("API_VERSION") - addRequiredPropertyAsBuildConfigField("TRAFFIC_GENERATION_IP_ADDRESS") - addRequiredPropertyAsBuildConfigField("TEST_ROUTER_API_HOST") - } - - fun MutableMap<String, String>.addOptionalPropertyAsArgument(name: String) { - val value = - rootProject.properties.getOrDefault(name, null) as? String - ?: gradleLocalProperties(rootProject.projectDir, providers).getProperty(name) - - if (value != null) { - put(name, value) - } - } - - testInstrumentationRunnerArguments += - mutableMapOf<String, String>().apply { - put("clearPackageData", "true") - addOptionalPropertyAsArgument("enable_highly_rate_limited_tests") - addOptionalPropertyAsArgument("valid_test_account_number") - addOptionalPropertyAsArgument("invalid_test_account_number") - project.findProperty("test.e2e.enableAccessToLocalApiTests")?.let { - put("enable_access_to_local_api_tests", it.toString()) + // Add all properties starting with "test.e2e" to the testInstrumentationRunnerArguments + properties.forEach { + if (it.key.startsWith("mullvad.test.e2e")) { + put(it.key, it.value.toString()) } } + } } flavorDimensions += FlavorDimensions.BILLING diff --git a/android/test/e2e/e2e.properties b/android/test/e2e/e2e.properties deleted file mode 100644 index 1cfa0f6bd1..0000000000 --- a/android/test/e2e/e2e.properties +++ /dev/null @@ -1,3 +0,0 @@ -API_VERSION=v1 -TRAFFIC_GENERATION_IP_ADDRESS=45.83.223.209 -TEST_ROUTER_API_HOST=192.168.105.1 diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt index 4720fc5ce6..f23f74dd6a 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt @@ -20,6 +20,7 @@ import net.mullvad.mullvadvpn.test.e2e.api.relay.RelayApi import net.mullvad.mullvadvpn.test.e2e.misc.AccountTestRule import net.mullvad.mullvadvpn.test.e2e.misc.ClearFirewallRules import net.mullvad.mullvadvpn.test.e2e.router.firewall.DropRule +import net.mullvad.mullvadvpn.test.e2e.router.firewall.FirewallClient import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.RegisterExtension @@ -34,6 +35,7 @@ class ConnectionTest : EndToEndTest() { private val connCheckClient = ConnectionCheckApi() private val relayClient = RelayApi() + private val firewallClient by lazy { FirewallClient() } @Test fun testConnect() { diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt index 3d5eb70cfa..9a2ec22fef 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt @@ -1,5 +1,6 @@ package net.mullvad.mullvadvpn.test.e2e +import androidx.test.platform.app.InstrumentationRegistry import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.delay import kotlinx.coroutines.test.runTest @@ -17,6 +18,8 @@ import net.mullvad.mullvadvpn.test.common.page.enableShadowsocksStory import net.mullvad.mullvadvpn.test.common.page.on import net.mullvad.mullvadvpn.test.common.rule.ForgetAllVpnAppsInSettingsTestRule import net.mullvad.mullvadvpn.test.e2e.annotations.HasDependencyOnLocalAPI +import net.mullvad.mullvadvpn.test.e2e.constant.getTrafficGeneratorHost +import net.mullvad.mullvadvpn.test.e2e.constant.getTrafficGeneratorPort import net.mullvad.mullvadvpn.test.e2e.misc.AccountTestRule import net.mullvad.mullvadvpn.test.e2e.misc.NetworkTrafficChecker import net.mullvad.mullvadvpn.test.e2e.misc.NoTrafficToHostRule @@ -83,8 +86,8 @@ class LeakTest : EndToEndTest() { on<ConnectPage> { waitForConnectedLabel() } // Capture generated traffic to a specific host - val targetIpAddress = BuildConfig.TRAFFIC_GENERATION_IP_ADDRESS - val targetPort = 80 + val targetIpAddress = InstrumentationRegistry.getArguments().getTrafficGeneratorHost() + val targetPort = InstrumentationRegistry.getArguments().getTrafficGeneratorPort() val captureResult = PacketCapture().capturePackets { TrafficGenerator(targetIpAddress, targetPort).generateTraffic(10.milliseconds) { @@ -131,8 +134,8 @@ class LeakTest : EndToEndTest() { on<ConnectPage> { waitForConnectedLabel() } // Capture generated traffic to a specific host - val targetIpAddress = BuildConfig.TRAFFIC_GENERATION_IP_ADDRESS - val targetPort = 80 + val targetIpAddress = InstrumentationRegistry.getArguments().getTrafficGeneratorHost() + val targetPort = InstrumentationRegistry.getArguments().getTrafficGeneratorPort() val captureResult: PacketCaptureResult = PacketCapture().capturePackets { TrafficGenerator(targetIpAddress, targetPort).generateTraffic(10.milliseconds) { @@ -188,8 +191,8 @@ class LeakTest : EndToEndTest() { on<ConnectPage> { waitForConnectedLabel() } // Capture generated traffic to a specific host - val targetIpAddress = BuildConfig.TRAFFIC_GENERATION_IP_ADDRESS - val targetPort = 80 + val targetIpAddress = InstrumentationRegistry.getArguments().getTrafficGeneratorHost() + val targetPort = InstrumentationRegistry.getArguments().getTrafficGeneratorPort() val captureResult: PacketCaptureResult = PacketCapture().capturePackets { TrafficGenerator(targetIpAddress, targetPort).generateTraffic(10.milliseconds) { diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HasDependencyOnLocalAPI.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HasDependencyOnLocalAPI.kt index 12987df9e0..94b0bfa3f6 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HasDependencyOnLocalAPI.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HasDependencyOnLocalAPI.kt @@ -1,7 +1,7 @@ package net.mullvad.mullvadvpn.test.e2e.annotations import androidx.test.platform.app.InstrumentationRegistry -import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument +import net.mullvad.mullvadvpn.test.e2e.constant.isRaasEnabled import org.junit.jupiter.api.extension.ConditionEvaluationResult import org.junit.jupiter.api.extension.ExecutionCondition import org.junit.jupiter.api.extension.ExtendWith @@ -19,10 +19,7 @@ annotation class HasDependencyOnLocalAPI { context: ExtensionContext? ): ConditionEvaluationResult { - val enable = - InstrumentationRegistry.getArguments() - .getRequiredArgument("enable_access_to_local_api_tests") - .toBoolean() + val enable = InstrumentationRegistry.getArguments().isRaasEnabled() return if (enable) { ConditionEvaluationResult.enabled( diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HighlyRateLimited.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HighlyRateLimited.kt index 12280fcaf1..09124ca5a5 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HighlyRateLimited.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HighlyRateLimited.kt @@ -1,8 +1,7 @@ package net.mullvad.mullvadvpn.test.e2e.annotations import androidx.test.platform.app.InstrumentationRegistry -import net.mullvad.mullvadvpn.test.e2e.constant.ENABLE_HIGHLY_RATE_LIMITED_TESTS -import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument +import net.mullvad.mullvadvpn.test.e2e.constant.isHighlyRateLimitedTestsEnabled import org.junit.jupiter.api.extension.ConditionEvaluationResult import org.junit.jupiter.api.extension.ExecutionCondition import org.junit.jupiter.api.extension.ExtendWith @@ -19,10 +18,7 @@ annotation class HighlyRateLimited { override fun evaluateExecutionCondition( context: ExtensionContext? ): ConditionEvaluationResult { - val enable = - InstrumentationRegistry.getArguments() - .getRequiredArgument(ENABLE_HIGHLY_RATE_LIMITED_TESTS) - .toBoolean() + val enable = InstrumentationRegistry.getArguments().isHighlyRateLimitedTestsEnabled() return if (enable) { ConditionEvaluationResult.enabled("Running test highly affected by rate limiting.") diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/mullvad/MullvadApi.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/mullvad/MullvadApi.kt index d24a6d3c92..099808fcdb 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/mullvad/MullvadApi.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/mullvad/MullvadApi.kt @@ -84,8 +84,8 @@ class MullvadApi { companion object { private const val BASE_URL = "api.${BuildConfig.INFRASTRUCTURE_BASE_DOMAIN}" - private const val AUTH_PATH = "auth/${BuildConfig.API_VERSION}/token" - private const val DEVICES_PATH = "accounts/${BuildConfig.API_VERSION}/devices" + private const val AUTH_PATH = "auth/v1/token" + private const val DEVICES_PATH = "accounts/v1/devices" } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApi.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApi.kt index 647bb49b20..e6465f0b23 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApi.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApi.kt @@ -64,7 +64,7 @@ class PartnerApi(base64AuthCredentials: String) { companion object { private const val BASE_URL = "partner.${BuildConfig.INFRASTRUCTURE_BASE_DOMAIN}" - private const val ACCOUNT_PATH = "${BuildConfig.API_VERSION}/accounts" + private const val ACCOUNT_PATH = "v1/accounts" } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApiTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApiTest.kt index d6f91bb749..e2d723da22 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApiTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/partner/PartnerApiTest.kt @@ -2,7 +2,7 @@ package net.mullvad.mullvadvpn.test.e2e.api.partner import androidx.test.platform.app.InstrumentationRegistry import kotlinx.coroutines.test.runTest -import net.mullvad.mullvadvpn.test.e2e.constant.PARTNER_AUTH +import net.mullvad.mullvadvpn.test.e2e.constant.getPartnerAuth import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test @@ -10,8 +10,7 @@ import org.junit.jupiter.api.assertDoesNotThrow @Disabled("Only used developing the PartnerApi") class PartnerApiTest { - private val partnerApi = - PartnerApi(InstrumentationRegistry.getArguments().getString(PARTNER_AUTH, null)) + private val partnerApi = PartnerApi(InstrumentationRegistry.getArguments().getPartnerAuth()!!) @Test fun testCreateAccount() = runTest { diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt index 2b2017f210..767851bc1c 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt @@ -50,6 +50,6 @@ class RelayApi { companion object { private const val BASE_URL = "api.${BuildConfig.INFRASTRUCTURE_BASE_DOMAIN}" - private const val RELAY_PATH = "app/${BuildConfig.API_VERSION}/relays" + private const val RELAY_PATH = "app/v1/relays" } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt index 0c221f8ddf..8bcb5c2997 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt @@ -1,9 +1,46 @@ package net.mullvad.mullvadvpn.test.e2e.constant +import android.os.Bundle +import androidx.test.platform.app.InstrumentationRegistry +import net.mullvad.mullvadvpn.test.e2e.BuildConfig +import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument + const val LOG_TAG = "mullvad-e2e" -const val PARTNER_AUTH = "partner_auth" -const val VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "valid_test_account_number" -const val INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "invalid_test_account_number" -const val ENABLE_ACCESS_TO_LOCAL_API_TESTS = "enable_access_to_local_api_tests" -const val ENABLE_HIGHLY_RATE_LIMITED_TESTS = "enable_highly_rate_limited_tests" +fun Bundle.getPartnerAuth() = + InstrumentationRegistry.getArguments() + .getString("mullvad.test.e2e.${BuildConfig.FLAVOR_infrastructure}.partnerAuth") + +fun Bundle.getValidAccountNumber() = + InstrumentationRegistry.getArguments() + .getRequiredArgument( + "mullvad.test.e2e.${BuildConfig.FLAVOR_infrastructure}.accountNumber.valid" + ) + +fun Bundle.getInvalidAccountNumber() = + InstrumentationRegistry.getArguments() + .getRequiredArgument( + "mullvad.test.e2e.${BuildConfig.FLAVOR_infrastructure}.accountNumber.invalid" + ) + +fun Bundle.isRaasEnabled(): Boolean = + InstrumentationRegistry.getArguments() + .getRequiredArgument("mullvad.test.e2e.config.raas.enable") + .toBoolean() + +fun Bundle.isHighlyRateLimitedTestsEnabled(): Boolean = + InstrumentationRegistry.getArguments() + .getRequiredArgument("mullvad.test.e2e.config.runHighlyRateLimitedTests") + .toBoolean() + +fun Bundle.getRaasHost() = + InstrumentationRegistry.getArguments().getRequiredArgument("mullvad.test.e2e.config.raas.host") + +fun Bundle.getTrafficGeneratorHost(): String = + InstrumentationRegistry.getArguments() + .getRequiredArgument("mullvad.test.e2e.config.raas.trafficGenerator.target.host") + +fun Bundle.getTrafficGeneratorPort(): Int = + InstrumentationRegistry.getArguments() + .getRequiredArgument("mullvad.test.e2e.config.raas.trafficGenerator.target.port") + .toInt() diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountProvider.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountProvider.kt index 61fc023ade..799f33be64 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountProvider.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountProvider.kt @@ -4,15 +4,13 @@ import androidx.test.platform.app.InstrumentationRegistry import net.mullvad.mullvadvpn.test.e2e.api.mullvad.MullvadApi import net.mullvad.mullvadvpn.test.e2e.api.mullvad.removeAllDevices import net.mullvad.mullvadvpn.test.e2e.api.partner.PartnerApi -import net.mullvad.mullvadvpn.test.e2e.constant.INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY -import net.mullvad.mullvadvpn.test.e2e.constant.PARTNER_AUTH -import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY -import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument +import net.mullvad.mullvadvpn.test.e2e.constant.getInvalidAccountNumber +import net.mullvad.mullvadvpn.test.e2e.constant.getPartnerAuth +import net.mullvad.mullvadvpn.test.e2e.constant.getValidAccountNumber object AccountProvider { private val mullvadClient = MullvadApi() - private val partnerAuth: String? = - InstrumentationRegistry.getArguments().getString(PARTNER_AUTH, null) + private val partnerAuth: String? = InstrumentationRegistry.getArguments().getPartnerAuth() private val partnerClient: PartnerApi by lazy { PartnerApi(partnerAuth!!) } suspend fun getValidAccountNumber() = @@ -23,14 +21,10 @@ object AccountProvider { partnerClient.addTime(accountNumber = accountNumber, daysToAdd = 1) accountNumber } else { - val validAccountNumber = - InstrumentationRegistry.getArguments() - .getRequiredArgument(VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY) + val validAccountNumber = InstrumentationRegistry.getArguments().getValidAccountNumber() mullvadClient.removeAllDevices(validAccountNumber) validAccountNumber } - fun getInvalidAccountNumber() = - InstrumentationRegistry.getArguments() - .getRequiredArgument(INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY) + fun getInvalidAccountNumber() = InstrumentationRegistry.getArguments().getInvalidAccountNumber() } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt index 3cf1f602b4..ae59231788 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt @@ -5,8 +5,7 @@ import co.touchlab.kermit.Logger import kotlinx.coroutines.runBlocking import net.mullvad.mullvadvpn.test.e2e.api.mullvad.MullvadApi import net.mullvad.mullvadvpn.test.e2e.api.mullvad.removeAllDevices -import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY -import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument +import net.mullvad.mullvadvpn.test.e2e.constant.getValidAccountNumber import org.junit.jupiter.api.extension.BeforeEachCallback import org.junit.jupiter.api.extension.ExtensionContext @@ -15,9 +14,7 @@ class CleanupAccountTestRule : BeforeEachCallback { override fun beforeEach(context: ExtensionContext) { Logger.d("Cleaning up account before test: ${context.requiredTestMethod.name}") - val validTestAccountNumber = - InstrumentationRegistry.getArguments() - .getRequiredArgument(VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY) + val validTestAccountNumber = InstrumentationRegistry.getArguments().getValidAccountNumber() runBlocking { mullvadApi.removeAllDevices(validTestAccountNumber) } } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/firewall/FirewallClient.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/firewall/FirewallClient.kt index 3d6264047b..3f6a212497 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/firewall/FirewallClient.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/firewall/FirewallClient.kt @@ -1,5 +1,6 @@ package net.mullvad.mullvadvpn.test.e2e.router.firewall +import androidx.test.platform.app.InstrumentationRegistry import co.touchlab.kermit.Logger import io.ktor.client.HttpClient import io.ktor.client.engine.cio.CIO @@ -13,7 +14,7 @@ import io.ktor.http.URLProtocol import io.ktor.http.contentType import io.ktor.serialization.kotlinx.json.json import kotlinx.serialization.json.Json -import net.mullvad.mullvadvpn.test.e2e.BuildConfig +import net.mullvad.mullvadvpn.test.e2e.constant.getRaasHost class FirewallClient(private val httpClient: HttpClient = defaultHttpClient()) { suspend fun createRule(rule: DropRule) { @@ -40,7 +41,7 @@ private fun defaultHttpClient(): HttpClient = defaultRequest { url { protocol = URLProtocol.HTTP - host = BuildConfig.TEST_ROUTER_API_HOST + host = InstrumentationRegistry.getArguments().getRaasHost() } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/PacketCapture.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/PacketCapture.kt index e192eacc4a..055d1620d0 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/PacketCapture.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/PacketCapture.kt @@ -1,5 +1,6 @@ package net.mullvad.mullvadvpn.test.e2e.router.packetCapture +import androidx.test.platform.app.InstrumentationRegistry import co.touchlab.kermit.Logger import io.ktor.client.HttpClient import io.ktor.client.call.body @@ -20,7 +21,7 @@ import java.util.UUID import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -import net.mullvad.mullvadvpn.test.e2e.BuildConfig +import net.mullvad.mullvadvpn.test.e2e.constant.getRaasHost import net.mullvad.mullvadvpn.test.e2e.misc.Networking import net.mullvad.mullvadvpn.test.e2e.serializer.PacketCaptureSessionSerializer import org.junit.jupiter.api.fail @@ -60,7 +61,7 @@ class PacketCapture { private fun defaultHttpClient(): HttpClient = HttpClient(CIO) { - defaultRequest { url("http://${BuildConfig.TEST_ROUTER_API_HOST}") } + defaultRequest { url("http://${InstrumentationRegistry.getArguments().getRaasHost()}") } engine { requestTimeout = REQUEST_TIMEOUT_MS } install(ContentNegotiation) { |
