289 lines
9.6 KiB
YAML
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
|