Update test fixtures to allow for easier customization (#5224)

This commit is contained in:
David Perez 2025-05-19 16:27:21 -05:00 committed by GitHub
parent fc4f02c4d5
commit 4895f2a18a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 630 additions and 322 deletions

View File

@ -3,6 +3,7 @@ package com.x8bit.bitwarden.data.auth.repository.util
import com.bitwarden.network.model.OrganizationType
import com.bitwarden.network.model.PolicyTypeJson
import com.bitwarden.network.model.createMockOrganization
import com.bitwarden.network.model.createMockPermissions
import com.bitwarden.network.model.createMockPolicy
import com.x8bit.bitwarden.data.auth.repository.model.Organization
import com.x8bit.bitwarden.data.auth.repository.model.PolicyInformation
@ -54,11 +55,12 @@ class SyncResponseJsonExtensionsTest {
),
),
listOf(
createMockOrganization(number = 1).copy(
shouldUseKeyConnector = true,
createMockOrganization(number = 1, shouldUseKeyConnector = true),
createMockOrganization(
number = 2,
type = OrganizationType.USER,
permissions = createMockPermissions(shouldManageResetPassword = true),
),
createMockOrganization(number = 2, shouldManageResetPassword = true)
.copy(type = OrganizationType.USER),
)
.toOrganizations(),
)

View File

