1# Test correctness results.
2# Does not include command monitoring expectations or outcome assertions to make tests more readable.
3
4# Requires libmongocrypt 1.8.0.
5runOn:
6 - minServerVersion: "7.0.0"
7 # Skip QEv2 (also referred to as FLE2v2) tests on Serverless. Unskip once Serverless enables the QEv2 protocol.
8 # FLE 2 Encrypted collections are not supported on standalone.
9 topology: [ "replicaset", "sharded", "load-balanced" ]
10 # Skip tests for "rangePreview" algorithm on Server 8.0+. Server 8.0 drops "rangePreview" and adds "range".
11 maxServerVersion: "7.99.99"
12database_name: &database_name "default"
13collection_name: &collection_name "default"
14data: []
15encrypted_fields: &encrypted_fields {'fields': [{'keyId': {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'path': 'encryptedDecimalPrecision', 'bsonType': 'decimal', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}, 'min': {'$numberDecimal': '0.0'}, 'max': {'$numberDecimal': '200.0'}, 'precision': {'$numberInt': '2'}}}]}
16key_vault_data: [ {'_id': {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'keyMaterial': {'$binary': {'base64': 'sHe0kz57YW7v8g9VP9sf/+K1ex4JqKc5rf/URX3n3p8XdZ6+15uXPaSayC6adWbNxkFskuMCOifDoTT+rkqMtFkDclOy884RuGGtUysq3X7zkAWYTKi8QAfKkajvVbZl2y23UqgVasdQu3OVBQCrH/xY00nNAs/52e958nVjBuzQkSb1T8pKJAyjZsHJ60+FtnfafDZSTAIBJYn7UWBCwQ==', 'subType': '00'}}, 'creationDate': {'$date': {'$numberLong': '1648914851981'}}, 'updateDate': {'$date': {'$numberLong': '1648914851981'}}, 'status': {'$numberInt': '0'}, 'masterKey': {'provider': 'local'}} ]
17tests:
18 - description: "Find with $gt"
19 clientOptions:
20 autoEncryptOpts:
21 kmsProviders:
22 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
23 operations:
24 - name: insertOne
25 arguments:
26 document: &doc0 { _id: 0, encryptedDecimalPrecision: { $numberDecimal: "0.0" } }
27 - name: insertOne
28 arguments:
29 document: &doc1 { _id: 1, encryptedDecimalPrecision: { $numberDecimal: "1.0" } }
30 - name: find
31 arguments:
32 filter: { encryptedDecimalPrecision: { $gt: { $numberDecimal: "0.0" } }}
33 result: [*doc1]
34
35 - description: "Find with $gte"
36 clientOptions:
37 autoEncryptOpts:
38 kmsProviders:
39 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
40 operations:
41 - name: insertOne
42 arguments: { document: *doc0 }
43 - name: insertOne
44 arguments: { document: *doc1 }
45 - name: find
46 arguments:
47 filter: { encryptedDecimalPrecision: { $gte: { $numberDecimal: "0.0" } }}
48 # sort so results from range queries are ordered.
49 sort: { _id: 1 }
50 result: [*doc0, *doc1]
51
52 - description: "Find with $gt with no results"
53 clientOptions:
54 autoEncryptOpts:
55 kmsProviders:
56 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
57 operations:
58 - name: insertOne
59 arguments: { document: *doc0 }
60 - name: insertOne
61 arguments: { document: *doc1 }
62 - name: find
63 arguments:
64 filter: { encryptedDecimalPrecision: { $gt: { $numberDecimal: "1.0" } }}
65 result: []
66
67 - description: "Find with $lt"
68 clientOptions:
69 autoEncryptOpts:
70 kmsProviders:
71 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
72 operations:
73 - name: insertOne
74 arguments: { document: *doc0 }
75 - name: insertOne
76 arguments: { document: *doc1 }
77 - name: find
78 arguments:
79 filter: { encryptedDecimalPrecision: { $lt: { $numberDecimal: "1.0" } }}
80 result: [*doc0]
81
82 - description: "Find with $lte"
83 clientOptions:
84 autoEncryptOpts:
85 kmsProviders:
86 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
87 operations:
88 - name: insertOne
89 arguments: { document: *doc0 }
90 - name: insertOne
91 arguments: { document: *doc1 }
92 - name: find
93 arguments:
94 filter: { encryptedDecimalPrecision: { $lte: { $numberDecimal: "1.0" } }}
95 # sort so results from range queries are ordered.
96 sort: { _id: 1 }
97 result: [*doc0, *doc1]
98
99 - description: "Find with $lt below min"
100 clientOptions:
101 autoEncryptOpts:
102 kmsProviders:
103 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
104 operations:
105 - name: insertOne
106 arguments: { document: *doc0 }
107 - name: insertOne
108 arguments: { document: *doc1 }
109 - name: find
110 arguments:
111 filter: { encryptedDecimalPrecision: { $lt: { $numberDecimal: "0.0" } }}
112 result:
113 errorContains: must be greater than the range minimum
114
115 - description: "Find with $gt above max"
116 clientOptions:
117 autoEncryptOpts:
118 kmsProviders:
119 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
120 operations:
121 - name: insertOne
122 arguments: { document: *doc0 }
123 - name: insertOne
124 arguments: { document: *doc1 }
125 - name: find
126 arguments:
127 filter: { encryptedDecimalPrecision: { $gt: { $numberDecimal: "200.0" } }}
128 result:
129 errorContains: must be less than the range max
130
131 - description: "Find with $gt and $lt"
132 clientOptions:
133 autoEncryptOpts:
134 kmsProviders:
135 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
136 operations:
137 - name: insertOne
138 arguments: { document: *doc0 }
139 - name: insertOne
140 arguments: { document: *doc1 }
141 - name: find
142 arguments:
143 filter: { encryptedDecimalPrecision: { $gt: { $numberDecimal: "0.0" }, $lt: { $numberDecimal: "2.0"} }}
144 result: [*doc1]
145
146 - description: "Find with equality"
147 clientOptions:
148 autoEncryptOpts:
149 kmsProviders:
150 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
151 operations:
152 - name: insertOne
153 arguments: { document: *doc0 }
154 - name: insertOne
155 arguments: { document: *doc1 }
156 - name: find
157 arguments:
158 filter: { encryptedDecimalPrecision: { $numberDecimal: "0.0" } }
159 result: [*doc0]
160 - name: find
161 arguments:
162 filter: { encryptedDecimalPrecision: { $numberDecimal: "1.0" } }
163 result: [*doc1]
164
165 - description: "Find with full range"
166 clientOptions:
167 autoEncryptOpts:
168 kmsProviders:
169 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
170 operations:
171 - name: insertOne
172 arguments: { document: *doc0 }
173 - name: insertOne
174 arguments: { document: *doc1 }
175 - name: find
176 arguments:
177 filter: { encryptedDecimalPrecision: { $gte: {$numberDecimal: "0.0"}, $lte: {$numberDecimal: "200.0"} } }
178 # sort so results from range queries are ordered.
179 sort: { _id: 1 }
180 result: [*doc0, *doc1]
181
182 - description: "Find with $in"
183 clientOptions:
184 autoEncryptOpts:
185 kmsProviders:
186 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
187 operations:
188 - name: insertOne
189 arguments: { document: *doc0 }
190 - name: insertOne
191 arguments: { document: *doc1 }
192 - name: find
193 arguments:
194 filter: { encryptedDecimalPrecision: { $in: [ {$numberDecimal: "0.0"} ] } }
195 result: [*doc0]
196
197 - description: "Insert out of range"
198 clientOptions:
199 autoEncryptOpts:
200 kmsProviders:
201 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
202 operations:
203 - name: insertOne
204 arguments:
205 document: { _id: 0, encryptedDecimalPrecision: { $numberDecimal: "-1" }}
206 result:
207 errorContains: value must be greater than or equal to the minimum value
208
209 - description: "Insert min and max"
210 clientOptions:
211 autoEncryptOpts:
212 kmsProviders:
213 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
214 operations:
215 - name: insertOne
216 arguments:
217 document: *doc0
218 - name: insertOne
219 arguments:
220 document: &doc200 { _id: 200, encryptedDecimalPrecision: { $numberDecimal: "200.0" }}
221 - name: find
222 arguments:
223 filter: {}
224 # sort so results from range queries are ordered.
225 sort: { _id: 1 }
226 result: [*doc0, *doc200]
227
228 - description: "Aggregate with $gte"
229 clientOptions:
230 autoEncryptOpts:
231 kmsProviders:
232 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
233 operations:
234 - name: insertOne
235 arguments: { document: *doc0 }
236 - name: insertOne
237 arguments: { document: *doc1 }
238 - name: aggregate
239 arguments:
240 pipeline:
241 - { $match: { encryptedDecimalPrecision: { $gte: { $numberDecimal: "0.0" } }} }
242 # sort so results from range queries are ordered.
243 - { $sort: { _id: 1 }}
244 result: [*doc0, *doc1]
245
246 - description: "Aggregate with $gt with no results"
247 clientOptions:
248 autoEncryptOpts:
249 kmsProviders:
250 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
251 operations:
252 - name: insertOne
253 arguments: { document: *doc0 }
254 - name: insertOne
255 arguments: { document: *doc1 }
256 - name: aggregate
257 arguments:
258 pipeline:
259 - { $match: { encryptedDecimalPrecision: { $gt: { $numberDecimal: "1.0" } }} }
260 result: []
261
262 - description: "Aggregate with $lt"
263 clientOptions:
264 autoEncryptOpts:
265 kmsProviders:
266 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
267 operations:
268 - name: insertOne
269 arguments: { document: *doc0 }
270 - name: insertOne
271 arguments: { document: *doc1 }
272 - name: aggregate
273 arguments:
274 pipeline:
275 - { $match: { encryptedDecimalPrecision: { $lt: { $numberDecimal: "1.0" } }} }
276 result: [*doc0]
277
278 - description: "Aggregate with $lte"
279 clientOptions:
280 autoEncryptOpts:
281 kmsProviders:
282 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
283 operations:
284 - name: insertOne
285 arguments: { document: *doc0 }
286 - name: insertOne
287 arguments: { document: *doc1 }
288 - name: aggregate
289 arguments:
290 pipeline:
291 - { $match: { encryptedDecimalPrecision: { $lte: { $numberDecimal: "1.0" } }} }
292 # sort so results from range queries are ordered.
293 - { $sort: { _id: 1 }}
294 result: [*doc0, *doc1]
295
296 - description: "Aggregate with $lt below min"
297 clientOptions:
298 autoEncryptOpts:
299 kmsProviders:
300 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
301 operations:
302 - name: insertOne
303 arguments: { document: *doc0 }
304 - name: insertOne
305 arguments: { document: *doc1 }
306 - name: aggregate
307 arguments:
308 pipeline:
309 - { $match: { encryptedDecimalPrecision: { $lt: { $numberDecimal: "0.0" } }} }
310 result:
311 errorContains: must be greater than the range minimum
312
313 - description: "Aggregate with $gt above max"
314 clientOptions:
315 autoEncryptOpts:
316 kmsProviders:
317 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
318 operations:
319 - name: insertOne
320 arguments: { document: *doc0 }
321 - name: insertOne
322 arguments: { document: *doc1 }
323 - name: aggregate
324 arguments:
325 pipeline:
326 - { $match: { encryptedDecimalPrecision: { $gt: { $numberDecimal: "200.0" } }} }
327 result:
328 errorContains: must be less than the range max
329
330 - description: "Aggregate with $gt and $lt"
331 clientOptions:
332 autoEncryptOpts:
333 kmsProviders:
334 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
335 operations:
336 - name: insertOne
337 arguments: { document: *doc0 }
338 - name: insertOne
339 arguments: { document: *doc1 }
340 - name: aggregate
341 arguments:
342 pipeline:
343 - { $match: { encryptedDecimalPrecision: { $gt: { $numberDecimal: "0.0" }, $lt: { $numberDecimal: "2.0"} }} }
344 result: [*doc1]
345
346 - description: "Aggregate with equality"
347 clientOptions:
348 autoEncryptOpts:
349 kmsProviders:
350 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
351 operations:
352 - name: insertOne
353 arguments: { document: *doc0 }
354 - name: insertOne
355 arguments: { document: *doc1 }
356 - name: aggregate
357 arguments:
358 pipeline:
359 - { $match: { encryptedDecimalPrecision: { $numberDecimal: "0.0" } } }
360 result: [*doc0]
361 - name: aggregate
362 arguments:
363 pipeline:
364 - { $match: { encryptedDecimalPrecision: { $numberDecimal: "1.0" } } }
365 result: [*doc1]
366
367 - description: "Aggregate with full range"
368 clientOptions:
369 autoEncryptOpts:
370 kmsProviders:
371 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
372 operations:
373 - name: insertOne
374 arguments: { document: *doc0 }
375 - name: insertOne
376 arguments: { document: *doc1 }
377 - name: aggregate
378 arguments:
379 pipeline:
380 - { $match: { encryptedDecimalPrecision: { $gte: {$numberDecimal: "0.0"}, $lte: {$numberDecimal: "200.0"} } } }
381 # sort so results from range queries are ordered.
382 - { $sort: { _id: 1 }}
383 result: [*doc0, *doc1]
384
385 - description: "Aggregate with $in"
386 clientOptions:
387 autoEncryptOpts:
388 kmsProviders:
389 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
390 operations:
391 - name: insertOne
392 arguments: { document: *doc0 }
393 - name: insertOne
394 arguments: { document: *doc1 }
395 - name: aggregate
396 arguments:
397 pipeline:
398 - { $match: { encryptedDecimalPrecision: { $in: [ {$numberDecimal: "0.0"} ] } } }
399 result: [*doc0]
400
401 - description: "Wrong type: Insert Int"
402 clientOptions:
403 autoEncryptOpts:
404 kmsProviders:
405 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
406 operations:
407 - name: insertOne
408 arguments: { document: { _id: 0, encryptedDecimalPrecision: { $numberInt: "0" }} }
409 result:
410 # Expect an error from mongocryptd.
411 errorContains: "cannot encrypt element"
412
413 - description: "Wrong type: Find Int"
414 clientOptions:
415 autoEncryptOpts:
416 kmsProviders:
417 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
418 operations:
419 - name: find
420 arguments:
421 filter: { encryptedDecimalPrecision: { $gte: { $numberInt: "0" } }}
422 # sort so results from range queries are ordered.
423 sort: { _id: 1 }
424 result:
425 # expect an error from libmongocrypt.
426 errorContains: "field type is not supported"
View as plain text