...
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 # Tests for Decimal (without precision) must only run against a replica set. Decimal (without precision) queries are expected to take a long time and may exceed the default mongos timeout.
10 topology: [ "replicaset" ]
11 # Skip tests for "rangePreview" algorithm on Server 8.0+. Server 8.0 drops "rangePreview" and adds "range".
12 maxServerVersion: "7.99.99"
13database_name: &database_name "default"
14collection_name: &collection_name "default"
15data: []
16encrypted_fields: &encrypted_fields {'fields': [{'keyId': {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'path': 'encryptedDecimalNoPrecision', 'bsonType': 'decimal', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}}}]}
17key_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'}} ]
18tests:
19 - description: "Find with $gt"
20 clientOptions:
21 autoEncryptOpts:
22 kmsProviders:
23 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
24 operations:
25 - name: insertOne
26 arguments:
27 document: &doc0 { _id: 0, encryptedDecimalNoPrecision: { $numberDecimal: "0.0" } }
28 - name: insertOne
29 arguments:
30 document: &doc1 { _id: 1, encryptedDecimalNoPrecision: { $numberDecimal: "1.0" } }
31 - name: find
32 arguments:
33 filter: { encryptedDecimalNoPrecision: { $gt: { $numberDecimal: "0.0" } }}
34 result: [*doc1]
35
36 - description: "Find with $gte"
37 clientOptions:
38 autoEncryptOpts:
39 kmsProviders:
40 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
41 operations:
42 - name: insertOne
43 arguments: { document: *doc0 }
44 - name: insertOne
45 arguments: { document: *doc1 }
46 - name: find
47 arguments:
48 filter: { encryptedDecimalNoPrecision: { $gte: { $numberDecimal: "0.0" } }}
49 # sort so results from range queries are ordered.
50 sort: { _id: 1 }
51 result: [*doc0, *doc1]
52
53 - description: "Find with $gt with no results"
54 clientOptions:
55 autoEncryptOpts:
56 kmsProviders:
57 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
58 operations:
59 - name: insertOne
60 arguments: { document: *doc0 }
61 - name: insertOne
62 arguments: { document: *doc1 }
63 - name: find
64 arguments:
65 filter: { encryptedDecimalNoPrecision: { $gt: { $numberDecimal: "1.0" } }}
66 result: []
67
68 - description: "Find with $lt"
69 clientOptions:
70 autoEncryptOpts:
71 kmsProviders:
72 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
73 operations:
74 - name: insertOne
75 arguments: { document: *doc0 }
76 - name: insertOne
77 arguments: { document: *doc1 }
78 - name: find
79 arguments:
80 filter: { encryptedDecimalNoPrecision: { $lt: { $numberDecimal: "1.0" } }}
81 result: [*doc0]
82
83 - description: "Find with $lte"
84 clientOptions:
85 autoEncryptOpts:
86 kmsProviders:
87 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
88 operations:
89 - name: insertOne
90 arguments: { document: *doc0 }
91 - name: insertOne
92 arguments: { document: *doc1 }
93 - name: find
94 arguments:
95 filter: { encryptedDecimalNoPrecision: { $lte: { $numberDecimal: "1.0" } }}
96 # sort so results from range queries are ordered.
97 sort: { _id: 1 }
98 result: [*doc0, *doc1]
99
100 - description: "Find with $gt and $lt"
101 clientOptions:
102 autoEncryptOpts:
103 kmsProviders:
104 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
105 operations:
106 - name: insertOne
107 arguments: { document: *doc0 }
108 - name: insertOne
109 arguments: { document: *doc1 }
110 - name: find
111 arguments:
112 filter: { encryptedDecimalNoPrecision: { $gt: { $numberDecimal: "0.0" }, $lt: { $numberDecimal: "2.0"} }}
113 result: [*doc1]
114
115 - description: "Find with equality"
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: { encryptedDecimalNoPrecision: { $numberDecimal: "0.0" } }
128 result: [*doc0]
129 - name: find
130 arguments:
131 filter: { encryptedDecimalNoPrecision: { $numberDecimal: "1.0" } }
132 result: [*doc1]
133
134 - description: "Find with $in"
135 clientOptions:
136 autoEncryptOpts:
137 kmsProviders:
138 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
139 operations:
140 - name: insertOne
141 arguments: { document: *doc0 }
142 - name: insertOne
143 arguments: { document: *doc1 }
144 - name: find
145 arguments:
146 filter: { encryptedDecimalNoPrecision: { $in: [ {$numberDecimal: "0.0"} ] } }
147 result: [*doc0]
148
149 - description: "Aggregate with $gte"
150 clientOptions:
151 autoEncryptOpts:
152 kmsProviders:
153 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
154 operations:
155 - name: insertOne
156 arguments: { document: *doc0 }
157 - name: insertOne
158 arguments: { document: *doc1 }
159 - name: aggregate
160 arguments:
161 pipeline:
162 - { $match: { encryptedDecimalNoPrecision: { $gte: { $numberDecimal: "0.0" } }} }
163 # sort so results from range queries are ordered.
164 - { $sort: { _id: 1 }}
165 result: [*doc0, *doc1]
166
167 - description: "Aggregate with $gt with no results"
168 clientOptions:
169 autoEncryptOpts:
170 kmsProviders:
171 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
172 operations:
173 - name: insertOne
174 arguments: { document: *doc0 }
175 - name: insertOne
176 arguments: { document: *doc1 }
177 - name: aggregate
178 arguments:
179 pipeline:
180 - { $match: { encryptedDecimalNoPrecision: { $gt: { $numberDecimal: "1.0" } }} }
181 result: []
182
183 - description: "Aggregate with $lt"
184 clientOptions:
185 autoEncryptOpts:
186 kmsProviders:
187 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
188 operations:
189 - name: insertOne
190 arguments: { document: *doc0 }
191 - name: insertOne
192 arguments: { document: *doc1 }
193 - name: aggregate
194 arguments:
195 pipeline:
196 - { $match: { encryptedDecimalNoPrecision: { $lt: { $numberDecimal: "1.0" } }} }
197 result: [*doc0]
198
199 - description: "Aggregate with $lte"
200 clientOptions:
201 autoEncryptOpts:
202 kmsProviders:
203 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
204 operations:
205 - name: insertOne
206 arguments: { document: *doc0 }
207 - name: insertOne
208 arguments: { document: *doc1 }
209 - name: aggregate
210 arguments:
211 pipeline:
212 - { $match: { encryptedDecimalNoPrecision: { $lte: { $numberDecimal: "1.0" } }} }
213 # sort so results from range queries are ordered.
214 - { $sort: { _id: 1 }}
215 result: [*doc0, *doc1]
216
217 - description: "Aggregate with $gt and $lt"
218 clientOptions:
219 autoEncryptOpts:
220 kmsProviders:
221 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
222 operations:
223 - name: insertOne
224 arguments: { document: *doc0 }
225 - name: insertOne
226 arguments: { document: *doc1 }
227 - name: aggregate
228 arguments:
229 pipeline:
230 - { $match: { encryptedDecimalNoPrecision: { $gt: { $numberDecimal: "0.0" }, $lt: { $numberDecimal: "2.0"} }} }
231 result: [*doc1]
232
233 - description: "Aggregate with equality"
234 clientOptions:
235 autoEncryptOpts:
236 kmsProviders:
237 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
238 operations:
239 - name: insertOne
240 arguments: { document: *doc0 }
241 - name: insertOne
242 arguments: { document: *doc1 }
243 - name: aggregate
244 arguments:
245 pipeline:
246 - { $match: { encryptedDecimalNoPrecision: { $numberDecimal: "0.0" } } }
247 result: [*doc0]
248 - name: aggregate
249 arguments:
250 pipeline:
251 - { $match: { encryptedDecimalNoPrecision: { $numberDecimal: "1.0" } } }
252 result: [*doc1]
253
254 - description: "Aggregate with $in"
255 clientOptions:
256 autoEncryptOpts:
257 kmsProviders:
258 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
259 operations:
260 - name: insertOne
261 arguments: { document: *doc0 }
262 - name: insertOne
263 arguments: { document: *doc1 }
264 - name: aggregate
265 arguments:
266 pipeline:
267 - { $match: { encryptedDecimalNoPrecision: { $in: [ {$numberDecimal: "0.0"} ] } } }
268 result: [*doc0]
269
270 - description: "Wrong type: Insert Int"
271 clientOptions:
272 autoEncryptOpts:
273 kmsProviders:
274 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
275 operations:
276 - name: insertOne
277 arguments: { document: { _id: 0, encryptedDecimalNoPrecision: { $numberInt: "0" }} }
278 result:
279 # Expect an error from mongocryptd.
280 errorContains: "cannot encrypt element"
281
282 - description: "Wrong type: Find Int"
283 clientOptions:
284 autoEncryptOpts:
285 kmsProviders:
286 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
287 operations:
288 - name: find
289 arguments:
290 filter: { encryptedDecimalNoPrecision: { $gte: { $numberInt: "0" } }}
291 # sort so results from range queries are ordered.
292 sort: { _id: 1 }
293 result:
294 # expect an error from libmongocrypt.
295 errorContains: "field type is not supported"
View as plain text