@ -11,10 +11,10 @@ import com.bitwarden.network.model.SyncResponseJson
import com.bitwarden.network.model.UpdateCipherCollectionsJsonRequest
import com.bitwarden.network.model.UpdateCipherResponseJson
import com.bitwarden.network.model.createMockAttachment
import com.bitwarden.network.model.createMockAttachmentJsonResponse
import com.bitwarden.network.model.createMockAttachmentResponse
import com.bitwarden.network.model.createMockCipher
import com.bitwarden.network.model.createMockCipherJsonRequest
import com.bitwarden.network.model.createMockLogin
import com.bitwarden.network.service.CiphersService
import com.bitwarden.vault.Attachment
import com.bitwarden.vault.AttachmentView
@ -159,7 +159,10 @@ class CipherManagerTest {
} returns createMockSdkCipher(number = 1, clock = clock).asSuccess()
coEvery {
ciphersService.createCipher(
body = createMockCipherJsonRequest(number = 1, hasNullUri = true),
body = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
)
} returns error.asFailure()
@ -184,7 +187,10 @@ class CipherManagerTest {
val mockCipher = createMockCipher(number = 1)
coEvery {
ciphersService.createCipher(
body = createMockCipherJsonRequest(number = 1, hasNullUri = true),
body = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
)
} returns mockCipher.asSuccess()
coEvery { vaultDiskSource.saveCipher(userId, mockCipher) } just runs
@ -248,7 +254,10 @@ class CipherManagerTest {
coEvery {
ciphersService.createCipherInOrganization(
body = CreateCipherInOrganizationJsonRequest(
cipher = createMockCipherJsonRequest(number = 1, hasNullUri = true),
cipher = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
collectionIds = listOf("mockId-1"),
),
)
@ -279,7 +288,10 @@ class CipherManagerTest {
coEvery {
ciphersService.createCipherInOrganization(
body = CreateCipherInOrganizationJsonRequest(
cipher = createMockCipherJsonRequest(number = 1, hasNullUri = true),
cipher = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
collectionIds = listOf("mockId-1"),
),
)
@ -356,7 +368,10 @@ class CipherManagerTest {
coEvery {
ciphersService.updateCipher(
cipherId = cipherId,
body = createMockCipherJsonRequest(number = 1, hasNullUri = true),
body = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
)
} returns error.asFailure()
@ -385,7 +400,10 @@ class CipherManagerTest {
coEvery {
ciphersService.updateCipher(
cipherId = cipherId,
body = createMockCipherJsonRequest(number = 1, hasNullUri = true),
body = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
)
} returns UpdateCipherResponseJson
.Invalid(
@ -426,7 +444,10 @@ class CipherManagerTest {
coEvery {
ciphersService.updateCipher(
cipherId = cipherId,
body = createMockCipherJsonRequest(number = 1, hasNullUri = true),
body = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
)
} returns UpdateCipherResponseJson
.Success(cipher = mockCipher)
@ -804,7 +825,10 @@ class CipherManagerTest {
ciphersService.shareCipher(
cipherId = "mockId-1",
body = ShareCipherJsonRequest(
cipher = createMockCipherJsonRequest(number = 1, hasNullUri = true),
cipher = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
collectionIds = listOf("mockId-1"),
),
)
@ -844,7 +868,7 @@ class CipherManagerTest {
val encryptedFile = File("path/to/encrypted/file")
val decryptedFile = File("path/to/encrypted/file_decrypted")
val mockCipherView = createMockCipherView(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentJsonResponse(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentResponse(number = 1)
val mockNetworkCipher = createMockCipher(number = 1)
// Handle mocks for migration
@ -949,7 +973,10 @@ class CipherManagerTest {
ciphersService.shareCipher(
cipherId = "mockId-1",
body = ShareCipherJsonRequest(
cipher = createMockCipherJsonRequest(number = 1, hasNullUri = true),
cipher = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
collectionIds = listOf("mockId-1"),
),
)
@ -994,7 +1021,10 @@ class CipherManagerTest {
ciphersService.shareCipher(
cipherId = "mockId-1",
body = ShareCipherJsonRequest(
cipher = createMockCipherJsonRequest(number = 1, hasNullUri = true),
cipher = createMockCipherJsonRequest(
number = 1,
login = createMockLogin(number = 1, uri = null),
),
collectionIds = listOf("mockId-1"),
),
)
@ -1367,7 +1397,7 @@ class CipherManagerTest {
)
val mockFile = File.createTempFile("mockFile", "temp")
val mockAttachment = createMockSdkAttachment(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentJsonResponse(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentResponse(number = 1)
val error = Throwable("Fail")
coEvery {
vaultSdkSource.encryptCipher(userId = userId, cipherView = mockCipherView)
@ -1432,7 +1462,7 @@ class CipherManagerTest {
)
val mockFile = File.createTempFile("mockFile", "temp")
val mockAttachment = createMockSdkAttachment(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentJsonResponse(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentResponse(number = 1)
val mockCipherResponse = createMockCipher(number = 1).copy(collectionIds = null)
val mockUpdatedCipherResponse = createMockCipher(number = 1).copy(
collectionIds = listOf("mockId-1"),
@ -1510,7 +1540,7 @@ class CipherManagerTest {
)
val mockFile = File.createTempFile("mockFile", "temp")
val mockAttachment = createMockSdkAttachment(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentJsonResponse(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentResponse(number = 1)
val mockCipherResponse = createMockCipher(number = 1).copy(collectionIds = null)
val mockUpdatedCipherResponse = createMockCipher(number = 1).copy(
collectionIds = listOf("mockId-1"),
@ -1585,7 +1615,7 @@ class CipherManagerTest {
)
val mockFile = File.createTempFile("mockFile", "temp")
val mockAttachment = createMockSdkAttachment(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentJsonResponse(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentResponse(number = 1)
val mockCipherResponse = createMockCipher(number = 1).copy(collectionIds = null)
val mockUpdatedCipherResponse = createMockCipher(number = 1).copy(
collectionIds = listOf("mockId-1"),
@ -1662,7 +1692,7 @@ class CipherManagerTest {
)
val mockFile = File.createTempFile("mockFile", "temp")
val mockAttachment = createMockSdkAttachment(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentJsonResponse(number = 1)
val mockAttachmentJsonResponse = createMockAttachmentResponse(number = 1)
coEvery {
vaultSdkSource.encryptCipher(userId = userId, cipherView = mockCipherView)
} returns mockCipher.asSuccess()

View File

@ -2307,10 +2307,7 @@ class VaultRepositoryTest {
every { length() } returns 1
}
val sendFileResponse = CreateFileSendResponse.Success(
createMockFileSendResponseJson(
number = 1,
type = SendTypeJson.FILE,
),
createMockFileSendResponseJson(number = 1),
)
val error = Throwable()
coEvery {

View File

@ -58,7 +58,7 @@ class VaultSdkCipherExtensionsTest {
assertEquals(
createMockCipher(
number = 1,
hasNullUri = true,
login = createMockLogin(number = 1, uri = null),
),
result,
)
@ -71,7 +71,7 @@ class VaultSdkCipherExtensionsTest {
assertEquals(
createMockCipherJsonRequest(
number = 1,
hasNullUri = true,
login = createMockLogin(number = 1, uri = null),
),
syncCipher,
)

View File

@ -15,7 +15,6 @@ import com.bitwarden.network.model.UpdateCipherResponseJson
import com.bitwarden.network.model.createMockAttachment
import com.bitwarden.network.model.createMockAttachmentInfo
import com.bitwarden.network.model.createMockAttachmentJsonRequest
import com.bitwarden.network.model.createMockAttachmentJsonResponse
import com.bitwarden.network.model.createMockAttachmentResponse
import com.bitwarden.network.model.createMockCipher
import com.bitwarden.network.model.createMockCipherJsonRequest
@ -96,7 +95,7 @@ class CiphersServiceTest : BaseServiceTest() {
body = createMockAttachmentJsonRequest(number = 1),
)
assertEquals(
createMockAttachmentJsonResponse(number = 1),
createMockAttachmentResponse(number = 1),
result.getOrThrow(),
)
}

View File

@ -3,9 +3,14 @@ package com.bitwarden.network.model
/**
* Create a mock [CipherJsonRequest] with a given [number].
*/
fun createMockAttachmentJsonRequest(number: Int): AttachmentJsonRequest =
fun createMockAttachmentJsonRequest(
number: Int,
fileName: String? = "mockFileName-$number",
key: String? = "mockKey-$number",
fileSize: String? = "1",
): AttachmentJsonRequest =
AttachmentJsonRequest(
fileName = "mockFileName-$number",
key = "mockKey-$number",
fileSize = "1",
fileName = fileName,
key = key,
fileSize = fileSize,
)

View File

@ -1,29 +1,18 @@
package com.bitwarden.network.model
/**
* Create a mock [AttachmentJsonResponse] with a given [number].
*/
fun createMockAttachmentJsonResponse(
number: Int,
fileUploadType: FileUploadType = FileUploadType.AZURE,
): AttachmentJsonResponse =
AttachmentJsonResponse.Success(
attachmentId = "mockAttachmentId-$number",
url = "mockUrl-$number",
fileUploadType = fileUploadType,
cipherResponse = createMockCipher(number = number),
)
/**
* Create a mock [AttachmentJsonResponse.Success] with a given [number].
*/
fun createMockAttachmentResponse(
number: Int,
attachmentId: String = "mockAttachmentId-$number",
url: String = "mockUrl-$number",
fileUploadType: FileUploadType = FileUploadType.AZURE,
cipherResponse: SyncResponseJson.Cipher = createMockCipher(number = number),
): AttachmentJsonResponse.Success =
AttachmentJsonResponse.Success(
attachmentId = "mockAttachmentId-$number",
url = "mockUrl-$number",
attachmentId = attachmentId,
url = url,
fileUploadType = fileUploadType,
cipherResponse = createMockCipher(number = number),
cipherResponse = cipherResponse,
)

View File

@ -5,29 +5,47 @@ import java.time.ZonedDateTime
/**
* Create a mock [CipherJsonRequest] with a given [number].
*/
fun createMockCipherJsonRequest(number: Int, hasNullUri: Boolean = false): CipherJsonRequest =
@Suppress("LongParameterList")
fun createMockCipherJsonRequest(
number: Int,
attachments: Map<String, AttachmentJsonRequest>? = mapOf(
"mockId-$number" to createMockAttachmentJsonRequest(number = 1),
),
organizationId: String? = "mockOrganizationId-$number",
folderId: String? = "mockFolderId-$number",
name: String? = "mockName-$number",
notes: String? = "mockNotes-$number",
type: CipherTypeJson = CipherTypeJson.LOGIN,
login: SyncResponseJson.Cipher.Login? = createMockLogin(number = number),
card: SyncResponseJson.Cipher.Card? = createMockCard(number = number),
sshKey: SyncResponseJson.Cipher.SshKey? = createMockSshKey(number = number),
identity: SyncResponseJson.Cipher.Identity? = createMockIdentity(number = number),
secureNote: SyncResponseJson.Cipher.SecureNote? = createMockSecureNote(),
fields: List<SyncResponseJson.Cipher.Field>? = listOf(createMockField(number = number)),
isFavorite: Boolean = false,
passwordHistory: List<SyncResponseJson.Cipher.PasswordHistory>? = listOf(
createMockPasswordHistory(number = number),
),
reprompt: CipherRepromptTypeJson = CipherRepromptTypeJson.NONE,
lastKnownRevisionDate: ZonedDateTime? = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
key: String? = "mockKey-$number",
): CipherJsonRequest =
CipherJsonRequest(
attachments = mapOf(
"mockId-$number" to AttachmentJsonRequest(
fileName = "mockFileName-$number",
key = "mockKey-$number",
fileSize = "1",
),
),
organizationId = "mockOrganizationId-$number",
folderId = "mockFolderId-$number",
name = "mockName-$number",
notes = "mockNotes-$number",
type = CipherTypeJson.LOGIN,
login = createMockLogin(number = number, hasNullUri = hasNullUri),
card = createMockCard(number = number),
sshKey = createMockSshKey(number = number),
fields = listOf(createMockField(number = number)),
identity = createMockIdentity(number = number),
isFavorite = false,
passwordHistory = listOf(createMockPasswordHistory(number = number)),
reprompt = CipherRepromptTypeJson.NONE,
secureNote = createMockSecureNote(),
lastKnownRevisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
key = "mockKey-$number",
attachments = attachments,
organizationId = organizationId,
folderId = folderId,
name = name,
notes = notes,
type = type,
login = login,
card = card,
sshKey = sshKey,
identity = identity,
secureNote = secureNote,
fields = fields,
isFavorite = isFavorite,
passwordHistory = passwordHistory,
reprompt = reprompt,
lastKnownRevisionDate = lastKnownRevisionDate,
key = key,
)

View File

@ -5,22 +5,35 @@ import java.time.ZonedDateTime
/**
* Create a mock [SendJsonRequest] with a given [number].
*/
@Suppress("LongParameterList")
fun createMockSendJsonRequest(
number: Int,
name: String? = "mockName-$number",
notes: String? = "mockNotes-$number",
type: SendTypeJson = SendTypeJson.FILE,
key: String = "mockKey-$number",
maxAccessCount: Int? = 1,
expirationDate: ZonedDateTime? = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
deletionDate: ZonedDateTime = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
fileLength: Long? = 1,
file: SyncResponseJson.Send.File? = createMockFile(number = number),
text: SyncResponseJson.Send.Text? = createMockText(number = number),
password: String? = "mockPassword-$number",
isDisabled: Boolean = false,
shouldHideEmail: Boolean? = false,
): SendJsonRequest =
SendJsonRequest(
name = "mockName-$number",
notes = "mockNotes-$number",
name = name,
notes = notes,
type = type,
key = "mockKey-$number",
maxAccessCount = 1,
expirationDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
deletionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
fileLength = 1,
file = createMockFile(number),
text = createMockText(number),
password = "mockPassword-$number",
isDisabled = false,
shouldHideEmail = false,
key = key,
maxAccessCount = maxAccessCount,
expirationDate = expirationDate,
deletionDate = deletionDate,
fileLength = fileLength,
file = file,
text = text,
password = password,
isDisabled = isDisabled,
shouldHideEmail = shouldHideEmail,
)

View File

@ -1,3 +1,5 @@
@file:Suppress("LongParameterList")
package com.bitwarden.network.model
import java.time.ZonedDateTime
@ -12,102 +14,162 @@ private val MOCK_ZONED_DATE_TIME = ZonedDateTime.parse("2023-10-27T12:00:00Z")
*/
fun createMockCipher(
number: Int,
hasNullUri: Boolean = false,
fido2Credentials: List<SyncResponseJson.Cipher.Fido2Credential> = listOf(
createMockFido2Credential(number),
id: String = "mockId-$number",
organizationId: String? = "mockOrganizationId-$number",
folderId: String? = "mockFolderId-$number",
collectionIds: List<String>? = listOf("mockCollectionId-$number"),
name: String? = "mockName-$number",
notes: String? = "mockNotes-$number",
creationDate: ZonedDateTime = MOCK_ZONED_DATE_TIME,
revisionDate: ZonedDateTime = MOCK_ZONED_DATE_TIME,
deletedDate: ZonedDateTime? = MOCK_ZONED_DATE_TIME,
attachments: List<SyncResponseJson.Cipher.Attachment>? = listOf(
createMockAttachment(number = number),
),
isDeleted: Boolean = true,
type: CipherTypeJson = CipherTypeJson.LOGIN,
login: SyncResponseJson.Cipher.Login? = createMockLogin(number = number),
card: SyncResponseJson.Cipher.Card? = createMockCard(number = number),
identity: SyncResponseJson.Cipher.Identity? = createMockIdentity(number = number),
sshKey: SyncResponseJson.Cipher.SshKey? = createMockSshKey(number = number),
secureNote: SyncResponseJson.Cipher.SecureNote? = createMockSecureNote(),
fields: List<SyncResponseJson.Cipher.Field>? = listOf(createMockField(number = number)),
isFavorite: Boolean = false,
passwordHistory: List<SyncResponseJson.Cipher.PasswordHistory>? = listOf(
createMockPasswordHistory(number = number),
),
permissions: SyncResponseJson.Cipher.CipherPermissions? = createMockCipherPermissions(),
reprompt: CipherRepromptTypeJson = CipherRepromptTypeJson.NONE,
shouldEdit: Boolean = false,
shouldOrganizationUseTotp: Boolean = false,
shouldViewPassword: Boolean = false,
key: String? = "mockKey-$number",
): SyncResponseJson.Cipher =
SyncResponseJson.Cipher(
id = "mockId-$number",
organizationId = "mockOrganizationId-$number",
folderId = "mockFolderId-$number",
collectionIds = listOf("mockCollectionId-$number"),
name = "mockName-$number",
notes = "mockNotes-$number",
type = CipherTypeJson.LOGIN,
login = createMockLogin(
number = number,
hasNullUri = hasNullUri,
fido2Credentials = fido2Credentials,
),
creationDate = MOCK_ZONED_DATE_TIME,
deletedDate = if (isDeleted) MOCK_ZONED_DATE_TIME else null,
revisionDate = MOCK_ZONED_DATE_TIME,
attachments = listOf(createMockAttachment(number = number)),
card = createMockCard(number = number),
fields = listOf(createMockField(number = number)),
identity = createMockIdentity(number = number),
sshKey = createMockSshKey(number = number),
isFavorite = false,
passwordHistory = listOf(createMockPasswordHistory(number = number)),
permissions = createMockCipherPermissions(),
reprompt = CipherRepromptTypeJson.NONE,
secureNote = createMockSecureNote(),
shouldEdit = false,
shouldOrganizationUseTotp = false,
shouldViewPassword = false,
key = "mockKey-$number",
id = id,
organizationId = organizationId,
folderId = folderId,
collectionIds = collectionIds,
name = name,
notes = notes,
type = type,
login = login,
card = card,
identity = identity,
secureNote = secureNote,
sshKey = sshKey,
creationDate = creationDate,
revisionDate = revisionDate,
deletedDate = deletedDate,
attachments = attachments,
fields = fields,
isFavorite = isFavorite,
passwordHistory = passwordHistory,
permissions = permissions,
reprompt = reprompt,
shouldEdit = shouldEdit,
shouldOrganizationUseTotp = shouldOrganizationUseTotp,
shouldViewPassword = shouldViewPassword,
key = key,
)
/**
* Create a mock [SyncResponseJson.Cipher.Identity] with a given [number].
*/
fun createMockIdentity(number: Int): SyncResponseJson.Cipher.Identity =
fun createMockIdentity(
number: Int,
firstName: String? = "mockFirstName-$number",
middleName: String? = "mockMiddleName-$number",
lastName: String? = "mockLastName-$number",
passportNumber: String? = "mockPassportNumber-$number",
country: String? = "mockCountry-$number",
address1: String? = "mockAddress1-$number",
address2: String? = "mockAddress2-$number",
address3: String? = "mockAddress3-$number",
city: String? = "mockCity-$number",
postalCode: String? = "mockPostalCode-$number",
title: String? = "mockTitle-$number",
ssn: String? = "mockSsn-$number",
phone: String? = "mockPhone-$number",
company: String? = "mockCompany-$number",
licenseNumber: String? = "mockLicenseNumber-$number",
state: String? = "mockState-$number",
email: String? = "mockEmail-$number",
username: String? = "mockUsername-$number",
): SyncResponseJson.Cipher.Identity =
SyncResponseJson.Cipher.Identity(
firstName = "mockFirstName-$number",
middleName = "mockMiddleName-$number",
lastName = "mockLastName-$number",
passportNumber = "mockPassportNumber-$number",
country = "mockCountry-$number",
address1 = "mockAddress1-$number",
address2 = "mockAddress2-$number",
address3 = "mockAddress3-$number",
city = "mockCity-$number",
postalCode = "mockPostalCode-$number",
title = "mockTitle-$number",
ssn = "mockSsn-$number",
phone = "mockPhone-$number",
company = "mockCompany-$number",
licenseNumber = "mockLicenseNumber-$number",
state = "mockState-$number",
email = "mockEmail-$number",
username = "mockUsername-$number",
firstName = firstName,
middleName = middleName,
lastName = lastName,
passportNumber = passportNumber,
country = country,
address1 = address1,
address2 = address2,
address3 = address3,
city = city,
postalCode = postalCode,
title = title,
ssn = ssn,
phone = phone,
company = company,
licenseNumber = licenseNumber,
state = state,
email = email,
username = username,
)
/**
* Create a mock [SyncResponseJson.Cipher.Attachment] with a given [number].
*/
fun createMockAttachment(number: Int): SyncResponseJson.Cipher.Attachment =
fun createMockAttachment(
number: Int,
fileName: String? = "mockFileName-$number",
size: Int = 1,
sizeName: String? = "mockSizeName-$number",
id: String? = "mockId-$number",
url: String? = "mockUrl-$number",
key: String? = "mockKey-$number",
): SyncResponseJson.Cipher.Attachment =
SyncResponseJson.Cipher.Attachment(
fileName = "mockFileName-$number",
size = 1,
sizeName = "mockSizeName-$number",
id = "mockId-$number",
url = "mockUrl-$number",
key = "mockKey-$number",
fileName = fileName,
size = size,
sizeName = sizeName,
id = id,
url = url,
key = key,
)
/**
* Create a mock [SyncResponseJson.Cipher.Card] with a given [number].
*/
fun createMockCard(number: Int): SyncResponseJson.Cipher.Card =
fun createMockCard(
number: Int,
cardNumber: String? = "mockNumber-$number",
expMonth: String? = "mockExpMonth-$number",
code: String? = "mockCode-$number",
expirationYear: String? = "mockExpirationYear-$number",
cardholderName: String? = "mockCardholderName-$number",
brand: String? = "mockBrand-$number",
): SyncResponseJson.Cipher.Card =
SyncResponseJson.Cipher.Card(
number = "mockNumber-$number",
expMonth = "mockExpMonth-$number",
code = "mockCode-$number",
expirationYear = "mockExpirationYear-$number",
cardholderName = "mockCardholderName-$number",
brand = "mockBrand-$number",
number = cardNumber,
expMonth = expMonth,
code = code,
expirationYear = expirationYear,
cardholderName = cardholderName,
brand = brand,
)
/**
* Create a mock [SyncResponseJson.Cipher.PasswordHistory] with a given [number].
*/
fun createMockPasswordHistory(number: Int): SyncResponseJson.Cipher.PasswordHistory =
fun createMockPasswordHistory(
number: Int,
password: String = "mockPassword-$number",
lastUsedDate: ZonedDateTime = MOCK_ZONED_DATE_TIME,
): SyncResponseJson.Cipher.PasswordHistory =
SyncResponseJson.Cipher.PasswordHistory(
password = "mockPassword-$number",
lastUsedDate = MOCK_ZONED_DATE_TIME,
password = password,
lastUsedDate = lastUsedDate,
)
/**
@ -125,20 +187,28 @@ fun createMockCipherPermissions(
/**
* Create a mock [SyncResponseJson.Cipher.SecureNote].
*/
fun createMockSecureNote(): SyncResponseJson.Cipher.SecureNote =
fun createMockSecureNote(
type: SecureNoteTypeJson = SecureNoteTypeJson.GENERIC,
): SyncResponseJson.Cipher.SecureNote =
SyncResponseJson.Cipher.SecureNote(
type = SecureNoteTypeJson.GENERIC,
type = type,
)
/**
* Create a mock [SyncResponseJson.Cipher.Field] with a given [number].
*/
fun createMockField(number: Int): SyncResponseJson.Cipher.Field =
fun createMockField(
number: Int,
linkedIdType: LinkedIdTypeJson? = LinkedIdTypeJson.LOGIN_USERNAME,
name: String? = "mockName-$number",
type: FieldTypeJson = FieldTypeJson.HIDDEN,
value: String? = "mockValue-$number",
): SyncResponseJson.Cipher.Field =
SyncResponseJson.Cipher.Field(
linkedIdType = LinkedIdTypeJson.LOGIN_USERNAME,
name = "mockName-$number",
type = FieldTypeJson.HIDDEN,
value = "mockValue-$number",
linkedIdType = linkedIdType,
name = name,
type = type,
value = value,
)
/**
@ -146,56 +216,89 @@ fun createMockField(number: Int): SyncResponseJson.Cipher.Field =
*/
fun createMockLogin(
number: Int,
hasNullUri: Boolean = false,
username: String? = "mockUsername-$number",
password: String? = "mockPassword-$number",
passwordRevisionDate: ZonedDateTime? = MOCK_ZONED_DATE_TIME,
shouldAutofillOnPageLoad: Boolean? = false,
uri: String? = "mockUri-$number",
uris: List<SyncResponseJson.Cipher.Login.Uri> = listOf(createMockUri(number = number)),
totp: String? = "mockTotp-$number",
fido2Credentials: List<SyncResponseJson.Cipher.Fido2Credential> = listOf(
createMockFido2Credential(number),
createMockFido2Credential(number = number),
),
): SyncResponseJson.Cipher.Login =
SyncResponseJson.Cipher.Login(
username = "mockUsername-$number",
password = "mockPassword-$number",
passwordRevisionDate = MOCK_ZONED_DATE_TIME,
shouldAutofillOnPageLoad = false,
uri = if (hasNullUri) null else "mockUri-$number",
uris = listOf(createMockUri(number = number)),
totp = "mockTotp-$number",
username = username,
password = password,
passwordRevisionDate = passwordRevisionDate,
shouldAutofillOnPageLoad = shouldAutofillOnPageLoad,
uri = uri,
uris = uris,
totp = totp,
fido2Credentials = fido2Credentials,
)
/**
* Create a mock [SyncResponseJson.Cipher.SshKey] with a given [number].
*/
fun createMockSshKey(number: Int) = SyncResponseJson.Cipher.SshKey(
publicKey = "mockPublicKey-$number",
privateKey = "mockPrivateKey-$number",
keyFingerprint = "mockKeyFingerprint-$number",
)
fun createMockSshKey(
number: Int,
publicKey: String = "mockPublicKey-$number",
privateKey: String = "mockPrivateKey-$number",
keyFingerprint: String = "mockKeyFingerprint-$number",
): SyncResponseJson.Cipher.SshKey =
SyncResponseJson.Cipher.SshKey(
publicKey = publicKey,
privateKey = privateKey,
keyFingerprint = keyFingerprint,
)
/**
* Create a mock [SyncResponseJson.Cipher.Fido2Credential] with a given [number].
*/
fun createMockFido2Credential(number: Int) = SyncResponseJson.Cipher.Fido2Credential(
credentialId = "mockCredentialId-$number",
keyType = "mockKeyType-$number",
keyAlgorithm = "mockKeyAlgorithm-$number",
keyCurve = "mockKeyCurve-$number",
keyValue = "mockKeyValue-$number",
rpId = "mockRpId-$number",
rpName = "mockRpName-$number",
userHandle = "mockUserHandle-$number",
userName = "mockUserName-$number",
userDisplayName = "mockUserDisplayName-$number",
counter = "mockCounter-$number",
discoverable = "mockDiscoverable-$number",
creationDate = MOCK_ZONED_DATE_TIME,
)
fun createMockFido2Credential(
number: Int,
credentialId: String = "mockCredentialId-$number",
keyType: String = "mockKeyType-$number",
keyAlgorithm: String = "mockKeyAlgorithm-$number",
keyCurve: String = "mockKeyCurve-$number",
keyValue: String = "mockKeyValue-$number",
rpId: String = "mockRpId-$number",
rpName: String? = "mockRpName-$number",
userHandle: String? = "mockUserHandle-$number",
userName: String? = "mockUserName-$number",
userDisplayName: String? = "mockUserDisplayName-$number",
counter: String = "mockCounter-$number",
discoverable: String = "mockDiscoverable-$number",
creationDate: ZonedDateTime = MOCK_ZONED_DATE_TIME,
): SyncResponseJson.Cipher.Fido2Credential =
SyncResponseJson.Cipher.Fido2Credential(
credentialId = credentialId,
keyType = keyType,
keyAlgorithm = keyAlgorithm,
keyCurve = keyCurve,
keyValue = keyValue,
rpId = rpId,
rpName = rpName,
userHandle = userHandle,
userName = userName,
userDisplayName = userDisplayName,
counter = counter,
discoverable = discoverable,
creationDate = creationDate,
)
/**
* Create a mock [SyncResponseJson.Cipher.Login.Uri] with a given [number].
*/
fun createMockUri(number: Int): SyncResponseJson.Cipher.Login.Uri =
fun createMockUri(
number: Int,
uri: String? = "mockUri-$number",
uriMatchType: UriMatchTypeJson? = UriMatchTypeJson.HOST,
uriChecksum: String? = "mockUriChecksum-$number",
): SyncResponseJson.Cipher.Login.Uri =
SyncResponseJson.Cipher.Login.Uri(
uri = "mockUri-$number",
uriMatchType = UriMatchTypeJson.HOST,
uriChecksum = "mockUriChecksum-$number",
uri = uri,
uriMatchType = uriMatchType,
uriChecksum = uriChecksum,
)

View File

@ -3,13 +3,23 @@ package com.bitwarden.network.model
/**
* Create a mock [SyncResponseJson.Collection] with a given [number].
*/
fun createMockCollection(number: Int): SyncResponseJson.Collection =
@Suppress("LongParameterList")
fun createMockCollection(
number: Int,
organizationId: String = "mockOrganizationId-$number",
shouldHidePasswords: Boolean = false,
name: String = "mockName-$number",
externalId: String? = "mockExternalId-$number",
isReadOnly: Boolean = false,
id: String = "mockId-$number",
canManage: Boolean? = true,
): SyncResponseJson.Collection =
SyncResponseJson.Collection(
organizationId = "mockOrganizationId-$number",
shouldHidePasswords = false,
name = "mockName-$number",
externalId = "mockExternalId-$number",
isReadOnly = false,
id = "mockId-$number",
canManage = true,
organizationId = organizationId,
shouldHidePasswords = shouldHidePasswords,
name = name,
externalId = externalId,
isReadOnly = isReadOnly,
id = id,
canManage = canManage,
)

View File

@ -3,20 +3,29 @@ package com.bitwarden.network.model
/**
* Create a mock [SyncResponseJson.Domains] with a given [number].
*/
fun createMockDomains(number: Int): SyncResponseJson.Domains =
fun createMockDomains(
number: Int,
globalEquivalentDomains: List<SyncResponseJson.Domains.GlobalEquivalentDomain> = listOf(
createMockGlobalEquivalentDomain(number = number),
),
equivalentDomains: List<List<String>>? = listOf(listOf("mockEquivalentDomain-$number")),
): SyncResponseJson.Domains =
SyncResponseJson.Domains(
globalEquivalentDomains = listOf(
SyncResponseJson.Domains.GlobalEquivalentDomain(
isExcluded = false,
domains = listOf(
"mockDomain-$number",
),
type = 1,
),
),
equivalentDomains = listOf(
listOf(
"mockEquivalentDomain-$number",
),
),
globalEquivalentDomains = globalEquivalentDomains,
equivalentDomains = equivalentDomains,
)
/**
* Create a mock [SyncResponseJson.Domains.GlobalEquivalentDomain] with a given [number].
*/
fun createMockGlobalEquivalentDomain(
number: Int,
isExcluded: Boolean = false,
domains: List<String>? = listOf("mockDomain-$number"),
type: Int = 1,
): SyncResponseJson.Domains.GlobalEquivalentDomain =
SyncResponseJson.Domains.GlobalEquivalentDomain(
isExcluded = isExcluded,
domains = domains,
type = type,
)

View File

@ -5,9 +5,14 @@ import java.time.ZonedDateTime
/**
* Create a mock [SyncResponseJson.Folder] with a given [number].
*/
fun createMockFolder(number: Int): SyncResponseJson.Folder =
fun createMockFolder(
number: Int,
id: String = "mockId-$number",
name: String? = "mockName-$number",
revisionDate: ZonedDateTime = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
): SyncResponseJson.Folder =
SyncResponseJson.Folder(
id = "mockId-$number",
name = "mockName-$number",
revisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
id = id,
name = name,
revisionDate = revisionDate,
)

View File

@ -5,16 +5,18 @@ import kotlinx.serialization.json.JsonObject
/**
* Create a mock [SyncResponseJson.Policy] with the given [number], [type], and [data].
*/
@Suppress("LongParameterList")
fun createMockPolicy(
number: Int = 1,
organizationId: String = "mockOrganizationId-$number",
id: String = "mockId-$number",
type: PolicyTypeJson = PolicyTypeJson.MASTER_PASSWORD,
isEnabled: Boolean = false,
data: JsonObject? = null,
): SyncResponseJson.Policy =
SyncResponseJson.Policy(
organizationId = organizationId,
id = "mockId-$number",
id = id,
type = type,
isEnabled = isEnabled,
data = data,

View File

@ -1,3 +1,5 @@
@file:Suppress("LongParameterList")
package com.bitwarden.network.model
import java.time.ZonedDateTime
@ -5,27 +7,54 @@ import java.time.ZonedDateTime
/**
* Create a mock [SyncResponseJson.Profile] with a given [number].
*/
fun createMockProfile(number: Int): SyncResponseJson.Profile =
fun createMockProfile(
number: Int,
providerOrganizations: List<SyncResponseJson.Profile.Organization>? = listOf(
createMockOrganization(number = number),
),
isPremiumFromOrganization: Boolean = false,
shouldForcePasswordReset: Boolean = false,
avatarColor: String? = "mockAvatarColor-$number",
isEmailVerified: Boolean = false,
isTwoFactorEnabled: Boolean = false,
privateKey: String? = "mockPrivateKey-$number",
isPremium: Boolean = false,
culture: String? = "mockCulture-$number",
name: String? = "mockName-$number",
organizations: List<SyncResponseJson.Profile.Organization>? = listOf(
createMockOrganization(number = number),
),
shouldUseKeyConnector: Boolean = false,
id: String = "mockId-$number",
masterPasswordHint: String? = "mockMasterPasswordHint-$number",
email: String? = "mockEmail-$number",
key: String? = "mockKey-$number",
securityStamp: String? = "mockSecurityStamp-$number",
providers: List<SyncResponseJson.Profile.Provider>? = listOf(
createMockProvider(number = number),
),
creationDate: ZonedDateTime = ZonedDateTime.parse("2024-09-13T01:00:00.00Z"),
): SyncResponseJson.Profile =
SyncResponseJson.Profile(
providerOrganizations = listOf(createMockOrganization(number = number)),
isPremiumFromOrganization = false,
shouldForcePasswordReset = false,
avatarColor = "mockAvatarColor-$number",
isEmailVerified = false,
isTwoFactorEnabled = false,
privateKey = "mockPrivateKey-$number",
isPremium = false,
culture = "mockCulture-$number",
name = "mockName-$number",
organizations = listOf(createMockOrganization(number = number)),
shouldUseKeyConnector = false,
id = "mockId-$number",
masterPasswordHint = "mockMasterPasswordHint-$number",
email = "mockEmail-$number",
key = "mockKey-$number",
securityStamp = "mockSecurityStamp-$number",
providers = listOf(createMockProvider(number = number)),
creationDate = ZonedDateTime.parse("2024-09-13T01:00:00.00Z"),
providerOrganizations = providerOrganizations,
isPremiumFromOrganization = isPremiumFromOrganization,
shouldForcePasswordReset = shouldForcePasswordReset,
avatarColor = avatarColor,
isEmailVerified = isEmailVerified,
isTwoFactorEnabled = isTwoFactorEnabled,
privateKey = privateKey,
isPremium = isPremium,
culture = culture,
name = name,
organizations = organizations,
shouldUseKeyConnector = shouldUseKeyConnector,
id = id,
masterPasswordHint = masterPasswordHint,
email = email,
key = key,
securityStamp = securityStamp,
providers = providers,
creationDate = creationDate,
)
/**
@ -33,75 +62,116 @@ fun createMockProfile(number: Int): SyncResponseJson.Profile =
*/
fun createMockOrganization(
number: Int,
isEnabled: Boolean = false,
shouldUsePolicies: Boolean = false,
shouldManageResetPassword: Boolean = false,
shouldUseKeyConnector: Boolean = false,
keyConnectorUrl: String? = "mockKeyConnectorUrl-$number",
type: OrganizationType = OrganizationType.ADMIN,
seats: Int? = 1,
isEnabled: Boolean = false,
providerType: Int? = 1,
maxCollections: Int? = 1,
isSelfHost: Boolean = false,
permissions: SyncResponseJson.Profile.Permissions = createMockPermissions(),
providerId: String? = "mockProviderId-$number",
id: String = "mockId-$number",
shouldUseGroups: Boolean = false,
shouldUseDirectory: Boolean = false,
key: String? = "mockKey-$number",
providerName: String? = "mockProviderName-$number",
shouldUsersGetPremium: Boolean = false,
maxStorageGb: Int? = 1,
identifier: String? = "mockIdentifier-$number",
use2fa: Boolean = false,
familySponsorshipToDelete: Boolean? = false,
userId: String? = "mockUserId-$number",
shouldUseEvents: Boolean = false,
familySponsorshipFriendlyName: String? = "mockFamilySponsorshipFriendlyName-$number",
shouldUseTotp: Boolean = false,
familySponsorshipLastSyncDate: ZonedDateTime? = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
name: String? = "mockName-$number",
shouldUseApi: Boolean = false,
familySponsorshipValidUntil: ZonedDateTime? = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
status: OrganizationStatusType = OrganizationStatusType.ACCEPTED,
userIsClaimedByOrganization: Boolean = false,
): SyncResponseJson.Profile.Organization =
SyncResponseJson.Profile.Organization(
shouldUsePolicies = shouldUsePolicies,
shouldUseKeyConnector = false,
keyConnectorUrl = "mockKeyConnectorUrl-$number",
shouldUseKeyConnector = shouldUseKeyConnector,
keyConnectorUrl = keyConnectorUrl,
type = type,
seats = 1,
seats = seats,
isEnabled = isEnabled,
providerType = 1,
maxCollections = 1,
isSelfHost = false,
permissions = createMockPermissions(shouldManageResetPassword = shouldManageResetPassword),
providerId = "mockProviderId-$number",
id = "mockId-$number",
shouldUseGroups = false,
shouldUseDirectory = false,
key = "mockKey-$number",
providerName = "mockProviderName-$number",
shouldUsersGetPremium = false,
maxStorageGb = 1,
identifier = "mockIdentifier-$number",
use2fa = false,
familySponsorshipToDelete = false,
userId = "mockUserId-$number",
shouldUseEvents = false,
familySponsorshipFriendlyName = "mockFamilySponsorshipFriendlyName-$number",
shouldUseTotp = false,
familySponsorshipLastSyncDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
name = "mockName-$number",
shouldUseApi = false,
familySponsorshipValidUntil = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
status = OrganizationStatusType.ACCEPTED,
userIsClaimedByOrganization = false,
providerType = providerType,
maxCollections = maxCollections,
isSelfHost = isSelfHost,
permissions = permissions,
providerId = providerId,
id = id,
shouldUseGroups = shouldUseGroups,
shouldUseDirectory = shouldUseDirectory,
key = key,
providerName = providerName,
shouldUsersGetPremium = shouldUsersGetPremium,
maxStorageGb = maxStorageGb,
identifier = identifier,
use2fa = use2fa,
familySponsorshipToDelete = familySponsorshipToDelete,
userId = userId,
shouldUseEvents = shouldUseEvents,
familySponsorshipFriendlyName = familySponsorshipFriendlyName,
shouldUseTotp = shouldUseTotp,
familySponsorshipLastSyncDate = familySponsorshipLastSyncDate,
name = name,
shouldUseApi = shouldUseApi,
familySponsorshipValidUntil = familySponsorshipValidUntil,
status = status,
userIsClaimedByOrganization = userIsClaimedByOrganization,
)
/**
* Create a mock set of organization keys with the given [number].
*/
fun createMockOrganizationKeys(number: Int): Map<String, String> =
createMockOrganization(number = number)
.let { mapOf(it.id to requireNotNull(it.key)) }
fun createMockOrganizationKeys(
number: Int,
organization: SyncResponseJson.Profile.Organization = createMockOrganization(number = number),
): Map<String, String> =
mapOf(organization.id to requireNotNull(organization.key))
/**
* Create a mock [SyncResponseJson.Profile.Permissions].
*/
fun createMockPermissions(
shouldManageResetPassword: Boolean = false,
shouldManagePolicies: Boolean = false,
): SyncResponseJson.Profile.Permissions =
SyncResponseJson.Profile.Permissions(
shouldManageResetPassword = shouldManageResetPassword,
shouldManagePolicies = false,
shouldManagePolicies = shouldManagePolicies,
)
/**
* Create a mock [SyncResponseJson.Profile.Provider] with a given [number].
*/
fun createMockProvider(number: Int): SyncResponseJson.Profile.Provider =
fun createMockProvider(
number: Int,
shouldUseEvents: Boolean = false,
permissions: SyncResponseJson.Profile.Permissions = createMockPermissions(),
name: String? = "mockName-$number",
id: String = "mockId-$number",
type: Int = 1,
userId: String? = "mockUserId-$number",
key: String? = "mockKey-$number",
isEnabled: Boolean = false,
status: Int = 1,
): SyncResponseJson.Profile.Provider =
SyncResponseJson.Profile.Provider(
shouldUseEvents = false,
permissions = createMockPermissions(),
name = "mockName-$number",
id = "mockId-$number",
type = 1,
userId = "mockUserId-$number",
key = "mockKey-$number",
isEnabled = false,
status = 1,
shouldUseEvents = shouldUseEvents,
permissions = permissions,
name = name,
id = id,
type = type,
userId = userId,
key = key,
isEnabled = isEnabled,
status = status,
)

View File

@ -2,46 +2,89 @@ package com.bitwarden.network.model
import java.time.ZonedDateTime
fun createMockFileSendResponseJson(number: Int, type: SendTypeJson = SendTypeJson.FILE) =
/**
* Create a mock [CreateFileSendResponseJson] with a given data.
*/
fun createMockFileSendResponseJson(
number: Int,
url: String = "www.test.com",
fileUploadType: FileUploadType = FileUploadType.AZURE,
sendResponse: SyncResponseJson.Send = createMockSend(number = number, type = SendTypeJson.FILE),
): CreateFileSendResponseJson =
CreateFileSendResponseJson(
url = "www.test.com",
fileUploadType = FileUploadType.AZURE,
sendResponse = createMockSend(number = number, type = type),
url = url,
fileUploadType = fileUploadType,
sendResponse = sendResponse,
)
/**
* Create a mock [SyncResponseJson.Send] with a given [number].
*/
@Suppress("LongParameterList")
fun createMockSend(
number: Int,
accessCount: Int = 1,
maxAccessCount: Int? = 1,
notes: String? = "mockNotes-$number",
revisionDate: ZonedDateTime = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
shouldHideEmail: Boolean = false,
type: SendTypeJson = SendTypeJson.FILE,
accessId: String? = "mockAccessId-$number",
password: String? = "mockPassword-$number",
file: SyncResponseJson.Send.File? = createMockFile(number = number),
deletionDate: ZonedDateTime = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
name: String? = "mockName-$number",
isDisabled: Boolean = false,
id: String = "mockId-$number",
text: SyncResponseJson.Send.Text? = createMockText(number = number),
key: String? = "mockKey-$number",
expirationDate: ZonedDateTime? = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
): SyncResponseJson.Send =
SyncResponseJson.Send(
accessCount = 1,
notes = "mockNotes-$number",
revisionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
maxAccessCount = 1,
shouldHideEmail = false,
accessCount = accessCount,
notes = notes,
revisionDate = revisionDate,
maxAccessCount = maxAccessCount,
shouldHideEmail = shouldHideEmail,
type = type,
accessId = "mockAccessId-$number",
password = "mockPassword-$number",
file = createMockFile(number = number),
deletionDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
name = "mockName-$number",
isDisabled = false,
id = "mockId-$number",
text = createMockText(number = number),
key = "mockKey-$number",
expirationDate = ZonedDateTime.parse("2023-10-27T12:00:00Z"),
accessId = accessId,
password = password,
file = file,
deletionDate = deletionDate,
name = name,
isDisabled = isDisabled,
id = id,
text = text,
key = key,
expirationDate = expirationDate,
)
fun createMockFile(number: Int): SyncResponseJson.Send.File =
/**
* Create a mock [SyncResponseJson.Send.File] with a given [number].
*/
fun createMockFile(
number: Int,
fileName: String? = "mockFileName-$number",
size: Int? = 1,
sizeName: String? = "mockSizeName-$number",
id: String? = "mockId-$number",
): SyncResponseJson.Send.File =
SyncResponseJson.Send.File(
fileName = "mockFileName-$number",
size = 1,
sizeName = "mockSizeName-$number",
id = "mockId-$number",
fileName = fileName,
size = size,
sizeName = sizeName,
id = id,
)
fun createMockText(number: Int): SyncResponseJson.Send.Text =
/**
* Create a mock [SyncResponseJson.Send.Text] with a given [number].
*/
fun createMockText(
number: Int,
isHidden: Boolean = false,
text: String? = "mockText-$number",
): SyncResponseJson.Send.Text =
SyncResponseJson.Send.Text(
isHidden = false,
text = "mockText-$number",
isHidden = isHidden,
text = text,
)

View File

@ -1,12 +1,25 @@
package com.bitwarden.network.model
fun createMockSyncResponse(number: Int): SyncResponseJson =
/**
* Create a mock [SyncResponseJson] with a given [number].
*/
@Suppress("LongParameterList")
fun createMockSyncResponse(
number: Int,
folders: List<SyncResponseJson.Folder> = listOf(createMockFolder(number = number)),
collections: List<SyncResponseJson.Collection> = listOf(createMockCollection(number = number)),
profile: SyncResponseJson.Profile = createMockProfile(number = number),
ciphers: List<SyncResponseJson.Cipher> = listOf(createMockCipher(number = number)),
policies: List<SyncResponseJson.Policy> = listOf(createMockPolicy(number = number)),
domains: SyncResponseJson.Domains = createMockDomains(number = number),
sends: List<SyncResponseJson.Send> = listOf(createMockSend(number = number)),
): SyncResponseJson =
SyncResponseJson(
folders = listOf(createMockFolder(number = number)),
collections = listOf(createMockCollection(number = number)),
profile = createMockProfile(number = number),
ciphers = listOf(createMockCipher(number = number)),
policies = listOf(createMockPolicy(number = number)),
domains = createMockDomains(number = number),
sends = listOf(createMockSend(number = number)),
folders = folders,
collections = collections,
profile = profile,
ciphers = ciphers,
policies = policies,
domains = domains,
sends = sends,
)