diff options
| author | Albin <albin@mullvad.net> | 2023-03-22 09:07:53 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2023-03-22 10:39:58 +0100 |
| commit | 68c356e5afa2165cadef86d43966e51d9203102c (patch) | |
| tree | 0a172dacad334066be40ea1239691ed963139dac /android/test | |
| parent | e5d106c9260e0f282c75d105da7b0247535cdfdd (diff) | |
| download | mullvadvpn-68c356e5afa2165cadef86d43966e51d9203102c.tar.xz mullvadvpn-68c356e5afa2165cadef86d43966e51d9203102c.zip | |
Apply project-wide `kotlinLangStyle` formatting
Diffstat (limited to 'android/test')
13 files changed, 186 insertions, 253 deletions
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt index 59905d72e2..19cc5a8b93 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt @@ -22,10 +22,7 @@ fun UiDevice.findObjectWithTimeout( timeout: Long = DEFAULT_INTERACTION_TIMEOUT ): UiObject2 { - wait( - Until.hasObject(selector), - timeout - ) + wait(Until.hasObject(selector), timeout) return try { findObject(selector) @@ -50,10 +47,7 @@ fun UiDevice.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove( val selector = By.text("Allow") - wait( - Until.hasObject(selector), - timeout - ) + wait(Until.hasObject(selector), timeout) try { findObjectWithTimeout(selector).click() @@ -69,10 +63,7 @@ fun UiObject2.findObjectWithTimeout( timeout: Long = DEFAULT_INTERACTION_TIMEOUT ): UiObject2 { - wait( - Until.hasObject(selector), - timeout - ) + wait(Until.hasObject(selector), timeout) return try { findObject(selector) diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt index d3b2abe7ae..d5a2e5176b 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt @@ -20,10 +20,7 @@ import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaime import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout -class AppInteractor( - private val device: UiDevice, - private val targetContext: Context -) { +class AppInteractor(private val device: UiDevice, private val targetContext: Context) { fun launch(customApiEndpointConfiguration: CustomApiEndpointConfiguration? = null) { device.pressHome() // Wait for launcher @@ -41,10 +38,7 @@ class AppInteractor( } } targetContext.startActivity(intent) - device.wait( - Until.hasObject(By.pkg(MULLVAD_PACKAGE).depth(0)), - APP_LAUNCH_TIMEOUT - ) + device.wait(Until.hasObject(By.pkg(MULLVAD_PACKAGE).depth(0)), APP_LAUNCH_TIMEOUT) } fun launchAndEnsureLoggedIn(accountToken: String) { @@ -56,8 +50,10 @@ class AppInteractor( } fun attemptLogin(accountToken: String) { - val loginObject = device.findObjectWithTimeout(By.clazz("android.widget.EditText")) - .apply { text = accountToken } + val loginObject = + device.findObjectWithTimeout(By.clazz("android.widget.EditText")).apply { + text = accountToken + } loginObject.parent.findObject(By.clazz(ImageButton::class.java)).click() } @@ -67,10 +63,10 @@ class AppInteractor( fun extractIpAddress(): String { device.findObjectWithTimeout(By.res(TUNNEL_INFO_ID)).click() - return device.findObjectWithTimeout( - By.res(TUNNEL_OUT_ADDRESS_ID), - CONNECTION_TIMEOUT - ).text.extractIpAddress() + return device + .findObjectWithTimeout(By.res(TUNNEL_OUT_ADDRESS_ID), CONNECTION_TIMEOUT) + .text + .extractIpAddress() } fun clickSettingsCog() { @@ -85,9 +81,7 @@ class AppInteractor( device.findObjectWithTimeout(By.text(text)).click() } - fun waitForLoginPrompt( - timeout: Long = LOGIN_PROMPT_TIMEOUT - ) { + fun waitForLoginPrompt(timeout: Long = LOGIN_PROMPT_TIMEOUT) { device.findObjectWithTimeout(By.text("Login"), timeout) } diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt index 138d09cc28..c7b8992292 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt @@ -60,10 +60,7 @@ class CaptureScreenshotOnFailedTestRule(private val testTag: String) : TestWatch ) { contentValues.apply { put(MediaStore.MediaColumns.DISPLAY_NAME, filename) - put( - MediaStore.Images.Media.RELATIVE_PATH, - "$DIRECTORY_PICTURES/$baseDir" - ) + put(MediaStore.Images.Media.RELATIVE_PATH, "$DIRECTORY_PICTURES/$baseDir") } val uri = @@ -89,14 +86,17 @@ class CaptureScreenshotOnFailedTestRule(private val testTag: String) : TestWatch baseDir: String, filename: String ) { - val screenshotBaseDirectory = Paths.get( - Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES).path, - baseDir, - ).toFile().apply { - if (exists().not()) { - mkdirs() - } - } + val screenshotBaseDirectory = + Paths.get( + Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES).path, + baseDir, + ) + .toFile() + .apply { + if (exists().not()) { + mkdirs() + } + } FileOutputStream(File(screenshotBaseDirectory, filename)).use { outputStream -> try { this.compress(Bitmap.CompressFormat.JPEG, 50, outputStream) @@ -107,8 +107,9 @@ class CaptureScreenshotOnFailedTestRule(private val testTag: String) : TestWatch contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues) } - private fun createBaseScreenshotContentValues() = ContentValues().apply { - put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg") - put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()) - } + private fun createBaseScreenshotContentValues() = + ContentValues().apply { + put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg") + put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()) + } } 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 8f72fef0be..488162b08c 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 @@ -12,13 +12,9 @@ import org.junit.Test class ConnectionTest : EndToEndTest() { - @Rule - @JvmField - val cleanupAccountTestRule = CleanupAccountTestRule() + @Rule @JvmField val cleanupAccountTestRule = CleanupAccountTestRule() - @Rule - @JvmField - val forgetAllVpnAppsInSettingsTestRule = ForgetAllVpnAppsInSettingsTestRule() + @Rule @JvmField val forgetAllVpnAppsInSettingsTestRule = ForgetAllVpnAppsInSettingsTestRule() @Test fun testConnectAndVerifyWithConnectionCheck() { diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt index f8f5bb8f6c..3514405dd9 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt @@ -19,16 +19,15 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) abstract class EndToEndTest { - @Rule - @JvmField - val rule = CaptureScreenshotOnFailedTestRule(LOG_TAG) + @Rule @JvmField val rule = CaptureScreenshotOnFailedTestRule(LOG_TAG) @Rule @JvmField - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.READ_EXTERNAL_STORAGE - ) + val permissionRule: GrantPermissionRule = + GrantPermissionRule.grant( + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_EXTERNAL_STORAGE + ) lateinit var device: UiDevice lateinit var targetContext: Context @@ -41,14 +40,13 @@ abstract class EndToEndTest { device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) targetContext = InstrumentationRegistry.getInstrumentation().targetContext - validTestAccountToken = InstrumentationRegistry.getArguments() - .getRequiredArgument(VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY) - invalidTestAccountToken = InstrumentationRegistry.getArguments() - .getRequiredArgument(INVALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY) + validTestAccountToken = + InstrumentationRegistry.getArguments() + .getRequiredArgument(VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY) + invalidTestAccountToken = + InstrumentationRegistry.getArguments() + .getRequiredArgument(INVALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY) - app = AppInteractor( - device, - targetContext - ) + app = AppInteractor(device, targetContext) } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt index 9cec30d872..646af7a18e 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt @@ -15,9 +15,7 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class LoginTest : EndToEndTest() { - @Rule - @JvmField - val cleanupAccountTestRule = CleanupAccountTestRule() + @Rule @JvmField val cleanupAccountTestRule = CleanupAccountTestRule() @Test fun testLoginWithInvalidCredentials() { diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt index 9e5f0aa665..bcf4adcc9e 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt @@ -7,18 +7,15 @@ import androidx.test.uiautomator.By import androidx.test.uiautomator.UiDevice import net.mullvad.mullvadvpn.test.common.extension.findObjectByCaseInsensitiveText -class SystemSettingsInteractor( - private val uiDevice: UiDevice, - private val context: Context -) { +class SystemSettingsInteractor(private val uiDevice: UiDevice, private val context: Context) { fun openVpnSettings() { - val intent = Intent("com.intent.MAIN").apply { - addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - } - intent.component = ComponentName.unflattenFromString( - "com.android.settings/.Settings\$VpnSettingsActivity" - ) + val intent = + Intent("com.intent.MAIN").apply { + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + intent.component = + ComponentName.unflattenFromString("com.android.settings/.Settings\$VpnSettingsActivity") context.startActivity(intent) Thread.sleep(1000) } 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 2b69436f6d..2e19cb42fe 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 @@ -13,8 +13,9 @@ class CleanupAccountTestRule : TestWatcher() { override fun starting(description: Description) { Log.d(LOG_TAG, "Cleaning up account before test: ${description.methodName}") val targetContext = InstrumentationRegistry.getInstrumentation().targetContext - val validTestAccountToken = InstrumentationRegistry.getArguments() - .getRequiredArgument(VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY) + val validTestAccountToken = + InstrumentationRegistry.getArguments() + .getRequiredArgument(VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY) MullvadAccountInteractor(SimpleMullvadHttpClient(targetContext), validTestAccountToken) .cleanupAccount() } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/ConnCheckState.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/ConnCheckState.kt index 744e80124e..75004270a4 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/ConnCheckState.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/ConnCheckState.kt @@ -1,6 +1,3 @@ package net.mullvad.mullvadvpn.test.e2e.misc -data class ConnCheckState( - val isConnected: Boolean, - val ipAddress: String -) +data class ConnCheckState(val isConnected: Boolean, val ipAddress: String) diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt index bc56737b04..b97fb28f45 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt @@ -23,17 +23,13 @@ class SimpleMullvadHttpClient(context: Context) { Log.v(LOG_TAG, "Remove all devices") val token = login(accountToken) val devices = getDeviceList(token) - devices.forEach { - removeDevice(token, it) - } + devices.forEach { removeDevice(token, it) } Log.v(LOG_TAG, "All devices removed") } fun login(accountToken: String): String { Log.v(LOG_TAG, "Attempt login with account token: $accountToken") - val json = JSONObject().apply { - put("account_number", accountToken) - } + val json = JSONObject().apply { put("account_number", accountToken) } return sendSimpleSynchronousRequest(Request.Method.POST, AUTH_URL, json)!!.let { response -> response.getString("access_token").also { accessToken -> Log.v(LOG_TAG, "Successfully logged in and received access token: $accessToken") @@ -44,21 +40,20 @@ class SimpleMullvadHttpClient(context: Context) { fun getDeviceList(accessToken: String): List<String> { Log.v(LOG_TAG, "Get devices") - val response = sendSimpleSynchronousRequestArray( - Request.Method.GET, - DEVICE_LIST_URL, - token = accessToken - ) + val response = + sendSimpleSynchronousRequestArray( + Request.Method.GET, + DEVICE_LIST_URL, + token = accessToken + ) - return response!!.iterator<JSONObject>().asSequence().toList() + return response!! + .iterator<JSONObject>() + .asSequence() + .toList() .also { - it - .map { jsonObject -> - jsonObject.getString("name") - } - .also { deviceNames -> - Log.v(LOG_TAG, "Devices received: $deviceNames") - } + it.map { jsonObject -> jsonObject.getString("name") } + .also { deviceNames -> Log.v(LOG_TAG, "Devices received: $deviceNames") } } .map { it.getString("id") } .toList() @@ -74,13 +69,8 @@ class SimpleMullvadHttpClient(context: Context) { } fun runConnectionCheck(): ConnCheckState? { - return sendSimpleSynchronousRequestString( - Request.Method.GET, - CONN_CHECK_URL - ) - ?.let { respose -> - JSONObject(respose) - } + return sendSimpleSynchronousRequestString(Request.Method.GET, CONN_CHECK_URL) + ?.let { respose -> JSONObject(respose) } ?.let { json -> ConnCheckState( isConnected = json.getBoolean("mullvad_exit_ip"), @@ -96,24 +86,19 @@ class SimpleMullvadHttpClient(context: Context) { token: String? = null ): JSONObject? { val future = RequestFuture.newFuture<JSONObject>() - val request = object : JsonObjectRequest( - method, - url, - body, - future, - future - ) { - override fun getHeaders(): MutableMap<String, String> { - val headers = HashMap<String, String>() - if (body != null) { - headers.put("Content-Type", "application/json") - } - if (token != null) { - headers.put("Authorization", "Bearer $token") + val request = + object : JsonObjectRequest(method, url, body, future, future) { + override fun getHeaders(): MutableMap<String, String> { + val headers = HashMap<String, String>() + if (body != null) { + headers.put("Content-Type", "application/json") + } + if (token != null) { + headers.put("Authorization", "Bearer $token") + } + return headers } - return headers } - } queue.add(request) return try { future.get().also { response -> @@ -132,28 +117,22 @@ class SimpleMullvadHttpClient(context: Context) { token: String? = null ): String? { val future = RequestFuture.newFuture<String>() - val request = object : StringRequest( - method, - url, - future, - future - ) { - override fun getHeaders(): MutableMap<String, String> { - val headers = HashMap<String, String>() - if (body != null) { - headers.put("Content-Type", "application/json") - } - if (token != null) { - headers.put("Authorization", "Bearer $token") + val request = + object : StringRequest(method, url, future, future) { + override fun getHeaders(): MutableMap<String, String> { + val headers = HashMap<String, String>() + if (body != null) { + headers.put("Content-Type", "application/json") + } + if (token != null) { + headers.put("Authorization", "Bearer $token") + } + return headers } - return headers } - } queue.add(request) return try { - future.get().also { response -> - Log.v(LOG_TAG, "String request response: $response") - } + future.get().also { response -> Log.v(LOG_TAG, "String request response: $response") } } catch (e: Exception) { Log.v(LOG_TAG, "String request error: ${e.message}") throw TestEventException(REQUEST_ERROR_MESSAGE) @@ -167,22 +146,17 @@ class SimpleMullvadHttpClient(context: Context) { token: String? = null ): JSONArray? { val future = RequestFuture.newFuture<JSONArray>() - val request = object : JsonArrayRequest( - method, - url, - null, - future, - future - ) { - override fun getHeaders(): MutableMap<String, String> { - val headers = HashMap<String, String>() - headers.put("Content-Type", "application/json") - if (token != null) { - headers.put("Authorization", "Bearer $token") + val request = + object : JsonArrayRequest(method, url, null, future, future) { + override fun getHeaders(): MutableMap<String, String> { + val headers = HashMap<String, String>() + headers.put("Content-Type", "application/json") + if (token != null) { + headers.put("Authorization", "Bearer $token") + } + return headers } - return headers } - } queue.add(request) return try { future.get().also { response -> diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt index e3708a47f1..06f7164034 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt @@ -29,8 +29,10 @@ class MockApiDispatcher : Dispatcher() { AUTH_TOKEN_URL_PATH -> handleLoginRequest(request.body) DEVICES_URL_PATH -> { when (request.method) { - "get", "GET" -> handleDeviceListRequest() - "post", "POST" -> handleDeviceCreationRequest(request.body) + "get", + "GET" -> handleDeviceListRequest() + "post", + "POST" -> handleDeviceCreationRequest(request.body) else -> MockResponse().setResponseCode(404) } } @@ -51,9 +53,10 @@ class MockApiDispatcher : Dispatcher() { .addJsonHeader() .setBody( accessTokenJsonResponse( - accessToken = DUMMY_ACCESS_TOKEN, - expiry = currentUtcTimeWithOffsetZero().plusDays(1) - ).toString() + accessToken = DUMMY_ACCESS_TOKEN, + expiry = currentUtcTimeWithOffsetZero().plusDays(1) + ) + .toString() ) } else { Log.e( @@ -69,13 +72,9 @@ class MockApiDispatcher : Dispatcher() { MockResponse() .setResponseCode(200) .addJsonHeader() - .setBody( - accountInfoJson( - id = DUMMY_ID, - expiry = expiry - ).toString() - ) - } ?: MockResponse().setResponseCode(400) + .setBody(accountInfoJson(id = DUMMY_ID, expiry = expiry).toString()) + } + ?: MockResponse().setResponseCode(400) } private fun handleDeviceInfoRequest(): MockResponse { @@ -85,33 +84,36 @@ class MockApiDispatcher : Dispatcher() { .addJsonHeader() .setBody( deviceJson( - id = DUMMY_ID, - name = DUMMY_DEVICE_NAME, - publicKey = cachedKey, - creationDate = currentUtcTimeWithOffsetZero().minusDays(1) - ).toString() + id = DUMMY_ID, + name = DUMMY_DEVICE_NAME, + publicKey = cachedKey, + creationDate = currentUtcTimeWithOffsetZero().minusDays(1) + ) + .toString() ) - } ?: MockResponse().setResponseCode(400) + } + ?: MockResponse().setResponseCode(400) } private fun handleDeviceCreationRequest(body: Buffer): MockResponse { - return body.getPubKey() - .also { newKey -> - cachedPubKeyFromAppUnderTest = newKey - } + return body + .getPubKey() + .also { newKey -> cachedPubKeyFromAppUnderTest = newKey } ?.let { newKey -> MockResponse() .setResponseCode(201) .addJsonHeader() .setBody( deviceJson( - id = DUMMY_ID, - name = DUMMY_DEVICE_NAME, - publicKey = newKey, - creationDate = currentUtcTimeWithOffsetZero().minusDays(1) - ).toString() + id = DUMMY_ID, + name = DUMMY_DEVICE_NAME, + publicKey = newKey, + creationDate = currentUtcTimeWithOffsetZero().minusDays(1) + ) + .toString() ) - } ?: MockResponse().setResponseCode(400) + } + ?: MockResponse().setResponseCode(400) } private fun handleDeviceListRequest(): MockResponse { @@ -120,15 +122,18 @@ class MockApiDispatcher : Dispatcher() { .setResponseCode(200) .addJsonHeader() .setBody( - JSONArray().put( - deviceJson( - id = DUMMY_ID, - name = DUMMY_DEVICE_NAME, - publicKey = cachedKey, - creationDate = currentUtcTimeWithOffsetZero().minusDays(1) + JSONArray() + .put( + deviceJson( + id = DUMMY_ID, + name = DUMMY_DEVICE_NAME, + publicKey = cachedKey, + creationDate = currentUtcTimeWithOffsetZero().minusDays(1) + ) ) - ).toString() + .toString() ) - } ?: MockResponse().setResponseCode(400) + } + ?: MockResponse().setResponseCode(400) } } diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt index ba5ba01810..bb5c20eebb 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt @@ -24,21 +24,15 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) abstract class MockApiTest { - @Rule - @JvmField - val rule = CaptureScreenshotOnFailedTestRule(LOG_TAG) + @Rule @JvmField val rule = CaptureScreenshotOnFailedTestRule(LOG_TAG) @Rule @JvmField - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - WRITE_EXTERNAL_STORAGE, - READ_EXTERNAL_STORAGE - ) + val permissionRule: GrantPermissionRule = + GrantPermissionRule.grant(WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE) protected val apiDispatcher = MockApiDispatcher() - private val mockWebServer = MockWebServer().apply { - dispatcher = apiDispatcher - } + private val mockWebServer = MockWebServer().apply { dispatcher = apiDispatcher } lateinit var device: UiDevice lateinit var targetContext: Context @@ -50,10 +44,7 @@ abstract class MockApiTest { device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) targetContext = InstrumentationRegistry.getInstrumentation().targetContext - app = AppInteractor( - device, - targetContext - ) + app = AppInteractor(device, targetContext) mockWebServer.start() Log.d(LOG_TAG, "Mocked web server started using port: ${mockWebServer.port}") @@ -66,16 +57,14 @@ abstract class MockApiTest { } private fun createEndpoint(port: Int): CustomApiEndpointConfiguration { - val mockApiSocket = InetSocketAddress( - InetAddress.getLocalHost(), - port - ) - val api = ApiEndpoint( - address = mockApiSocket, - disableAddressCache = true, - disableTls = true, - forceDirectConnection = true - ) + val mockApiSocket = InetSocketAddress(InetAddress.getLocalHost(), port) + val api = + ApiEndpoint( + address = mockApiSocket, + disableAddressCache = true, + disableTls = true, + forceDirectConnection = true + ) return CustomApiEndpointConfiguration(api) } } diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt index 145cbafbd2..b76c4d4278 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt @@ -5,38 +5,30 @@ import org.joda.time.DateTime import org.json.JSONArray import org.json.JSONObject -fun accountInfoJson( - id: String, - expiry: DateTime -) = JSONObject().apply { - put("id", id) - put("expiry", expiry.formatStrictlyAccordingToIso8601AndRfc3339()) - put("max_ports", 5) - put("can_add_ports", true) - put("max_devices", 5) - put("can_add_devices", true) -} +fun accountInfoJson(id: String, expiry: DateTime) = + JSONObject().apply { + put("id", id) + put("expiry", expiry.formatStrictlyAccordingToIso8601AndRfc3339()) + put("max_ports", 5) + put("can_add_ports", true) + put("max_devices", 5) + put("can_add_devices", true) + } -fun deviceJson( - id: String, - name: String, - publicKey: String, - creationDate: DateTime -) = JSONObject().apply { - put("id", id) - put("name", name) - put("pubkey", publicKey) - put("hijack_dns", true) - put("created", creationDate.formatStrictlyAccordingToIso8601AndRfc3339()) - put("ipv4_address", "127.0.0.1/32") - put("ipv6_address", "fc00::1/128") - put("ports", JSONArray()) -} +fun deviceJson(id: String, name: String, publicKey: String, creationDate: DateTime) = + JSONObject().apply { + put("id", id) + put("name", name) + put("pubkey", publicKey) + put("hijack_dns", true) + put("created", creationDate.formatStrictlyAccordingToIso8601AndRfc3339()) + put("ipv4_address", "127.0.0.1/32") + put("ipv6_address", "fc00::1/128") + put("ports", JSONArray()) + } -fun accessTokenJsonResponse( - accessToken: String, - expiry: DateTime -) = JSONObject().apply { - put("access_token", accessToken) - put("expiry", expiry.formatStrictlyAccordingToIso8601AndRfc3339()) -} +fun accessTokenJsonResponse(accessToken: String, expiry: DateTime) = + JSONObject().apply { + put("access_token", accessToken) + put("expiry", expiry.formatStrictlyAccordingToIso8601AndRfc3339()) + } |
