...
1description: "gridfs-upload"
2
3schemaVersion: "1.0"
4
5createEntities:
6 - client:
7 id: &client0 client0
8 - database:
9 id: &database0 database0
10 client: *client0
11 databaseName: &database0Name gridfs-tests
12 - bucket:
13 id: &bucket0 bucket0
14 database: *database0
15 - collection:
16 id: &bucket0_files_collection bucket0_files_collection
17 database: *database0
18 collectionName: &bucket0_files_collectionName fs.files
19 - collection:
20 id: &bucket0_chunks_collection bucket0_chunks_collection
21 database: *database0
22 collectionName: &bucket0_chunks_collectionName fs.chunks
23
24initialData:
25 - collectionName: *bucket0_files_collectionName
26 databaseName: *database0Name
27 documents: []
28 - collectionName: *bucket0_chunks_collectionName
29 databaseName: *database0Name
30 documents: []
31
32# Note: Uploaded files and chunks include ObjectIds, which we cannot match with
33# "outcome" since it does not allow operators. Instead, these tests will use
34# find operations to assert the contents of uploaded files and chunks.
35tests:
36 - description: "upload when length is 0"
37 operations:
38 - name: upload
39 object: *bucket0
40 arguments:
41 filename: "filename"
42 source: { $$hexBytes: "" }
43 chunkSizeBytes: 4
44 expectResult: { $$type: objectId }
45 saveResultAsEntity: &uploadedObjectId uploadedObjectId
46 - name: find
47 object: *bucket0_files_collection
48 arguments:
49 filter: {}
50 expectResult:
51 - _id: { $$matchesEntity: *uploadedObjectId }
52 length: 0
53 chunkSize: 4
54 uploadDate: { $$type: date }
55 # The md5 field is deprecated so some drivers do not calculate it when uploading files.
56 md5: { $$unsetOrMatches: "d41d8cd98f00b204e9800998ecf8427e" }
57 filename: filename
58 - name: find
59 object: *bucket0_chunks_collection
60 arguments:
61 filter: {}
62 expectResult: []
63 - description: "upload when length is 1"
64 operations:
65 - name: upload
66 object: *bucket0
67 arguments:
68 filename: "filename"
69 source: { $$hexBytes: "11" }
70 chunkSizeBytes: 4
71 expectResult: { $$type: objectId }
72 saveResultAsEntity: *uploadedObjectId
73 - name: find
74 object: *bucket0_files_collection
75 arguments:
76 filter: {}
77 expectResult:
78 - _id: { $$matchesEntity: *uploadedObjectId }
79 length: 1
80 chunkSize: 4
81 uploadDate: { $$type: date }
82 md5: { $$unsetOrMatches: "47ed733b8d10be225eceba344d533586" }
83 filename: filename
84 - name: find
85 object: *bucket0_chunks_collection
86 arguments:
87 filter: {}
88 expectResult:
89 - _id: { $$type: objectId }
90 files_id: { $$matchesEntity: *uploadedObjectId }
91 n: 0
92 data: { $binary: { base64: "EQ==", subType: "00" } } # hex 11
93 - description: "upload when length is 3"
94 operations:
95 - name: upload
96 object: *bucket0
97 arguments:
98 filename: "filename"
99 source: { $$hexBytes: "112233" }
100 chunkSizeBytes: 4
101 expectResult: { $$type: objectId }
102 saveResultAsEntity: *uploadedObjectId
103 - name: find
104 object: *bucket0_files_collection
105 arguments:
106 filter: {}
107 expectResult:
108 - _id: { $$matchesEntity: *uploadedObjectId }
109 length: 3
110 chunkSize: 4
111 uploadDate: { $$type: date }
112 md5: { $$unsetOrMatches: "bafae3a174ab91fc70db7a6aa50f4f52" }
113 filename: filename
114 - name: find
115 object: *bucket0_chunks_collection
116 arguments:
117 filter: {}
118 expectResult:
119 - _id: { $$type: objectId }
120 files_id: { $$matchesEntity: *uploadedObjectId }
121 n: 0
122 data: { $binary: { base64: "ESIz", subType: "00" } } # hex 112233
123 - description: "upload when length is 4"
124 operations:
125 - name: upload
126 object: *bucket0
127 arguments:
128 filename: "filename"
129 source: { $$hexBytes: "11223344" }
130 chunkSizeBytes: 4
131 expectResult: { $$type: objectId }
132 saveResultAsEntity: *uploadedObjectId
133 - name: find
134 object: *bucket0_files_collection
135 arguments:
136 filter: {}
137 expectResult:
138 - _id: { $$matchesEntity: *uploadedObjectId }
139 length: 4
140 chunkSize: 4
141 uploadDate: { $$type: date }
142 md5: { $$unsetOrMatches: "7e7c77cff5705d1f7574a25ef6662117" }
143 filename: filename
144 - name: find
145 object: *bucket0_chunks_collection
146 arguments:
147 filter: {}
148 expectResult:
149 - _id: { $$type: objectId }
150 files_id: { $$matchesEntity: *uploadedObjectId }
151 n: 0
152 data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex 11223344
153 - description: "upload when length is 5"
154 operations:
155 - name: upload
156 object: *bucket0
157 arguments:
158 filename: filename
159 source: { $$hexBytes: "1122334455" }
160 chunkSizeBytes: 4
161 expectResult: { $$type: objectId }
162 saveResultAsEntity: *uploadedObjectId
163 - name: find
164 object: *bucket0_files_collection
165 arguments:
166 filter: {}
167 expectResult:
168 - _id: { $$matchesEntity: *uploadedObjectId }
169 length: 5
170 chunkSize: 4
171 uploadDate: { $$type: date }
172 md5: { $$unsetOrMatches: "283d4fea5dded59cf837d3047328f5af" }
173 filename: filename
174 - name: find
175 object: *bucket0_chunks_collection
176 arguments:
177 filter: {}
178 # Sort to ensure chunks are returned in a deterministic order
179 sort: { n: 1 }
180 expectResult:
181 - _id: { $$type: objectId }
182 files_id: { $$matchesEntity: *uploadedObjectId }
183 n: 0
184 data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex 11223344
185 - _id: { $$type: objectId }
186 files_id: { $$matchesEntity: *uploadedObjectId }
187 n: 1
188 data: { $binary: { base64: "VQ==", subType: "00" } } # hex 55
189 - description: "upload when length is 8"
190 operations:
191 - name: upload
192 object: *bucket0
193 arguments:
194 filename: filename
195 source: { $$hexBytes: "1122334455667788" }
196 chunkSizeBytes: 4
197 expectResult: { $$type: objectId }
198 saveResultAsEntity: *uploadedObjectId
199 - name: find
200 object: *bucket0_files_collection
201 arguments:
202 filter: {}
203 expectResult:
204 - _id: { $$matchesEntity: *uploadedObjectId }
205 length: 8
206 chunkSize: 4
207 uploadDate: { $$type: date }
208 md5: { $$unsetOrMatches: "dd254cdc958e53abaa67da9f797125f5" }
209 filename: filename
210 - name: find
211 object: *bucket0_chunks_collection
212 arguments:
213 filter: {}
214 # Sort to ensure chunks are returned in a deterministic order
215 sort: { n: 1 }
216 expectResult:
217 - _id: { $$type: objectId }
218 files_id: { $$matchesEntity: *uploadedObjectId }
219 n: 0
220 data: { $binary: { base64: "ESIzRA==", subType: "00" } } # hex 11223344
221 - _id: { $$type: objectId }
222 files_id: { $$matchesEntity: *uploadedObjectId }
223 n: 1
224 data: { $binary: { base64: "VWZ3iA==", subType: "00" } } # hex 55667788
225 - description: "upload when contentType is provided"
226 operations:
227 - name: upload
228 object: *bucket0
229 arguments:
230 filename: "filename"
231 source: { $$hexBytes: "11" }
232 chunkSizeBytes: 4
233 contentType: "image/jpeg"
234 expectResult: { $$type: objectId }
235 saveResultAsEntity: *uploadedObjectId
236 - name: find
237 object: *bucket0_files_collection
238 arguments:
239 filter: {}
240 expectResult:
241 - _id: { $$matchesEntity: *uploadedObjectId }
242 length: 1
243 chunkSize: 4
244 uploadDate: { $$type: date }
245 md5: { $$unsetOrMatches: "47ed733b8d10be225eceba344d533586" }
246 filename: filename
247 contentType: "image/jpeg"
248 - name: find
249 object: *bucket0_chunks_collection
250 arguments:
251 filter: {}
252 expectResult:
253 - _id: { $$type: objectId }
254 files_id: { $$matchesEntity: *uploadedObjectId }
255 n: 0
256 data: { $binary: { base64: "EQ==", subType: "00" } } # hex 11
257 - description: "upload when metadata is provided"
258 operations:
259 - name: upload
260 object: *bucket0
261 arguments:
262 filename: "filename"
263 source: { $$hexBytes: "11" }
264 chunkSizeBytes: 4
265 metadata: { x: 1 }
266 expectResult: { $$type: objectId }
267 saveResultAsEntity: *uploadedObjectId
268 - name: find
269 object: *bucket0_files_collection
270 arguments:
271 filter: {}
272 expectResult:
273 - _id: { $$matchesEntity: *uploadedObjectId }
274 length: 1
275 chunkSize: 4
276 uploadDate: { $$type: date }
277 md5: { $$unsetOrMatches: "47ed733b8d10be225eceba344d533586" }
278 filename: filename
279 metadata: { x: 1 }
280 - name: find
281 object: *bucket0_chunks_collection
282 arguments:
283 filter: {}
284 expectResult:
285 - _id: { $$type: objectId }
286 files_id: { $$matchesEntity: *uploadedObjectId }
287 n: 0
288 data: { $binary: { base64: "EQ==", subType: "00" } } # hex 11
View as plain text