bson/testdata/gridfs/delete.yml
2025-03-17 20:58:26 +01:00

199 lines
6.1 KiB
YAML

description: "gridfs-delete"
schemaVersion: "1.0"
createEntities:
- client:
id: &client0 client0
- database:
id: &database0 database0
client: *client0
databaseName: &database0Name gridfs-tests
- bucket:
id: &bucket0 bucket0
database: *database0
- collection:
id: &bucket0_files_collection bucket0_files_collection
database: *database0
collectionName: &bucket0_files_collectionName fs.files
- collection:
id: &bucket0_chunks_collection bucket0_chunks_collection
database: *database0
collectionName: &bucket0_chunks_collectionName fs.chunks
initialData:
- collectionName: *bucket0_files_collectionName
databaseName: *database0Name
documents:
- &file1
_id: { "$oid": "000000000000000000000001" }
length: 0
chunkSize: 4
uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
md5: "d41d8cd98f00b204e9800998ecf8427e"
filename: "length-0"
contentType: "application/octet-stream"
aliases: []
metadata: {}
- &file2
_id: { "$oid": "000000000000000000000002" }
length: 0
chunkSize: 4
uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
md5: "d41d8cd98f00b204e9800998ecf8427e"
filename: "length-0-with-empty-chunk"
contentType: "application/octet-stream"
aliases: []
metadata: {}
- &file3
_id: { "$oid": "000000000000000000000003" }
length: 2
chunkSize: 4
uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
md5: "c700ed4fdb1d27055aa3faa2c2432283"
filename: "length-2"
contentType: "application/octet-stream"
aliases: []
metadata: {}
- &file4
_id: { "$oid": "000000000000000000000004" }
length: 8
chunkSize: 4
uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
md5: "dd254cdc958e53abaa67da9f797125f5"
filename: "length-8"
contentType: "application/octet-stream"
aliases: []
metadata: {}
- collectionName: *bucket0_chunks_collectionName
databaseName: *database0Name
documents:
- &file2_chunk0
_id: { "$oid": "000000000000000000000001" }
files_id: { "$oid": "000000000000000000000002" }
n: 0
data: { "$binary": { "base64": "", "subType": "00" } }
- &file3_chunk0
_id: { "$oid": "000000000000000000000002" }
files_id: { "$oid": "000000000000000000000003" }
n: 0
data: { "$binary": { "base64": "ESI=", "subType": "00" } } # hex: 1122
- &file4_chunk0
_id: { "$oid": "000000000000000000000003" }
files_id: { "$oid": "000000000000000000000004" }
n: 0
data: { "$binary": { "base64": "ESIzRA==", "subType": "00" } } # hex: 11223344
- &file4_chunk1
_id: { "$oid": "000000000000000000000004" }
files_id: { "$oid": "000000000000000000000004" }
n: 1
data: { "$binary": { "base64": "VWZ3iA==", "subType": "00" } } # hex: 55667788
tests:
- description: "delete when length is 0"
operations:
- name: delete
object: *bucket0
arguments:
id: { $oid: "000000000000000000000001" }
outcome:
- collectionName: *bucket0_files_collectionName
databaseName: *database0Name
documents:
- *file2
- *file3
- *file4
- collectionName: *bucket0_chunks_collectionName
databaseName: *database0Name
documents:
- *file2_chunk0
- *file3_chunk0
- *file4_chunk0
- *file4_chunk1
- description: "delete when length is 0 and there is one extra empty chunk"
operations:
- name: delete
object: *bucket0
arguments:
id: { $oid: "000000000000000000000002" }
outcome:
- collectionName: *bucket0_files_collectionName
databaseName: *database0Name
documents:
- *file1
- *file3
- *file4
- collectionName: *bucket0_chunks_collectionName
databaseName: *database0Name
documents:
- *file3_chunk0
- *file4_chunk0
- *file4_chunk1
- description: "delete when length is 8"
operations:
- name: delete
object: *bucket0
arguments:
id: { $oid: "000000000000000000000004" }
outcome:
- collectionName: *bucket0_files_collectionName
databaseName: *database0Name
documents:
- *file1
- *file2
- *file3
- collectionName: *bucket0_chunks_collectionName
databaseName: *database0Name
documents:
- *file2_chunk0
- *file3_chunk0
- description: "delete when files entry does not exist"
operations:
- name: delete
object: *bucket0
arguments:
id: { $oid: "000000000000000000000000" }
expectError: { isError: true } # FileNotFound
outcome:
- collectionName: *bucket0_files_collectionName
databaseName: *database0Name
documents:
- *file1
- *file2
- *file3
- *file4
- collectionName: *bucket0_chunks_collectionName
databaseName: *database0Name
documents:
- *file2_chunk0
- *file3_chunk0
- *file4_chunk0
- *file4_chunk1
- description: "delete when files entry does not exist and there are orphaned chunks"
operations:
- name: deleteOne
object: *bucket0_files_collection
arguments:
filter:
_id: { $oid: "000000000000000000000004" }
expectResult:
deletedCount: 1
- name: delete
object: *bucket0
arguments:
id: { $oid: "000000000000000000000004" }
expectError: { isError: true } # FileNotFound
outcome:
- collectionName: *bucket0_files_collectionName
databaseName: *database0Name
documents:
- *file1
- *file2
- *file3
# Orphaned chunks are still deleted even if fs.files
- collectionName: *bucket0_chunks_collectionName
databaseName: *database0Name
documents:
- *file2_chunk0
- *file3_chunk0