mirror of
https://github.com/bitwarden/android.git
synced 2025-03-15 18:58:59 +03:00
Update all LocalDateTimes in the app to use ZonedDateTimes (#404)
This commit is contained in:
parent
fb7bc78d95
commit
34101245dd
20 changed files with 145 additions and 150 deletions
|
@ -6,7 +6,7 @@ import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.BaseUrlI
|
|||
import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.HeadersInterceptor
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.Retrofits
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.RetrofitsImpl
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.serializer.LocalDateTimeSerializer
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.serializer.ZonedDateTimeSerializer
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.ConfigService
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.ConfigServiceImpl
|
||||
import dagger.Module
|
||||
|
@ -16,8 +16,8 @@ import dagger.hilt.components.SingletonComponent
|
|||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import kotlinx.serialization.modules.contextual
|
||||
import retrofit2.create
|
||||
import java.time.LocalDateTime
|
||||
import javax.inject.Singleton
|
||||
|
||||
/**
|
||||
|
@ -76,7 +76,7 @@ object PlatformNetworkModule {
|
|||
// We allow for nullable values to have keys missing in the JSON response.
|
||||
explicitNulls = false
|
||||
serializersModule = SerializersModule {
|
||||
contextual(LocalDateTime::class, LocalDateTimeSerializer())
|
||||
contextual(ZonedDateTimeSerializer())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,26 +6,28 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
|||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
/**
|
||||
* Used to serialize and deserialize [LocalDateTime].
|
||||
* Used to serialize and deserialize [ZonedDateTime].
|
||||
*/
|
||||
class LocalDateTimeSerializer : KSerializer<LocalDateTime> {
|
||||
class ZonedDateTimeSerializer : KSerializer<ZonedDateTime> {
|
||||
private val dateTimeFormatterDeserialization = DateTimeFormatter
|
||||
.ofPattern("yyyy-MM-dd'T'HH:mm:ss[.][:][SSSSSSS][SSSSSS][SSSSS][SSSS][SSS][SS][S]'Z'")
|
||||
private val dateTimeFormatterSerialization =
|
||||
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
|
||||
override val descriptor: SerialDescriptor
|
||||
get() = PrimitiveSerialDescriptor(serialName = "LocalDateTime", kind = PrimitiveKind.STRING)
|
||||
.ofPattern("yyyy-MM-dd'T'HH:mm:ss[.][:][SSSSSSS][SSSSSS][SSSSS][SSSS][SSS][SS][S]X")
|
||||
|
||||
override fun deserialize(decoder: Decoder): LocalDateTime =
|
||||
private val dateTimeFormatterSerialization =
|
||||
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX")
|
||||
|
||||
override val descriptor: SerialDescriptor
|
||||
get() = PrimitiveSerialDescriptor(serialName = "ZonedDateTime", kind = PrimitiveKind.STRING)
|
||||
|
||||
override fun deserialize(decoder: Decoder): ZonedDateTime =
|
||||
decoder.decodeString().let { dateString ->
|
||||
LocalDateTime.parse(dateString, dateTimeFormatterDeserialization)
|
||||
ZonedDateTime.parse(dateString, dateTimeFormatterDeserialization)
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: LocalDateTime) {
|
||||
override fun serialize(encoder: Encoder, value: ZonedDateTime) {
|
||||
encoder.encodeString(dateTimeFormatterSerialization.format(value))
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@ package com.x8bit.bitwarden.data.vault.datasource.network.model
|
|||
import kotlinx.serialization.Contextual
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Represents a cipher request.
|
||||
|
@ -36,7 +36,7 @@ data class CipherJsonRequest(
|
|||
|
||||
@SerialName("lastKnownRevisionDate")
|
||||
@Contextual
|
||||
val lastKnownRevisionDate: LocalDateTime?,
|
||||
val lastKnownRevisionDate: ZonedDateTime?,
|
||||
|
||||
@SerialName("type")
|
||||
val type: CipherTypeJson,
|
||||
|
|
|
@ -3,7 +3,7 @@ package com.x8bit.bitwarden.data.vault.datasource.network.model
|
|||
import kotlinx.serialization.Contextual
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Represents the response model for vault data fetched from the server.
|
||||
|
@ -85,7 +85,7 @@ data class SyncResponseJson(
|
|||
data class Folder(
|
||||
@SerialName("revisionDate")
|
||||
@Contextual
|
||||
val revisionDate: LocalDateTime,
|
||||
val revisionDate: ZonedDateTime,
|
||||
|
||||
@SerialName("name")
|
||||
val name: String?,
|
||||
|
@ -361,7 +361,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("familySponsorshipLastSyncDate")
|
||||
@Contextual
|
||||
val familySponsorshipLastSyncDate: LocalDateTime?,
|
||||
val familySponsorshipLastSyncDate: ZonedDateTime?,
|
||||
|
||||
@SerialName("useScim")
|
||||
val shouldUseScim: Boolean,
|
||||
|
@ -377,7 +377,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("familySponsorshipValidUntil")
|
||||
@Contextual
|
||||
val familySponsorshipValidUntil: LocalDateTime?,
|
||||
val familySponsorshipValidUntil: ZonedDateTime?,
|
||||
|
||||
@SerialName("status")
|
||||
val status: Int,
|
||||
|
@ -539,7 +539,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("revisionDate")
|
||||
@Contextual
|
||||
val revisionDate: LocalDateTime,
|
||||
val revisionDate: ZonedDateTime,
|
||||
|
||||
@SerialName("type")
|
||||
val type: CipherTypeJson,
|
||||
|
@ -549,7 +549,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("creationDate")
|
||||
@Contextual
|
||||
val creationDate: LocalDateTime,
|
||||
val creationDate: ZonedDateTime,
|
||||
|
||||
@SerialName("secureNote")
|
||||
val secureNote: SecureNote?,
|
||||
|
@ -562,7 +562,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("deletedDate")
|
||||
@Contextual
|
||||
val deletedDate: LocalDateTime?,
|
||||
val deletedDate: ZonedDateTime?,
|
||||
|
||||
@SerialName("identity")
|
||||
val identity: Identity?,
|
||||
|
@ -779,7 +779,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("passwordRevisionDate")
|
||||
@Contextual
|
||||
val passwordRevisionDate: LocalDateTime?,
|
||||
val passwordRevisionDate: ZonedDateTime?,
|
||||
|
||||
@SerialName("autofillOnPageLoad")
|
||||
val shouldAutofillOnPageLoad: Boolean?,
|
||||
|
@ -819,7 +819,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("lastUsedDate")
|
||||
@Contextual
|
||||
val lastUsedDate: LocalDateTime,
|
||||
val lastUsedDate: ZonedDateTime,
|
||||
)
|
||||
|
||||
/**
|
||||
|
@ -864,7 +864,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("revisionDate")
|
||||
@Contextual
|
||||
val revisionDate: LocalDateTime,
|
||||
val revisionDate: ZonedDateTime,
|
||||
|
||||
@SerialName("maxAccessCount")
|
||||
val maxAccessCount: Int?,
|
||||
|
@ -886,7 +886,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("deletionDate")
|
||||
@Contextual
|
||||
val deletionDate: LocalDateTime,
|
||||
val deletionDate: ZonedDateTime,
|
||||
|
||||
@SerialName("name")
|
||||
val name: String?,
|
||||
|
@ -905,7 +905,7 @@ data class SyncResponseJson(
|
|||
|
||||
@SerialName("expirationDate")
|
||||
@Contextual
|
||||
val expirationDate: LocalDateTime?,
|
||||
val expirationDate: ZonedDateTime?,
|
||||
) {
|
||||
/**
|
||||
* Represents a file in the vault response.
|
||||
|
|
|
@ -24,8 +24,8 @@ import com.x8bit.bitwarden.data.vault.datasource.network.model.LinkedIdTypeJson
|
|||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SecureNoteTypeJson
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.UriMatchTypeJson
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Converts a Bitwarden SDK [Cipher] object to a corresponding
|
||||
|
@ -36,7 +36,7 @@ fun Cipher.toEncryptedNetworkCipher(): CipherJsonRequest =
|
|||
notes = notes,
|
||||
reprompt = reprompt.toNetworkRepromptType(),
|
||||
passwordHistory = passwordHistory?.toEncryptedNetworkPasswordHistoryList(),
|
||||
lastKnownRevisionDate = LocalDateTime.ofInstant(revisionDate, ZoneOffset.UTC),
|
||||
lastKnownRevisionDate = ZonedDateTime.ofInstant(revisionDate, ZoneOffset.UTC),
|
||||
type = type.toNetworkCipherType(),
|
||||
login = login?.toEncryptedNetworkLogin(),
|
||||
secureNote = secureNote?.toEncryptedNetworkSecureNote(),
|
||||
|
@ -171,7 +171,7 @@ private fun Login.toEncryptedNetworkLogin(): SyncResponseJson.Cipher.Login =
|
|||
totp = totp,
|
||||
password = password,
|
||||
passwordRevisionDate = passwordRevisionDate?.let {
|
||||
LocalDateTime.ofInstant(it, ZoneOffset.UTC)
|
||||
ZonedDateTime.ofInstant(it, ZoneOffset.UTC)
|
||||
},
|
||||
shouldAutofillOnPageLoad = autofillOnPageLoad,
|
||||
uri = uris?.firstOrNull()?.uri,
|
||||
|
@ -194,7 +194,7 @@ private fun List<PasswordHistory>.toEncryptedNetworkPasswordHistoryList(): List<
|
|||
private fun PasswordHistory.toEncryptedNetworkPasswordHistory(): SyncResponseJson.Cipher.PasswordHistory =
|
||||
SyncResponseJson.Cipher.PasswordHistory(
|
||||
password = password,
|
||||
lastUsedDate = LocalDateTime.ofInstant(lastUsedDate, ZoneOffset.UTC),
|
||||
lastUsedDate = ZonedDateTime.ofInstant(lastUsedDate, ZoneOffset.UTC),
|
||||
)
|
||||
|
||||
/**
|
||||
|
@ -253,9 +253,9 @@ fun SyncResponseJson.Cipher.toEncryptedSdkCipher(): Cipher =
|
|||
attachments = attachments?.toSdkAttachmentList(),
|
||||
fields = fields?.toSdkFieldList(),
|
||||
passwordHistory = passwordHistory?.toSdkPasswordHistoryList(),
|
||||
creationDate = creationDate.toInstant(ZoneOffset.UTC),
|
||||
deletedDate = deletedDate?.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = revisionDate.toInstant(ZoneOffset.UTC),
|
||||
creationDate = creationDate.toInstant(),
|
||||
deletedDate = deletedDate?.toInstant(),
|
||||
revisionDate = revisionDate.toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
|
@ -265,7 +265,7 @@ fun SyncResponseJson.Cipher.Login.toSdkLogin(): Login =
|
|||
Login(
|
||||
username = username,
|
||||
password = password,
|
||||
passwordRevisionDate = passwordRevisionDate?.toInstant(ZoneOffset.UTC),
|
||||
passwordRevisionDate = passwordRevisionDate?.toInstant(),
|
||||
uris = uris?.toSdkLoginUriList(),
|
||||
totp = totp,
|
||||
autofillOnPageLoad = shouldAutofillOnPageLoad,
|
||||
|
@ -392,7 +392,7 @@ fun List<SyncResponseJson.Cipher.PasswordHistory>.toSdkPasswordHistoryList(): Li
|
|||
fun SyncResponseJson.Cipher.PasswordHistory.toSdkPasswordHistory(): PasswordHistory =
|
||||
PasswordHistory(
|
||||
password = password,
|
||||
lastUsedDate = lastUsedDate.toInstant(ZoneOffset.UTC),
|
||||
lastUsedDate = lastUsedDate.toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.x8bit.bitwarden.data.vault.repository.util
|
|||
|
||||
import com.bitwarden.core.Folder
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
||||
import java.time.ZoneOffset
|
||||
|
||||
/**
|
||||
* Converts a list of [SyncResponseJson.Folder] objects to a list of corresponding
|
||||
|
@ -19,5 +18,5 @@ fun SyncResponseJson.Folder.toEncryptedSdkFolder(): Folder =
|
|||
Folder(
|
||||
id = id,
|
||||
name = name.orEmpty(),
|
||||
revisionDate = revisionDate.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = revisionDate.toInstant(),
|
||||
)
|
||||
|
|
|
@ -6,7 +6,6 @@ import com.bitwarden.core.SendText
|
|||
import com.bitwarden.core.SendType
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SendTypeJson
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
||||
import java.time.ZoneOffset
|
||||
|
||||
/**
|
||||
* Converts a list of [SyncResponseJson.Send] objects to a list of corresponding
|
||||
|
@ -34,9 +33,9 @@ fun SyncResponseJson.Send.toEncryptedSdkSend(): Send =
|
|||
accessCount = accessCount.toUInt(),
|
||||
disabled = isDisabled,
|
||||
hideEmail = shouldHideEmail,
|
||||
revisionDate = revisionDate.toInstant(ZoneOffset.UTC),
|
||||
deletionDate = deletionDate.toInstant(ZoneOffset.UTC),
|
||||
expirationDate = expirationDate?.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = revisionDate.toInstant(),
|
||||
deletionDate = deletionDate.toInstant(),
|
||||
expirationDate = expirationDate?.toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,25 +1,23 @@
|
|||
package com.x8bit.bitwarden.data.platform.datasource.network.serializer
|
||||
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.di.PlatformNetworkModule
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.encodeToJsonElement
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneId
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
class LocalDateTimeSerializerTest {
|
||||
private val json = Json {
|
||||
serializersModule = SerializersModule {
|
||||
contextual(LocalDateTime::class, LocalDateTimeSerializer())
|
||||
}
|
||||
}
|
||||
class ZonedDateTimeSerializerTest {
|
||||
private val json = PlatformNetworkModule.providesJson()
|
||||
|
||||
@Test
|
||||
fun `properly deserializes raw JSON to LocalDate`() {
|
||||
fun `properly deserializes raw JSON to ZonedDateTime`() {
|
||||
assertEquals(
|
||||
LocalDateTimeData(
|
||||
dataAsLocalDateTime = LocalDateTime.of(
|
||||
ZonedDateTimeData(
|
||||
dataAsZonedDateTime = ZonedDateTime.of(
|
||||
2023,
|
||||
10,
|
||||
6,
|
||||
|
@ -27,12 +25,13 @@ class LocalDateTimeSerializerTest {
|
|||
22,
|
||||
28,
|
||||
440000000,
|
||||
ZoneOffset.UTC,
|
||||
),
|
||||
),
|
||||
json.decodeFromString<LocalDateTimeData>(
|
||||
json.decodeFromString<ZonedDateTimeData>(
|
||||
"""
|
||||
{
|
||||
"dataAsLocalDateTime": "2023-10-06T17:22:28.44Z"
|
||||
"dataAsZonedDateTime": "2023-10-06T17:22:28.44Z"
|
||||
}
|
||||
""",
|
||||
),
|
||||
|
@ -40,10 +39,10 @@ class LocalDateTimeSerializerTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `properly deserializes raw JSON with nano seconds to LocalDate`() {
|
||||
fun `properly deserializes raw JSON with nano seconds to ZonedDateTime`() {
|
||||
assertEquals(
|
||||
LocalDateTimeData(
|
||||
dataAsLocalDateTime = LocalDateTime.of(
|
||||
ZonedDateTimeData(
|
||||
dataAsZonedDateTime = ZonedDateTime.of(
|
||||
2023,
|
||||
8,
|
||||
1,
|
||||
|
@ -51,12 +50,13 @@ class LocalDateTimeSerializerTest {
|
|||
13,
|
||||
3,
|
||||
502391000,
|
||||
ZoneOffset.UTC,
|
||||
),
|
||||
),
|
||||
json.decodeFromString<LocalDateTimeData>(
|
||||
json.decodeFromString<ZonedDateTimeData>(
|
||||
"""
|
||||
{
|
||||
"dataAsLocalDateTime": "2023-08-01T16:13:03.502391Z"
|
||||
"dataAsZonedDateTime": "2023-08-01T16:13:03.502391Z"
|
||||
}
|
||||
""",
|
||||
),
|
||||
|
@ -69,13 +69,13 @@ class LocalDateTimeSerializerTest {
|
|||
json.parseToJsonElement(
|
||||
"""
|
||||
{
|
||||
"dataAsLocalDateTime": "2023-10-06T17:22:28.440Z"
|
||||
"dataAsZonedDateTime": "2023-10-06T17:22:28.440Z"
|
||||
}
|
||||
""",
|
||||
),
|
||||
json.encodeToJsonElement(
|
||||
LocalDateTimeData(
|
||||
dataAsLocalDateTime = LocalDateTime.of(
|
||||
ZonedDateTimeData(
|
||||
dataAsZonedDateTime = ZonedDateTime.of(
|
||||
2023,
|
||||
10,
|
||||
6,
|
||||
|
@ -83,6 +83,7 @@ class LocalDateTimeSerializerTest {
|
|||
22,
|
||||
28,
|
||||
440000000,
|
||||
ZoneId.of("UTC"),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -91,7 +92,8 @@ class LocalDateTimeSerializerTest {
|
|||
}
|
||||
|
||||
@Serializable
|
||||
private data class LocalDateTimeData(
|
||||
@Serializable(LocalDateTimeSerializer::class)
|
||||
val dataAsLocalDateTime: LocalDateTime,
|
||||
private data class ZonedDateTimeData(
|
||||
@Serializable(ZonedDateTimeSerializer::class)
|
||||
@SerialName("dataAsZonedDateTime")
|
||||
val dataAsZonedDateTime: ZonedDateTime,
|
||||
)
|
|
@ -1,6 +1,6 @@
|
|||
package com.x8bit.bitwarden.data.vault.datasource.network.model
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [CipherJsonRequest] with a given [number].
|
||||
|
@ -20,5 +20,5 @@ fun createMockCipherJsonRequest(number: Int): CipherJsonRequest =
|
|||
passwordHistory = listOf(createMockPasswordHistory(number = number)),
|
||||
reprompt = CipherRepromptTypeJson.NONE,
|
||||
secureNote = createMockSecureNote(),
|
||||
lastKnownRevisionDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
lastKnownRevisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.x8bit.bitwarden.data.vault.datasource.network.model
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [SyncResponseJson.Cipher] with a given [number].
|
||||
|
@ -15,9 +15,9 @@ fun createMockCipher(number: Int): SyncResponseJson.Cipher =
|
|||
notes = "mockNotes-$number",
|
||||
type = CipherTypeJson.LOGIN,
|
||||
login = createMockLogin(number = number),
|
||||
creationDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
deletedDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
revisionDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
creationDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
deletedDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
revisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
attachments = listOf(createMockAttachment(number = number)),
|
||||
card = createMockCard(number = number),
|
||||
fields = listOf(createMockField(number = number)),
|
||||
|
@ -89,7 +89,7 @@ fun createMockCard(number: Int): SyncResponseJson.Cipher.Card =
|
|||
fun createMockPasswordHistory(number: Int): SyncResponseJson.Cipher.PasswordHistory =
|
||||
SyncResponseJson.Cipher.PasswordHistory(
|
||||
password = "mockPassword-$number",
|
||||
lastUsedDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
lastUsedDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
)
|
||||
|
||||
/**
|
||||
|
@ -118,7 +118,7 @@ fun createMockLogin(number: Int): SyncResponseJson.Cipher.Login =
|
|||
SyncResponseJson.Cipher.Login(
|
||||
username = "mockUsername-$number",
|
||||
password = "mockPassword-$number",
|
||||
passwordRevisionDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
passwordRevisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
shouldAutofillOnPageLoad = false,
|
||||
uri = "mockUri-$number",
|
||||
uris = listOf(createMockUri(number = number)),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.x8bit.bitwarden.data.vault.datasource.network.model
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [SyncResponseJson.Folder] with a given [number].
|
||||
|
@ -9,5 +9,5 @@ fun createMockFolder(number: Int): SyncResponseJson.Folder =
|
|||
SyncResponseJson.Folder(
|
||||
id = "mockId-$number",
|
||||
name = "mockName-$number",
|
||||
revisionDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
revisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.x8bit.bitwarden.data.vault.datasource.network.model
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [SyncResponseJson.Profile] with a given [number].
|
||||
|
@ -68,12 +68,12 @@ fun createMockOrganization(number: Int): SyncResponseJson.Profile.Organization =
|
|||
familySponsorshipFriendlyName = "mockFamilySponsorshipFriendlyName-$number",
|
||||
isKeyConnectorEnabled = false,
|
||||
shouldUseTotp = false,
|
||||
familySponsorshipLastSyncDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
familySponsorshipLastSyncDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
shouldUseScim = false,
|
||||
name = "mockName-$number",
|
||||
shouldUseApi = false,
|
||||
isSsoBound = false,
|
||||
familySponsorshipValidUntil = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
familySponsorshipValidUntil = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
status = 1,
|
||||
)
|
||||
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
package com.x8bit.bitwarden.data.vault.datasource.network.model
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
fun createMockSend(number: Int): SyncResponseJson.Send =
|
||||
SyncResponseJson.Send(
|
||||
accessCount = 1,
|
||||
notes = "mockNotes-$number",
|
||||
revisionDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
revisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
maxAccessCount = 1,
|
||||
shouldHideEmail = false,
|
||||
type = SendTypeJson.FILE,
|
||||
accessId = "mockAccessId-$number",
|
||||
password = "mockPassword-$number",
|
||||
file = createMockFile(number = number),
|
||||
deletionDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
deletionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
name = "mockName-$number",
|
||||
isDisabled = false,
|
||||
id = "mockId-$number",
|
||||
text = createMockText(number = number),
|
||||
key = "mockKey-$number",
|
||||
expirationDate = LocalDateTime.parse("2023-10-27T12:00:00"),
|
||||
expirationDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
|
||||
)
|
||||
|
||||
fun createMockFile(number: Int): SyncResponseJson.Send.File =
|
||||
|
|
|
@ -3,8 +3,7 @@ package com.x8bit.bitwarden.data.vault.datasource.sdk.model
|
|||
import com.bitwarden.core.CipherListView
|
||||
import com.bitwarden.core.CipherRepromptType
|
||||
import com.bitwarden.core.CipherType
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [CipherListView] with a given [number].
|
||||
|
@ -17,15 +16,15 @@ fun createMockCipherListView(number: Int): CipherListView =
|
|||
collectionIds = listOf("mockCollectionId-$number"),
|
||||
name = "mockName-$number",
|
||||
type = CipherType.LOGIN,
|
||||
creationDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
deletedDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
creationDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
deletedDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
revisionDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
attachments = 1U,
|
||||
favorite = false,
|
||||
reprompt = CipherRepromptType.NONE,
|
||||
|
|
|
@ -14,8 +14,7 @@ import com.bitwarden.core.PasswordHistoryView
|
|||
import com.bitwarden.core.SecureNoteType
|
||||
import com.bitwarden.core.SecureNoteView
|
||||
import com.bitwarden.core.UriMatchType
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [CipherView].
|
||||
|
@ -39,19 +38,19 @@ fun createMockCipherView(
|
|||
notes = "mockNotes-$number",
|
||||
type = cipherType,
|
||||
login = createMockLoginView(number = number),
|
||||
creationDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
creationDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
deletedDate = if (isDeleted) {
|
||||
LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC)
|
||||
ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant()
|
||||
} else {
|
||||
null
|
||||
},
|
||||
revisionDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
attachments = listOf(createMockAttachmentView(number = number)),
|
||||
card = createMockCardView(number = number),
|
||||
fields = listOf(createMockFieldView(number = number)),
|
||||
|
@ -73,9 +72,9 @@ fun createMockLoginView(number: Int): LoginView =
|
|||
LoginView(
|
||||
username = "mockUsername-$number",
|
||||
password = "mockPassword-$number",
|
||||
passwordRevisionDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
passwordRevisionDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
autofillOnPageLoad = false,
|
||||
uris = listOf(createMockUriView(number = number)),
|
||||
totp = "mockTotp-$number",
|
||||
|
@ -158,9 +157,9 @@ fun createMockIdentityView(number: Int): IdentityView =
|
|||
fun createMockPasswordHistoryView(number: Int): PasswordHistoryView =
|
||||
PasswordHistoryView(
|
||||
password = "mockPassword-$number",
|
||||
lastUsedDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
lastUsedDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
package com.x8bit.bitwarden.data.vault.datasource.sdk.model
|
||||
|
||||
import com.bitwarden.core.FolderView
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [FolderView] with a given [number].
|
||||
|
@ -11,7 +10,7 @@ fun createMockFolderView(number: Int): FolderView =
|
|||
FolderView(
|
||||
id = "mockId-$number",
|
||||
name = "mockName-$number",
|
||||
revisionDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
)
|
||||
|
|
|
@ -4,8 +4,7 @@ import com.bitwarden.core.SendFileView
|
|||
import com.bitwarden.core.SendTextView
|
||||
import com.bitwarden.core.SendType
|
||||
import com.bitwarden.core.SendView
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [SendView] with a given [number].
|
||||
|
@ -25,9 +24,9 @@ fun createMockSendView(number: Int): SendView =
|
|||
accessCount = 1u,
|
||||
disabled = false,
|
||||
hideEmail = false,
|
||||
revisionDate = LocalDateTime.parse("2023-10-27T12:00:00").toInstant(ZoneOffset.UTC),
|
||||
deletionDate = LocalDateTime.parse("2023-10-27T12:00:00").toInstant(ZoneOffset.UTC),
|
||||
expirationDate = LocalDateTime.parse("2023-10-27T12:00:00").toInstant(ZoneOffset.UTC),
|
||||
revisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z").toInstant(),
|
||||
deletionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z").toInstant(),
|
||||
expirationDate = ZonedDateTime.parse("2023-10-27T12:00:00Z").toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,8 +14,7 @@ import com.bitwarden.core.PasswordHistory
|
|||
import com.bitwarden.core.SecureNote
|
||||
import com.bitwarden.core.SecureNoteType
|
||||
import com.bitwarden.core.UriMatchType
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [Cipher] with a given [number].
|
||||
|
@ -31,15 +30,15 @@ fun createMockSdkCipher(number: Int): Cipher =
|
|||
notes = "mockNotes-$number",
|
||||
type = CipherType.LOGIN,
|
||||
login = createMockSdkLogin(number = number),
|
||||
creationDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
deletedDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
creationDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
deletedDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
revisionDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
attachments = listOf(createMockSdkAttachment(number = number)),
|
||||
card = createMockSdkCard(number = number),
|
||||
fields = listOf(createMockSdkField(number = number)),
|
||||
|
@ -68,9 +67,9 @@ fun createMockSdkSecureNote(): SecureNote =
|
|||
fun createMockSdkPasswordHistory(number: Int): PasswordHistory =
|
||||
PasswordHistory(
|
||||
password = "mockPassword-$number",
|
||||
lastUsedDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
lastUsedDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
|
@ -142,9 +141,9 @@ fun createMockSdkLogin(number: Int): Login =
|
|||
Login(
|
||||
username = "mockUsername-$number",
|
||||
password = "mockPassword-$number",
|
||||
passwordRevisionDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
passwordRevisionDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
autofillOnPageLoad = false,
|
||||
uris = listOf(createMockSdkUri(number = number)),
|
||||
totp = "mockTotp-$number",
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
package com.x8bit.bitwarden.data.vault.datasource.sdk.model
|
||||
|
||||
import com.bitwarden.core.Folder
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [Folder] with a given [number].
|
||||
|
@ -11,7 +10,7 @@ fun createMockSdkFolder(number: Int): Folder =
|
|||
Folder(
|
||||
id = "mockId-$number",
|
||||
name = "mockName-$number",
|
||||
revisionDate = LocalDateTime
|
||||
.parse("2023-10-27T12:00:00")
|
||||
.toInstant(ZoneOffset.UTC),
|
||||
revisionDate = ZonedDateTime
|
||||
.parse("2023-10-27T12:00:00Z")
|
||||
.toInstant(),
|
||||
)
|
||||
|
|
|
@ -4,8 +4,7 @@ import com.bitwarden.core.Send
|
|||
import com.bitwarden.core.SendFile
|
||||
import com.bitwarden.core.SendText
|
||||
import com.bitwarden.core.SendType
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
|
||||
/**
|
||||
* Create a mock [Send] with a given [number].
|
||||
|
@ -25,9 +24,9 @@ fun createMockSdkSend(number: Int): Send =
|
|||
accessCount = 1u,
|
||||
disabled = false,
|
||||
hideEmail = false,
|
||||
revisionDate = LocalDateTime.parse("2023-10-27T12:00:00").toInstant(ZoneOffset.UTC),
|
||||
deletionDate = LocalDateTime.parse("2023-10-27T12:00:00").toInstant(ZoneOffset.UTC),
|
||||
expirationDate = LocalDateTime.parse("2023-10-27T12:00:00").toInstant(ZoneOffset.UTC),
|
||||
revisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z").toInstant(),
|
||||
deletionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z").toInstant(),
|
||||
expirationDate = ZonedDateTime.parse("2023-10-27T12:00:00Z").toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue