...
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': 'encryptedDoubleNoPrecision', 'bsonType': 'double', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}}}]}
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, encryptedDoubleNoPrecision: { $numberDouble: "0.0" } }
27 - name: insertOne
28 arguments:
29 document: &doc1 { _id: 1, encryptedDoubleNoPrecision: { $numberDouble: "1.0" } }
30 - name: find
31 arguments:
32 filter: { encryptedDoubleNoPrecision: { $gt: { $numberDouble: "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: { encryptedDoubleNoPrecision: { $gte: { $numberDouble: "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: { encryptedDoubleNoPrecision: { $gt: { $numberDouble: "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: { encryptedDoubleNoPrecision: { $lt: { $numberDouble: "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: { encryptedDoubleNoPrecision: { $lte: { $numberDouble: "1.0" } }}
95 # sort so results from range queries are ordered.
96 sort: { _id: 1 }
97 result: [*doc0, *doc1]
98
99 - description: "Find with $gt and $lt"
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: { encryptedDoubleNoPrecision: { $gt: { $numberDouble: "0.0" }, $lt: { $numberDouble: "2.0"} }}
112 result: [*doc1]
113
114 - description: "Find with equality"
115 clientOptions:
116 autoEncryptOpts:
117 kmsProviders:
118 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
119 operations:
120 - name: insertOne
121 arguments: { document: *doc0 }
122 - name: insertOne
123 arguments: { document: *doc1 }
124 - name: find
125 arguments:
126 filter: { encryptedDoubleNoPrecision: { $numberDouble: "0.0" } }
127 result: [*doc0]
128 - name: find
129 arguments:
130 filter: { encryptedDoubleNoPrecision: { $numberDouble: "1.0" } }
131 result: [*doc1]
132
133 - description: "Find with $in"
134 clientOptions:
135 autoEncryptOpts:
136 kmsProviders:
137 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
138 operations:
139 - name: insertOne
140 arguments: { document: *doc0 }
141 - name: insertOne
142 arguments: { document: *doc1 }
143 - name: find
144 arguments:
145 filter: { encryptedDoubleNoPrecision: { $in: [ {$numberDouble: "0.0"} ] } }
146 result: [*doc0]
147
148 - description: "Aggregate with $gte"
149 clientOptions:
150 autoEncryptOpts:
151 kmsProviders:
152 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
153 operations:
154 - name: insertOne
155 arguments: { document: *doc0 }
156 - name: insertOne
157 arguments: { document: *doc1 }
158 - name: aggregate
159 arguments:
160 pipeline:
161 - { $match: { encryptedDoubleNoPrecision: { $gte: { $numberDouble: "0.0" } }} }
162 # sort so results from range queries are ordered.
163 - { $sort: { _id: 1 }}
164 result: [*doc0, *doc1]
165
166 - description: "Aggregate with $gt with no results"
167 clientOptions:
168 autoEncryptOpts:
169 kmsProviders:
170 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
171 operations:
172 - name: insertOne
173 arguments: { document: *doc0 }
174 - name: insertOne
175 arguments: { document: *doc1 }
176 - name: aggregate
177 arguments:
178 pipeline:
179 - { $match: { encryptedDoubleNoPrecision: { $gt: { $numberDouble: "1.0" } }} }
180 result: []
181
182 - description: "Aggregate with $lt"
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: aggregate
193 arguments:
194 pipeline:
195 - { $match: { encryptedDoubleNoPrecision: { $lt: { $numberDouble: "1.0" } }} }
196 result: [*doc0]
197
198 - description: "Aggregate with $lte"
199 clientOptions:
200 autoEncryptOpts:
201 kmsProviders:
202 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
203 operations:
204 - name: insertOne
205 arguments: { document: *doc0 }
206 - name: insertOne
207 arguments: { document: *doc1 }
208 - name: aggregate
209 arguments:
210 pipeline:
211 - { $match: { encryptedDoubleNoPrecision: { $lte: { $numberDouble: "1.0" } }} }
212 # sort so results from range queries are ordered.
213 - { $sort: { _id: 1 }}
214 result: [*doc0, *doc1]
215
216 - description: "Aggregate with $gt and $lt"
217 clientOptions:
218 autoEncryptOpts:
219 kmsProviders:
220 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
221 operations:
222 - name: insertOne
223 arguments: { document: *doc0 }
224 - name: insertOne
225 arguments: { document: *doc1 }
226 - name: aggregate
227 arguments:
228 pipeline:
229 - { $match: { encryptedDoubleNoPrecision: { $gt: { $numberDouble: "0.0" }, $lt: { $numberDouble: "2.0"} }} }
230 result: [*doc1]
231
232 - description: "Aggregate with equality"
233 clientOptions:
234 autoEncryptOpts:
235 kmsProviders:
236 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
237 operations:
238 - name: insertOne
239 arguments: { document: *doc0 }
240 - name: insertOne
241 arguments: { document: *doc1 }
242 - name: aggregate
243 arguments:
244 pipeline:
245 - { $match: { encryptedDoubleNoPrecision: { $numberDouble: "0.0" } } }
246 result: [*doc0]
247 - name: aggregate
248 arguments:
249 pipeline:
250 - { $match: { encryptedDoubleNoPrecision: { $numberDouble: "1.0" } } }
251 result: [*doc1]
252
253 - description: "Aggregate with $in"
254 clientOptions:
255 autoEncryptOpts:
256 kmsProviders:
257 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
258 operations:
259 - name: insertOne
260 arguments: { document: *doc0 }
261 - name: insertOne
262 arguments: { document: *doc1 }
263 - name: aggregate
264 arguments:
265 pipeline:
266 - { $match: { encryptedDoubleNoPrecision: { $in: [ {$numberDouble: "0.0"} ] } } }
267 result: [*doc0]
268
269 - description: "Wrong type: Insert Int"
270 clientOptions:
271 autoEncryptOpts:
272 kmsProviders:
273 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
274 operations:
275 - name: insertOne
276 arguments: { document: { _id: 0, encryptedDoubleNoPrecision: { $numberInt: "0" }} }
277 result:
278 # Expect an error from mongocryptd.
279 errorContains: "cannot encrypt element"
280
281 - description: "Wrong type: Find Int"
282 clientOptions:
283 autoEncryptOpts:
284 kmsProviders:
285 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
286 operations:
287 - name: find
288 arguments:
289 filter: { encryptedDoubleNoPrecision: { $gte: { $numberInt: "0" } }}
290 # sort so results from range queries are ordered.
291 sort: { _id: 1 }
292 result:
293 # expect an error from libmongocrypt.
294 errorContains: "field type is not supported"
View as plain text