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

289 lines
9.6 KiB
YAML

description: "gridfs-upload"
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: []
- collectionName: *bucket0_chunks_collectionName
databaseName: *database0Name
documents: []
# Note: Uploaded files and chunks include ObjectIds, which we cannot match with
# "outcome" since it does not allow operators. Instead, these tests will use
# find operations to assert the contents of uploaded files and chunks.
tests:
- description: "upload when length is 0"
operations:
- name: upload
object: *bucket0
arguments:
filename: "filename"
source: { $$hexBytes: "" }
chunkSizeBytes: 4
expectResult: { $$type: objectId }
saveResultAsEntity: &uploadedObjectId uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 0
chunkSize: 4
uploadDate: { $$type: date }
# The md5 field is deprecated so some drivers do not calculate it when uploading files.
md5: { $$unsetOrMatches: "d41d8cd98f00b204e9800998ecf8427e" }
filename: filename
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
expectResult: []
- description: "upload when length is 1"
operations:
- name: upload
object: *bucket0
arguments:
filename: "filename"
source: { $$hexBytes: "11" }
chunkSizeBytes: 4
expectResult: { $$type: objectId }
saveResultAsEntity: *uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 1
chunkSize: 4
uploadDate: { $$type: date }
md5: { $$unsetOrMatches: "47ed733b8d10be225eceba344d533586" }
filename: filename
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
expectResult:
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 0
data: { $binary: { base64: "EQ==", subType: "00" } } # hex 11
- description: "upload when length is 3"
operations:
- name: upload
object: *bucket0
arguments:
filename: "filename"
source: { $$hexBytes: "112233" }
chunkSizeBytes: 4
expectResult: { $$type: objectId }
saveResultAsEntity: *uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 3
chunkSize: 4
uploadDate: { $$type: date }
md5: { $$unsetOrMatches: "bafae3a174ab91fc70db7a6aa50f4f52" }
filename: filename
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
expectResult:
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 0
data: { $binary: { base64: "ESIz", subType: "00" } } # hex 112233
- description: "upload when length is 4"
operations:
- name: upload
object: *bucket0
arguments:
filename: "filename"
source: { $$hexBytes: "11223344" }
chunkSizeBytes: 4
expectResult: { $$type: objectId }
saveResultAsEntity: *uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 4
chunkSize: 4
uploadDate: { $$type: date }
md5: { $$unsetOrMatches: "7e7c77cff5705d1f7574a25ef6662117" }
filename: filename
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
expectResult:
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 0
data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex 11223344
- description: "upload when length is 5"
operations:
- name: upload
object: *bucket0
arguments:
filename: filename
source: { $$hexBytes: "1122334455" }
chunkSizeBytes: 4
expectResult: { $$type: objectId }
saveResultAsEntity: *uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 5
chunkSize: 4
uploadDate: { $$type: date }
md5: { $$unsetOrMatches: "283d4fea5dded59cf837d3047328f5af" }
filename: filename
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
# Sort to ensure chunks are returned in a deterministic order
sort: { n: 1 }
expectResult:
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 0
data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex 11223344
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 1
data: { $binary: { base64: "VQ==", subType: "00" } } # hex 55
- description: "upload when length is 8"
operations:
- name: upload
object: *bucket0
arguments:
filename: filename
source: { $$hexBytes: "1122334455667788" }
chunkSizeBytes: 4
expectResult: { $$type: objectId }
saveResultAsEntity: *uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 8
chunkSize: 4
uploadDate: { $$type: date }
md5: { $$unsetOrMatches: "dd254cdc958e53abaa67da9f797125f5" }
filename: filename
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
# Sort to ensure chunks are returned in a deterministic order
sort: { n: 1 }
expectResult:
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 0
data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex 11223344
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 1
data: { $binary: { base64: "VWZ3iA==", subType: "00" } } # hex 55667788
- description: "upload when contentType is provided"
operations:
- name: upload
object: *bucket0
arguments:
filename: "filename"
source: { $$hexBytes: "11" }
chunkSizeBytes: 4
contentType: "image/jpeg"
expectResult: { $$type: objectId }
saveResultAsEntity: *uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 1
chunkSize: 4
uploadDate: { $$type: date }
md5: { $$unsetOrMatches: "47ed733b8d10be225eceba344d533586" }
filename: filename
contentType: "image/jpeg"
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
expectResult:
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 0
data: { $binary: { base64: "EQ==", subType: "00" } } # hex 11
- description: "upload when metadata is provided"
operations:
- name: upload
object: *bucket0
arguments:
filename: "filename"
source: { $$hexBytes: "11" }
chunkSizeBytes: 4
metadata: { x: 1 }
expectResult: { $$type: objectId }
saveResultAsEntity: *uploadedObjectId
- name: find
object: *bucket0_files_collection
arguments:
filter: {}
expectResult:
- _id: { $$matchesEntity: *uploadedObjectId }
length: 1
chunkSize: 4
uploadDate: { $$type: date }
md5: { $$unsetOrMatches: "47ed733b8d10be225eceba344d533586" }
filename: filename
metadata: { x: 1 }
- name: find
object: *bucket0_chunks_collection
arguments:
filter: {}
expectResult:
- _id: { $$type: objectId }
files_id: { $$matchesEntity: *uploadedObjectId }
n: 0
data: { $binary: { base64: "EQ==", subType: "00" } } # hex 11