1
2# Requires libmongocrypt 1.8.0.
3runOn:
4 - minServerVersion: "7.0.0"
5 # Skip QEv2 (also referred to as FLE2v2) tests on Serverless. Unskip once Serverless enables the QEv2 protocol.
6 # FLE 2 Encrypted collections are not supported on standalone.
7 topology: [ "replicaset", "sharded", "load-balanced" ]
8 # Skip tests for "rangePreview" algorithm on Server 8.0+. Server 8.0 drops "rangePreview" and adds "range".
9 maxServerVersion: "7.99.99"
10database_name: &database_name "default"
11collection_name: &collection_name "default"
12data: []
13encrypted_fields: &encrypted_fields {'fields': [{'keyId': {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'path': 'encryptedDoublePrecision', 'bsonType': 'double', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}, 'min': {'$numberDouble': '0.0'}, 'max': {'$numberDouble': '200.0'}, 'precision': {'$numberInt': '2'}}}]}
14key_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'}} ]
15tests:
16 - description: "FLE2 Range DoublePrecision. Update."
17 clientOptions:
18 autoEncryptOpts:
19 kmsProviders:
20 local: {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
21 operations:
22 - name: insertOne
23 arguments:
24 document: &doc0 { _id: 0, encryptedDoublePrecision: { $numberDouble: "0" } }
25 - name: insertOne
26 arguments:
27 document: &doc1 { _id: 1, encryptedDoublePrecision: { $numberDouble: "1" } }
28 - name: updateOne
29 arguments:
30 filter: { encryptedDoublePrecision: { $gt: { $numberDouble: "0" } } }
31 update: { "$set": { "encryptedDoublePrecision": { $numberDouble: "2" } }}
32 result:
33 matchedCount: 1
34 modifiedCount: 1
35 upsertedCount: 0
36 expectations:
37 - command_started_event:
38 command:
39 listCollections: 1
40 filter:
41 name: *collection_name
42 command_name: listCollections
43 - command_started_event:
44 command:
45 find: datakeys
46 filter: {
47 "$or": [
48 {
49 "_id": {
50 "$in": [
51 {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}
52 ]
53 }
54 },
55 {
56 "keyAltNames": {
57 "$in": []
58 }
59 }
60 ]
61 }
62 $db: keyvault
63 readConcern: { level: "majority" }
64 command_name: find
65 - command_started_event:
66 command:
67 insert: *collection_name
68 documents:
69 - &doc0_encrypted { "_id": 0, "encryptedDoublePrecision": { $$type: "binData" } }
70 ordered: true
71 encryptionInformation:
72 type: 1
73 schema:
74 default.default:
75 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
76 escCollection: "enxcol_.default.esc"
77 ecocCollection: "enxcol_.default.ecoc"
78 <<: *encrypted_fields
79 command_name: insert
80 - command_started_event:
81 command:
82 insert: *collection_name
83 documents:
84 - &doc1_encrypted { "_id": 1, "encryptedDoublePrecision": { $$type: "binData" } }
85 ordered: true
86 encryptionInformation:
87 type: 1
88 schema:
89 default.default:
90 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
91 escCollection: "enxcol_.default.esc"
92 ecocCollection: "enxcol_.default.ecoc"
93 <<: *encrypted_fields
94 command_name: insert
95 - command_started_event:
96 command_name: update
97 command:
98
99 "update": "default"
100 "ordered": true
101 "updates": [
102 {
103 "q": {
104 "encryptedDoublePrecision": {
105 "$gt": {
106 "$binary": {
107 "base64": "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",
108 "subType": "06"
109 }
110 }
111 }
112 },
113 "u": {
114 "$set": {
115 "encryptedDoublePrecision": { $$type: "binData" }
116 }
117 }
118 }
119 ]
120 encryptionInformation:
121 type: 1
122 schema:
123 "default.default":
124 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
125 escCollection: "enxcol_.default.esc"
126 ecocCollection: "enxcol_.default.ecoc"
127 <<: *encrypted_fields
128 "$db": "default"
129
130
131 outcome:
132 collection:
133 # Outcome is checked using a separate MongoClient without auto encryption.
134 data:
135 -
136 {
137 "_id": 0,
138 "encryptedDoublePrecision": { $$type: "binData" },
139 "__safeContent__": [
140 {
141 "$binary": {
142 "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
143 "subType": "00"
144 }
145 },
146 {
147 "$binary": {
148 "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
149 "subType": "00"
150 }
151 },
152 {
153 "$binary": {
154 "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
155 "subType": "00"
156 }
157 },
158 {
159 "$binary": {
160 "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
161 "subType": "00"
162 }
163 },
164 {
165 "$binary": {
166 "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
167 "subType": "00"
168 }
169 },
170 {
171 "$binary": {
172 "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
173 "subType": "00"
174 }
175 },
176 {
177 "$binary": {
178 "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
179 "subType": "00"
180 }
181 },
182 {
183 "$binary": {
184 "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
185 "subType": "00"
186 }
187 },
188 {
189 "$binary": {
190 "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
191 "subType": "00"
192 }
193 },
194 {
195 "$binary": {
196 "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
197 "subType": "00"
198 }
199 },
200 {
201 "$binary": {
202 "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
203 "subType": "00"
204 }
205 },
206 {
207 "$binary": {
208 "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
209 "subType": "00"
210 }
211 },
212 {
213 "$binary": {
214 "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
215 "subType": "00"
216 }
217 },
218 {
219 "$binary": {
220 "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
221 "subType": "00"
222 }
223 },
224 {
225 "$binary": {
226 "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
227 "subType": "00"
228 }
229 },
230 {
231 "$binary": {
232 "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
233 "subType": "00"
234 }
235 }
236 ]
237 }
238 -
239 {
240 "_id": 1,
241 "encryptedDoublePrecision": { $$type: "binData" },
242 "__safeContent__": [
243 {
244 "$binary": {
245 "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
246 "subType": "00"
247 }
248 },
249 {
250 "$binary": {
251 "base64": "V6knyt7Zq2CG3++l75UtBx2m32iGAPjHiAe439Bf02w=",
252 "subType": "00"
253 }
254 },
255 {
256 "$binary": {
257 "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
258 "subType": "00"
259 }
260 },
261 {
262 "$binary": {
263 "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
264 "subType": "00"
265 }
266 },
267 {
268 "$binary": {
269 "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
270 "subType": "00"
271 }
272 },
273 {
274 "$binary": {
275 "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
276 "subType": "00"
277 }
278 },
279 {
280 "$binary": {
281 "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
282 "subType": "00"
283 }
284 },
285 {
286 "$binary": {
287 "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
288 "subType": "00"
289 }
290 },
291 {
292 "$binary": {
293 "base64": "0OKSXELxPP85SBVwDGf3LtMEQCJ8TTkFUl/+6jlkdb0=",
294 "subType": "00"
295 }
296 },
297 {
298 "$binary": {
299 "base64": "25j9sQXZCihCmHKvTHgaBsAVZFcGPn7JjHdrCGlwyyw=",
300 "subType": "00"
301 }
302 },
303 {
304 "$binary": {
305 "base64": "uEw0lpQtBppR3vqV9j9+NQRSBF1BzZukb8c9IhyWvxc=",
306 "subType": "00"
307 }
308 },
309 {
310 "$binary": {
311 "base64": "zVhZ7Q59O087ji49oMJvBIgeir2oqvUpnh4p53GcTow=",
312 "subType": "00"
313 }
314 },
315 {
316 "$binary": {
317 "base64": "dowrzKs+qJhRMZyKDbhjXbuX43FbmUKOaw9I8YlOZDw=",
318 "subType": "00"
319 }
320 },
321 {
322 "$binary": {
323 "base64": "ep5B6cska6THLIF7Mn3tn3RvV9EiwLSt0eZM/CLRUDc=",
324 "subType": "00"
325 }
326 },
327 {
328 "$binary": {
329 "base64": "URNp/YmmDh5wIZUfAzzgPyJeMNiVx9PMsz52DZRujGY=",
330 "subType": "00"
331 }
332 },
333 {
334 "$binary": {
335 "base64": "wlM4IAQhhKQEzoVqS8b1Ddd50GB95OFb9LnzOwyjCP4=",
336 "subType": "00"
337 }
338 }
339 ]
340 }
View as plain text