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/e2e/src | |
| 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/e2e/src')
13 files changed, 77 insertions, 50 deletions
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) { |
