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': 'encryptedDecimalPrecision', 'bsonType': 'decimal', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}, 'min': {'$numberDecimal': '0.0'}, 'max': {'$numberDecimal': '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 DecimalPrecision. Aggregate."
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, encryptedDecimalPrecision: { $numberDecimal: "0" } }
25 - name: insertOne
26 arguments:
27 document: &doc1 { _id: 1, encryptedDecimalPrecision: { $numberDecimal: "1" } }
28 - name: aggregate
29 arguments:
30 pipeline: [{ $match: { "encryptedDecimalPrecision": { $gt: {$numberDecimal: "0" }} } }]
31 result: [*doc1]
32 expectations:
33 - command_started_event:
34 command:
35 listCollections: 1
36 filter:
37 name: *collection_name
38 command_name: listCollections
39 - command_started_event:
40 command:
41 find: datakeys
42 filter: {
43 "$or": [
44 {
45 "_id": {
46 "$in": [
47 {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}
48 ]
49 }
50 },
51 {
52 "keyAltNames": {
53 "$in": []
54 }
55 }
56 ]
57 }
58 $db: keyvault
59 readConcern: { level: "majority" }
60 command_name: find
61 - command_started_event:
62 command:
63 insert: *collection_name
64 documents:
65 - &doc0_encrypted { "_id": 0, "encryptedDecimalPrecision": { $$type: "binData" } }
66 ordered: true
67 encryptionInformation:
68 type: 1
69 schema:
70 default.default:
71 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
72 escCollection: "enxcol_.default.esc"
73 ecocCollection: "enxcol_.default.ecoc"
74 <<: *encrypted_fields
75 command_name: insert
76 - command_started_event:
77 command:
78 insert: *collection_name
79 documents:
80 - &doc1_encrypted { "_id": 1, "encryptedDecimalPrecision": { $$type: "binData" } }
81 ordered: true
82 encryptionInformation:
83 type: 1
84 schema:
85 default.default:
86 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
87 escCollection: "enxcol_.default.esc"
88 ecocCollection: "enxcol_.default.ecoc"
89 <<: *encrypted_fields
90 command_name: insert
91 - command_started_event:
92 command:
93 aggregate: *collection_name
94 pipeline: [
95 {
96 "$match": {
97 "encryptedDecimalPrecision": {
98 "$gt": {
99 "$binary": {
100 "base64": "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",
101 "subType": "06"
102 }
103 }
104 }
105 }
106 }
107 ]
108 cursor: {}
109 encryptionInformation:
110 type: 1
111 schema:
112 default.default:
113 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
114 escCollection: "enxcol_.default.esc"
115 ecocCollection: "enxcol_.default.ecoc"
116 <<: *encrypted_fields
117 command_name: aggregate
118 outcome:
119 collection:
120 # Outcome is checked using a separate MongoClient without auto encryption.
121 data:
122 -
123 {
124 "_id": {
125 "$numberInt": "0"
126 },
127 "encryptedDecimalPrecision": { $$type: "binData" },
128 "__safeContent__": [
129 {
130 "$binary": {
131 "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
132 "subType": "00"
133 }
134 },
135 {
136 "$binary": {
137 "base64": "Dri0CXmL78L2DOgk9w0DwxHOMGMzih7m6l59vgy+WWo=",
138 "subType": "00"
139 }
140 },
141 {
142 "$binary": {
143 "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
144 "subType": "00"
145 }
146 },
147 {
148 "$binary": {
149 "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
150 "subType": "00"
151 }
152 },
153 {
154 "$binary": {
155 "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
156 "subType": "00"
157 }
158 },
159 {
160 "$binary": {
161 "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
162 "subType": "00"
163 }
164 },
165 {
166 "$binary": {
167 "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
168 "subType": "00"
169 }
170 },
171 {
172 "$binary": {
173 "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
174 "subType": "00"
175 }
176 },
177 {
178 "$binary": {
179 "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
180 "subType": "00"
181 }
182 },
183 {
184 "$binary": {
185 "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
186 "subType": "00"
187 }
188 },
189 {
190 "$binary": {
191 "base64": "b7d8mRzD1kI1tdc7uNL+YAUonJ6pODLsRLkArfEKSkM=",
192 "subType": "00"
193 }
194 },
195 {
196 "$binary": {
197 "base64": "Xg8C1/A0KJaXOw4i+26Rv03/CydaaunOzXh0CIT+gn8=",
198 "subType": "00"
199 }
200 },
201 {
202 "$binary": {
203 "base64": "UoKUDw2wJYToUCcFaIs03YQSTksYR0MIOTJllwODqKc=",
204 "subType": "00"
205 }
206 },
207 {
208 "$binary": {
209 "base64": "c/5cwAT0C5jber2xlJnWD3a5tVDy0nRtr5HG02hoFOY=",
210 "subType": "00"
211 }
212 },
213 {
214 "$binary": {
215 "base64": "wSUrRXavAGaajNeqC5mEUH1K67oYl5Wy9RNIzKjwLAM=",
216 "subType": "00"
217 }
218 },
219 {
220 "$binary": {
221 "base64": "6vrp4wWDtHEgHWR99I70WVDzevg1Fk/Pw5U8gUDa0OU=",
222 "subType": "00"
223 }
224 }
225 ]
226 }
227 -
228 {
229 "_id": {
230 "$numberInt": "1"
231 },
232 "encryptedDecimalPrecision": { $$type: "binData" },
233 "__safeContent__": [
234 {
235 "$binary": {
236 "base64": "bE1vqWj3KNyM7cCYUv/cnYm8BPaUL3eMp5syTHq6NF4=",
237 "subType": "00"
238 }
239 },
240 {
241 "$binary": {
242 "base64": "mVZb+Ra0EYjQ4Zrh9X//E2T8MRj7NMqm5GUJXhRrBEI=",
243 "subType": "00"
244 }
245 },
246 {
247 "$binary": {
248 "base64": "FA74j21GUEJb1DJBOpR9nVnjaDZnd8yAQNuaW9Qi26g=",
249 "subType": "00"
250 }
251 },
252 {
253 "$binary": {
254 "base64": "kJv//KVkbrobIBf+QeWC5jxn20mx/P0R1N6aCSMgKM8=",
255 "subType": "00"
256 }
257 },
258 {
259 "$binary": {
260 "base64": "zB+Whi9IUUGxfLEe+lGuIzLX4LFbIhaIAm5lRk65QTc=",
261 "subType": "00"
262 }
263 },
264 {
265 "$binary": {
266 "base64": "ybO1QU3CgvhO8JgRXH+HxKszWcpl5aGDYYVa75fHa1g=",
267 "subType": "00"
268 }
269 },
270 {
271 "$binary": {
272 "base64": "X3Y3eSAbbMg//JgiHHiFpYOpV61t8kkDexI+CQyitH4=",
273 "subType": "00"
274 }
275 },
276 {
277 "$binary": {
278 "base64": "SlNHXyqVFGDPrX/2ppwog6l4pwj3PKda2TkZbqgfSfA=",
279 "subType": "00"
280 }
281 },
282 {
283 "$binary": {
284 "base64": "McjV8xwTF3xI7863DYOBdyvIv6UpzThl6v9vBRk05bI=",
285 "subType": "00"
286 }
287 },
288 {
289 "$binary": {
290 "base64": "MgwakFvPyBlwqFTbhWUF79URJQWFoJTGotlEVSPPUsQ=",
291 "subType": "00"
292 }
293 },
294 {
295 "$binary": {
296 "base64": "DyBERpMSD5lEM5Nhpcn4WGgxgn/mkUVJp+PYSLX5jsE=",
297 "subType": "00"
298 }
299 },
300 {
301 "$binary": {
302 "base64": "I43iazc0xj1WVbYB/V+uTL/tughN1bBlxh1iypBnNsA=",
303 "subType": "00"
304 }
305 },
306 {
307 "$binary": {
308 "base64": "wjOBa/ATMuOywFmuPgC0GF/oeLqu0Z7eK5udzkTPbis=",
309 "subType": "00"
310 }
311 },
312 {
313 "$binary": {
314 "base64": "gRQVwiR+m+0Vg8ZDXqrQQcVnTyobwCXNaA4BCJVXtMc=",
315 "subType": "00"
316 }
317 },
318 {
319 "$binary": {
320 "base64": "WUZ6huwx0ZbLb0R00uiC9FOJzsUocUN8qE5+YRenkvQ=",
321 "subType": "00"
322 }
323 },
324 {
325 "$binary": {
326 "base64": "7s79aKEuPgQcS/YPOOVcYNZvHIo7FFsWtFCrnDKXefA=",
327 "subType": "00"
328 }
329 }
330 ]
331 }
View as plain text