Skip to content

Commit

Permalink
[PM-13900] Update Bitwarden SDK to add canManage to Collection obje…
Browse files Browse the repository at this point in the history
…cts (#4169)
  • Loading branch information
SaintPatrck authored Oct 30, 2024
1 parent 6e0ce3b commit 56367cc
Show file tree
Hide file tree
Showing 13 changed files with 279 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
{
"formatVersion": 1,
"database": {
"version": 4,
"identityHash": "f7906c69e0a2c065d4d3be140fc721b6",
"entities": [
{
"tableName": "ciphers",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `user_id` TEXT NOT NULL, `cipher_type` TEXT NOT NULL, `cipher_json` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "userId",
"columnName": "user_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "cipherType",
"columnName": "cipher_type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "cipherJson",
"columnName": "cipher_json",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [
{
"name": "index_ciphers_user_id",
"unique": false,
"columnNames": [
"user_id"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_ciphers_user_id` ON `${TABLE_NAME}` (`user_id`)"
}
],
"foreignKeys": []
},
{
"tableName": "collections",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `user_id` TEXT NOT NULL, `organization_id` TEXT NOT NULL, `should_hide_passwords` INTEGER NOT NULL, `name` TEXT NOT NULL, `external_id` TEXT, `read_only` INTEGER NOT NULL, `manage` INTEGER NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "userId",
"columnName": "user_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "organizationId",
"columnName": "organization_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "shouldHidePasswords",
"columnName": "should_hide_passwords",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "externalId",
"columnName": "external_id",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "isReadOnly",
"columnName": "read_only",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "canManage",
"columnName": "manage",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [
{
"name": "index_collections_user_id",
"unique": false,
"columnNames": [
"user_id"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_collections_user_id` ON `${TABLE_NAME}` (`user_id`)"
}
],
"foreignKeys": []
},
{
"tableName": "domains",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`user_id` TEXT NOT NULL, `domains_json` TEXT NOT NULL, PRIMARY KEY(`user_id`))",
"fields": [
{
"fieldPath": "userId",
"columnName": "user_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "domainsJson",
"columnName": "domains_json",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"user_id"
]
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "folders",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `user_id` TEXT NOT NULL, `name` TEXT, `revision_date` INTEGER NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "userId",
"columnName": "user_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "revisionDate",
"columnName": "revision_date",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [
{
"name": "index_folders_user_id",
"unique": false,
"columnNames": [
"user_id"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_folders_user_id` ON `${TABLE_NAME}` (`user_id`)"
}
],
"foreignKeys": []
},
{
"tableName": "sends",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `user_id` TEXT NOT NULL, `send_type` TEXT NOT NULL, `send_json` TEXT NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "userId",
"columnName": "user_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "sendType",
"columnName": "send_type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "sendJson",
"columnName": "send_json",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [
{
"name": "index_sends_user_id",
"unique": false,
"columnNames": [
"user_id"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_sends_user_id` ON `${TABLE_NAME}` (`user_id`)"
}
],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'f7906c69e0a2c065d4d3be140fc721b6')"
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ class VaultDiskSourceImpl(
shouldHidePasswords = collection.shouldHidePasswords,
externalId = collection.externalId,
isReadOnly = collection.isReadOnly,
canManage = collection.canManage,
),
)
}
Expand All @@ -114,6 +115,7 @@ class VaultDiskSourceImpl(
shouldHidePasswords = entity.shouldHidePasswords,
externalId = entity.externalId,
isReadOnly = entity.isReadOnly,
canManage = entity.canManage,
)
}
},
Expand Down Expand Up @@ -229,6 +231,7 @@ class VaultDiskSourceImpl(
shouldHidePasswords = collection.shouldHidePasswords,
externalId = collection.externalId,
isReadOnly = collection.isReadOnly,
canManage = collection.canManage,
)
},
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import com.x8bit.bitwarden.data.vault.datasource.disk.entity.SendEntity
FolderEntity::class,
SendEntity::class,
],
version = 3,
version = 4,
exportSchema = true,
)
@TypeConverters(ZonedDateTimeTypeConverter::class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,7 @@ data class CollectionEntity(

@ColumnInfo(name = "read_only")
val isReadOnly: Boolean,

@ColumnInfo(name = "manage")
val canManage: Boolean,
)
Original file line number Diff line number Diff line change
Expand Up @@ -969,5 +969,8 @@ data class SyncResponseJson(

@SerialName("id")
val id: String,

@SerialName("manage")
val canManage: Boolean,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ fun SyncResponseJson.Collection.toEncryptedSdkCollection(): Collection =
externalId = this.externalId,
hidePasswords = this.shouldHidePasswords,
readOnly = this.isReadOnly,
manage = this.canManage,
)

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@ private val COLLECTION_ENTITY = CollectionEntity(
name = "mockName-3",
externalId = "mockExternalId-3",
isReadOnly = false,
canManage = true,
)

private const val DOMAINS_JSON = """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ fun createMockCollection(number: Int): SyncResponseJson.Collection =
externalId = "mockExternalId-$number",
isReadOnly = false,
id = "mockId-$number",
canManage = true,
)
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@ private const val SYNC_SUCCESS_JSON = """
"name": "mockName-1",
"externalId": "mockExternalId-1",
"readOnly": false,
"id": "mockId-1"
"id": "mockId-1",
"manage": true
}
],
"ciphers": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ fun createMockCollectionView(number: Int, name: String? = null): CollectionView
name = name ?: "mockName-$number",
externalId = "mockExternalId-$number",
readOnly = false,
manage = true,
)
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ fun createMockSdkCollection(number: Int): Collection =
name = "mockName-$number",
externalId = "mockExternalId-$number",
readOnly = false,
manage = true,
)
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class VaultSdkCollectionExtensionsTest {
externalId = "externalId",
readOnly = true,
id = "id",
manage = true,
),
SyncResponseJson.Collection(
organizationId = "organizationId",
Expand All @@ -25,6 +26,7 @@ class VaultSdkCollectionExtensionsTest {
externalId = "externalId",
isReadOnly = true,
id = "id",
canManage = true,
)
.toEncryptedSdkCollection(),
)
Expand All @@ -42,6 +44,7 @@ class VaultSdkCollectionExtensionsTest {
externalId = "externalId",
readOnly = true,
id = "id",
manage = true,
),
),
listOf(
Expand All @@ -52,6 +55,7 @@ class VaultSdkCollectionExtensionsTest {
externalId = "externalId",
isReadOnly = true,
id = "id",
canManage = true,
)
.toEncryptedSdkCollection(),
),
Expand Down
Loading

0 comments on commit 56367cc

Please sign in to comment.