diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-02-26 14:58:25 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-02-26 14:58:25 +0100 |
| commit | 5ba686d1ac45509cba636d717bb6729865105cf3 (patch) | |
| tree | e21ad8d6ca30a8ca6a02313c9b4cc786370dc91e /android/test | |
| parent | 5025db74b34cfb3536c43f89f3407ffc0d97ae73 (diff) | |
| parent | 38c4791b414538962f6a8ab958aecd09414f33f6 (diff) | |
| download | mullvadvpn-5ba686d1ac45509cba636d717bb6729865105cf3.tar.xz mullvadvpn-5ba686d1ac45509cba636d717bb6729865105cf3.zip | |
Merge branch 'remove-jodatime-droid-898'
Diffstat (limited to 'android/test')
13 files changed, 63 insertions, 59 deletions
diff --git a/android/test/e2e/build.gradle.kts b/android/test/e2e/build.gradle.kts index 3f4244cde7..8bcc45ab77 100644 --- a/android/test/e2e/build.gradle.kts +++ b/android/test/e2e/build.gradle.kts @@ -155,7 +155,6 @@ dependencies { implementation(libs.ktor.client.cio) implementation(libs.ktor.serialization.kotlinx.json) implementation(libs.ktor.client.content.negotiation) - implementation(libs.jodatime) androidTestUtil(libs.androidx.test.orchestrator) diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt index 5c788e5710..cd6b2b855e 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Packet.kt @@ -1,23 +1,25 @@ package net.mullvad.mullvadvpn.test.e2e.router.packetCapture +import java.time.ZonedDateTime import kotlinx.serialization.Contextual import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import net.mullvad.mullvadvpn.test.e2e.serializer.PacketSerializer -import org.joda.time.DateTime @Serializable(with = PacketSerializer::class) sealed interface Packet { - @SerialName("timestamp") val date: DateTime + @SerialName("timestamp") val date: ZonedDateTime val fromPeer: Boolean } @Serializable -data class RxPacket(@SerialName("timestamp") @Contextual override val date: DateTime) : Packet { +data class RxPacket(@SerialName("timestamp") @Contextual override val date: ZonedDateTime) : + Packet { @SerialName("from_peer") override val fromPeer: Boolean = false } @Serializable -data class TxPacket(@SerialName("timestamp") @Contextual override val date: DateTime) : Packet { +data class TxPacket(@SerialName("timestamp") @Contextual override val date: ZonedDateTime) : + Packet { @SerialName("from_peer") override val fromPeer: Boolean = true } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt index 564d0e25cb..68eb2783cc 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/router/packetCapture/Stream.kt @@ -1,11 +1,11 @@ package net.mullvad.mullvadvpn.test.e2e.router.packetCapture +import java.time.Duration +import java.time.ZonedDateTime import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import net.mullvad.mullvadvpn.test.e2e.router.NetworkingProtocol -import org.joda.time.DateTime -import org.joda.time.Interval @Serializable data class Stream( @@ -18,24 +18,26 @@ data class Stream( @Transient val sourceHost = Host.fromString(sourceAddressAndPort) @Transient val destinationHost = Host.fromString(destinationAddressAndPort) - @Transient private val startDate: DateTime = packets.first().date - @Transient private val endDate: DateTime = packets.last().date - @Transient private val txStartDate: DateTime? = txPackets().firstOrNull()?.date - @Transient private val txEndDate: DateTime? = txPackets().lastOrNull()?.date - @Transient private val rxStartDate: DateTime? = rxPackets().firstOrNull()?.date - @Transient private val rxEndDate: DateTime? = rxPackets().lastOrNull()?.date + @Transient private val startDate: ZonedDateTime = packets.first().date + @Transient private val endDate: ZonedDateTime = packets.last().date + @Transient private val txStartDate: ZonedDateTime? = txPackets().firstOrNull()?.date + @Transient private val txEndDate: ZonedDateTime? = txPackets().lastOrNull()?.date + @Transient private val rxStartDate: ZonedDateTime? = rxPackets().firstOrNull()?.date + @Transient private val rxEndDate: ZonedDateTime? = rxPackets().lastOrNull()?.date - @Transient val interval = Interval(startDate, endDate) + @Transient val interval = Duration.between(startDate, endDate) fun txPackets(): List<TxPacket> = packets.filterIsInstance<TxPacket>() fun rxPackets(): List<RxPacket> = packets.filterIsInstance<RxPacket>() - fun txInterval(): Interval? = - if (txStartDate != null && txEndDate != null) Interval(txStartDate, txEndDate) else null + fun txInterval(): Duration? = + if (txStartDate != null && txEndDate != null) Duration.between(txStartDate, txEndDate) + else null - fun rxInterval(): Interval? = - if (rxStartDate != null && rxEndDate != null) Interval(rxStartDate, rxEndDate) else null + fun rxInterval(): Duration? = + if (rxStartDate != null && rxEndDate != null) Duration.between(rxStartDate, rxEndDate) + else null init { require(packets.isNotEmpty()) { "Stream must contain at least one packet" } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt index d49ca6017d..26d5f05f5b 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/serializer/NanoSecondsTimestampSerializer.kt @@ -1,23 +1,25 @@ package net.mullvad.mullvadvpn.test.e2e.serializer +import java.time.Instant +import java.time.ZoneId +import java.time.ZonedDateTime import kotlinx.serialization.KSerializer import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder -import org.joda.time.DateTime -object NanoSecondsTimestampSerializer : KSerializer<DateTime> { +object NanoSecondsTimestampSerializer : KSerializer<ZonedDateTime> { override val descriptor: SerialDescriptor = - PrimitiveSerialDescriptor("DateTime", PrimitiveKind.LONG) + PrimitiveSerialDescriptor("ZonedDateTime", PrimitiveKind.LONG) - override fun deserialize(decoder: Decoder): DateTime { + override fun deserialize(decoder: Decoder): ZonedDateTime { val long = decoder.decodeLong() - return DateTime(long / 1000) + return ZonedDateTime.ofInstant(Instant.ofEpochMilli(long / 1000), ZoneId.systemDefault()) } - override fun serialize(encoder: Encoder, value: DateTime) { + override fun serialize(encoder: Encoder, value: ZonedDateTime) { throw NotImplementedError("Only interested in deserialization") } } diff --git a/android/test/mockapi/build.gradle.kts b/android/test/mockapi/build.gradle.kts index a224b8c53f..f0310107ac 100644 --- a/android/test/mockapi/build.gradle.kts +++ b/android/test/mockapi/build.gradle.kts @@ -72,7 +72,6 @@ dependencies { implementation(libs.androidx.test.rules) implementation(libs.androidx.test.uiautomator) implementation(libs.kermit) - implementation(libs.jodatime) implementation(Dependencies.junitJupiterApi) implementation(Dependencies.junit5AndroidTestExtensions) implementation(Dependencies.junit5AndroidTestRunner) diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt index 2fe829841c..d89313fc45 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt @@ -1,6 +1,7 @@ package net.mullvad.mullvadvpn.test.mockapi import androidx.test.uiautomator.By +import java.time.ZonedDateTime import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown @@ -8,8 +9,7 @@ import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2 -import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero -import net.mullvad.mullvadvpn.util.toExpiryDateString +import net.mullvad.mullvadvpn.test.mockapi.util.toExpiryDateString import org.junit.jupiter.api.Test class AccountExpiryMockApiTest : MockApiTest() { @@ -18,7 +18,7 @@ class AccountExpiryMockApiTest : MockApiTest() { fun testAccountExpiryDateUpdated() { // Arrange val validAccountNumber = "1234123412341234" - val oldAccountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1) + val oldAccountExpiry = ZonedDateTime.now().plusMonths(1) apiDispatcher.apply { expectedAccountNumber = validAccountNumber accountExpiry = oldAccountExpiry @@ -52,7 +52,7 @@ class AccountExpiryMockApiTest : MockApiTest() { fun testAccountTimeExpiredWhileUsingTheAppShouldShowOutOfTimeScreen() { // Arrange val validAccountNumber = "1234123412341234" - val oldAccountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1) + val oldAccountExpiry = ZonedDateTime.now().plusMonths(1) apiDispatcher.apply { expectedAccountNumber = validAccountNumber accountExpiry = oldAccountExpiry diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt index 7d4639019a..deb63c89b4 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt @@ -1,6 +1,7 @@ package net.mullvad.mullvadvpn.test.mockapi import androidx.test.uiautomator.By +import java.time.ZonedDateTime import net.mullvad.mullvadvpn.compose.test.LOGIN_INPUT_TEST_TAG import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove @@ -9,7 +10,6 @@ import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2 -import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Test @@ -21,7 +21,7 @@ class AccountHistoryMockApiTest : MockApiTest() { val validAccountNumber = "1234123412341234" apiDispatcher.apply { expectedAccountNumber = validAccountNumber - accountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1) + accountExpiry = ZonedDateTime.now().plusMonths(1) devices = DEFAULT_DEVICE_LIST.toMutableMap() devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2 } diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt index f13e5070e2..5feee8abd8 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt @@ -2,6 +2,7 @@ package net.mullvad.mullvadvpn.test.mockapi import androidx.test.uiautomator.By import androidx.test.uiautomator.Until +import java.time.ZonedDateTime import net.mullvad.mullvadvpn.compose.test.LOGIN_TITLE_TEST_TAG import net.mullvad.mullvadvpn.test.common.constant.DEFAULT_TIMEOUT import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer @@ -10,7 +11,6 @@ import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShow import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2 -import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test @@ -21,7 +21,7 @@ class LoginMockApiTest : MockApiTest() { val validAccountNumber = "1234123412341234" apiDispatcher.apply { expectedAccountNumber = null - accountExpiry = currentUtcTimeWithOffsetZero().plusDays(1) + accountExpiry = ZonedDateTime.now().plusDays(1) } app.launch(endpoint) @@ -47,7 +47,7 @@ class LoginMockApiTest : MockApiTest() { val validAccountNumber = "1234123412341234" apiDispatcher.apply { expectedAccountNumber = validAccountNumber - accountExpiry = currentUtcTimeWithOffsetZero().plusDays(1) + accountExpiry = ZonedDateTime.now().plusDays(1) devices = DEFAULT_DEVICE_LIST.toMutableMap() devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2 } @@ -70,7 +70,7 @@ class LoginMockApiTest : MockApiTest() { val validAccountNumber = "1234123412341234" apiDispatcher.apply { expectedAccountNumber = validAccountNumber - accountExpiry = currentUtcTimeWithOffsetZero().minusDays(1) + accountExpiry = ZonedDateTime.now().minusDays(1) devices = DEFAULT_DEVICE_LIST.toMutableMap() devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2 } diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt index 3df42ac0ce..da41d41066 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt @@ -1,6 +1,7 @@ package net.mullvad.mullvadvpn.test.mockapi import androidx.test.uiautomator.By +import java.time.ZonedDateTime import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown @@ -8,7 +9,6 @@ import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2 -import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Test @@ -20,7 +20,7 @@ class LogoutMockApiTest : MockApiTest() { val validAccountNumber = "1234123412341234" apiDispatcher.apply { expectedAccountNumber = validAccountNumber - accountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1) + accountExpiry = ZonedDateTime.now().plusMonths(1) devices = DEFAULT_DEVICE_LIST.toMutableMap() devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2 } 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 e230152efe..f99cb48a06 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 @@ -1,6 +1,7 @@ package net.mullvad.mullvadvpn.test.mockapi import co.touchlab.kermit.Logger +import java.time.ZonedDateTime import net.mullvad.mullvadvpn.test.mockapi.constant.ACCOUNT_URL_PATH import net.mullvad.mullvadvpn.test.mockapi.constant.AUTH_TOKEN_URL_PATH import net.mullvad.mullvadvpn.test.mockapi.constant.CREATE_ACCOUNT_URL_PATH @@ -10,20 +11,18 @@ import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_1 import net.mullvad.mullvadvpn.test.mockapi.util.accessTokenJsonResponse import net.mullvad.mullvadvpn.test.mockapi.util.accountCreationJson import net.mullvad.mullvadvpn.test.mockapi.util.accountInfoJson -import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero import net.mullvad.mullvadvpn.test.mockapi.util.deviceJson import net.mullvad.mullvadvpn.test.mockapi.util.tooManyDevicesJsonResponse import okhttp3.mockwebserver.Dispatcher import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.RecordedRequest import okio.Buffer -import org.joda.time.DateTime import org.json.JSONArray class MockApiDispatcher : Dispatcher() { var expectedAccountNumber: String? = null - var accountExpiry: DateTime? = null + var accountExpiry: ZonedDateTime? = null var devices: MutableMap<String, String>? = null private val canAddDevices: Boolean get() = (devices?.size ?: 0) < 5 @@ -84,7 +83,7 @@ class MockApiDispatcher : Dispatcher() { .setBody( accessTokenJsonResponse( accessToken = DUMMY_ACCESS_TOKEN, - expiry = currentUtcTimeWithOffsetZero().plusDays(1), + expiry = ZonedDateTime.now().plusDays(1), ) .toString() ) @@ -115,7 +114,7 @@ class MockApiDispatcher : Dispatcher() { id = deviceId, name = devices!![deviceId]!!, // Should always exist publicKey = cachedKey, - creationDate = currentUtcTimeWithOffsetZero().minusDays(1), + creationDate = ZonedDateTime.now().minusDays(1), ) .toString() ) @@ -136,7 +135,7 @@ class MockApiDispatcher : Dispatcher() { id = devicePendingToGetCreated!!.first, name = devicePendingToGetCreated!!.second, publicKey = newKey, - creationDate = currentUtcTimeWithOffsetZero().minusDays(1), + creationDate = ZonedDateTime.now().minusDays(1), ) .toString() ) @@ -158,7 +157,7 @@ class MockApiDispatcher : Dispatcher() { id = entry.key, name = entry.value, publicKey = cachedKey, - creationDate = currentUtcTimeWithOffsetZero().minusDays(index + 1), + creationDate = ZonedDateTime.now().minusDays((index + 1).toLong()), ) ) } @@ -174,7 +173,7 @@ class MockApiDispatcher : Dispatcher() { .setBody( accountCreationJson( id = DUMMY_ID_1, - expiry = DateTime(), + expiry = ZonedDateTime.now(), accountNumber = expectedAccountNumber, ) .toString() diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt index bde2a8f4dd..19674815c1 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt @@ -1,6 +1,7 @@ package net.mullvad.mullvadvpn.test.mockapi import androidx.test.uiautomator.By +import java.time.ZonedDateTime import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown @@ -17,7 +18,6 @@ import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_3 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_4 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_5 import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_6 -import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero import org.junit.jupiter.api.Test class TooManyDevicesMockApiTest : MockApiTest() { @@ -27,7 +27,7 @@ class TooManyDevicesMockApiTest : MockApiTest() { val validAccountNumber = "1234123412341234" apiDispatcher.apply { expectedAccountNumber = validAccountNumber - accountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1) + accountExpiry = ZonedDateTime.now().plusMonths(1) devices = mutableMapOf( DUMMY_ID_1 to DUMMY_DEVICE_NAME_1, diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/DateTimeUtils.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/DateTimeUtils.kt index 81042f70d2..330fc15a81 100644 --- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/DateTimeUtils.kt +++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/DateTimeUtils.kt @@ -1,13 +1,14 @@ package net.mullvad.mullvadvpn.test.mockapi.util -import org.joda.time.DateTime -import org.joda.time.DateTimeZone -import org.joda.time.format.DateTimeFormat +import java.time.ZonedDateTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle private const val STRICT_ISO8601_AND_RFC3339_PATTERN = "yyyy-MM-dd'T'HH:mm:ssZZ" -fun currentUtcTimeWithOffsetZero() = DateTime.now(DateTimeZone.forOffsetHours(0)) - -fun DateTime.formatStrictlyAccordingToIso8601AndRfc3339(): String { - return toString(DateTimeFormat.forPattern(STRICT_ISO8601_AND_RFC3339_PATTERN)) +fun ZonedDateTime.formatStrictlyAccordingToIso8601AndRfc3339(): String { + return DateTimeFormatter.ofPattern(STRICT_ISO8601_AND_RFC3339_PATTERN).format(this) } + +fun ZonedDateTime.toExpiryDateString(): String = + DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.SHORT).format(this) 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 2de385c7f8..a0e21d55ca 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 @@ -1,9 +1,9 @@ package net.mullvad.mullvadvpn.test.mockapi.util -import org.joda.time.DateTime +import java.time.ZonedDateTime import org.json.JSONObject -fun accountInfoJson(id: String, expiry: DateTime) = +fun accountInfoJson(id: String, expiry: ZonedDateTime) = JSONObject().apply { put("id", id) put("expiry", expiry.formatStrictlyAccordingToIso8601AndRfc3339()) @@ -11,10 +11,10 @@ fun accountInfoJson(id: String, expiry: DateTime) = put("can_add_devices", true) } -fun accountCreationJson(id: String, accountNumber: String, expiry: DateTime) = +fun accountCreationJson(id: String, accountNumber: String, expiry: ZonedDateTime) = accountInfoJson(id, expiry).apply { put("number", accountNumber) } -fun deviceJson(id: String, name: String, publicKey: String, creationDate: DateTime) = +fun deviceJson(id: String, name: String, publicKey: String, creationDate: ZonedDateTime) = JSONObject().apply { put("id", id) put("name", name) @@ -25,7 +25,7 @@ fun deviceJson(id: String, name: String, publicKey: String, creationDate: DateTi put("ipv6_address", "fc00::1/128") } -fun accessTokenJsonResponse(accessToken: String, expiry: DateTime) = +fun accessTokenJsonResponse(accessToken: String, expiry: ZonedDateTime) = JSONObject().apply { put("access_token", accessToken) put("expiry", expiry.formatStrictlyAccordingToIso8601AndRfc3339()) |
