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': 'encryptedInt', 'bsonType': 'int', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}, 'min': {'$numberInt': '0'}, 'max': {'$numberInt': '200'}}}]}
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 Int. FindOneAndUpdate."
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, encryptedInt: { $numberInt: "0" } }
25 - name: insertOne
26 arguments:
27 document: &doc1 { _id: 1, encryptedInt: { $numberInt: "1" } }
28 - name: findOneAndUpdate
29 arguments:
30 filter: { encryptedInt: { $gt: {$numberInt: "0"}} }
31 update: { "$set": { "encryptedInt": {$numberInt: "2"}}}
32 returnDocument: Before
33 result: *doc1
34 expectations:
35 - command_started_event:
36 command:
37 listCollections: 1
38 filter:
39 name: *collection_name
40 command_name: listCollections
41 - command_started_event:
42 command:
43 find: datakeys
44 filter: {
45 "$or": [
46 {
47 "_id": {
48 "$in": [
49 {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}
50 ]
51 }
52 },
53 {
54 "keyAltNames": {
55 "$in": []
56 }
57 }
58 ]
59 }
60 $db: keyvault
61 readConcern: { level: "majority" }
62 command_name: find
63 - command_started_event:
64 command:
65 insert: *collection_name
66 documents:
67 - &doc0_encrypted { "_id": 0, "encryptedInt": { $$type: "binData" } }
68 ordered: true
69 encryptionInformation:
70 type: 1
71 schema:
72 default.default:
73 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
74 escCollection: "enxcol_.default.esc"
75 ecocCollection: "enxcol_.default.ecoc"
76 <<: *encrypted_fields
77 command_name: insert
78 - command_started_event:
79 command:
80 insert: *collection_name
81 documents:
82 - &doc1_encrypted { "_id": 1, "encryptedInt": { $$type: "binData" } }
83 ordered: true
84 encryptionInformation:
85 type: 1
86 schema:
87 default.default:
88 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
89 escCollection: "enxcol_.default.esc"
90 ecocCollection: "enxcol_.default.ecoc"
91 <<: *encrypted_fields
92 command_name: insert
93 - command_started_event:
94 command:
95 findAndModify: *collection_name
96 query: {
97 "encryptedInt": {
98 "$gt": {
99 "$binary": {
100 "base64": "DUkFAAADcGF5bG9hZAAZBQAABGcABQUAAAMwAH0AAAAFZAAgAAAAALGGQ/CRD+pGLD53BZzWcCcYbuGLVEyjzXIx7b+ux/q2BXMAIAAAAACOC6mXEZL27P9hethZbtKYsTXKK+FpgQ9Axxmn9N/cCwVsACAAAAAA+MFEd8XfZSpbXKqqPC2L3TEFswkaG5Ff6aSgf8p+XVIAAzEAfQAAAAVkACAAAAAAtL3QIvnZqCF72eS6lKr8ilff7R6kiNklokiTuaU5wNsFcwAgAAAAAEtqr3/X731VB+VrbFcY8ZrJKRo2E0Fd+C8L0EMNcvcCBWwAIAAAAABNPhSriux8W8qbwnhCczE3IzlhNEnGDpUwTFDZSL+eYQADMgB9AAAABWQAIAAAAAB99ZW/7KwXKzl5M3XQsAJ3JbEef90IoxFYBArNiYzlgQVzACAAAAAAYO/qaw0+92HAryxOUG7iK6hnIy3OaUA9jIqtHdvcq8YFbAAgAAAAAHrUYj8A0hVgc6VklpDiljOnykrUSfEsjm56XO/bsfKdAAMzAH0AAAAFZAAgAAAAAOK8brUuc2onBNDRtfYMR736dHj4dQqXod8JG7tAMTsDBXMAIAAAAAAW6SrGAL6Bx0s7ZlsYULFfOAiYIGhEWu6md3r+Rk40awVsACAAAAAAIHYXP8RLcCboUmHN3+OlnEw1DxaLSnbTB9PdF228fFAAAzQAfQAAAAVkACAAAAAAV22FGF7ZDwK/EYiGNMlm/QuT3saQdyJM/Fn+ZyQug1oFcwAgAAAAACo7GwCvbcs5UHQMgds9/1QMklEVdjZigpuOFGrDmmxtBWwAIAAAAADQbYYPxlCMMGe2MulbiurApFLoeJSMvTeDU3pyEA2jNwADNQB9AAAABWQAIAAAAADFspsMG7yHjKppyllon1KqAsTrHaZ6JzNqnSz8o6iTvwVzACAAAAAAeiA5pqVIQQ9s6UY/P8v5Jjkl3I7iFNeLDYehikrINrsFbAAgAAAAAFjBTzTpNxDEkA0vSRj0jCED9KDRlboMVyilKyDz5YR4AAM2AH0AAAAFZAAgAAAAAPcLmtq+V1e+MRlZ7NHq1+mrRVBQje5zj685ZvdsfKvSBXMAIAAAAABdHz/3w2k5km97QN9m7oLFYJaVJneNlMboIlz5yUASQAVsACAAAAAAWbp8JVJnx8fEVAJFa7WMfMa7wXeP5M3C8MX20J/i9n0AAzcAfQAAAAVkACAAAAAAYfLwnoxK6XAGQrJFy8+TIJoq38ldBaO75h4zA4ZX5tQFcwAgAAAAAC2wk8UcJH5X5XGnDBYmel6srpBkzBhHtt3Jw1u5TSJ1BWwAIAAAAAA9/YU9eI3D7QbXKIw/3/gzWJ6MZrCYhG0j1wNKgRQp5wADOAB9AAAABWQAIAAAAADGvyrtKkIcaV17ynZA7b2k5Pz6OhvxdWNkDvDWJIja8wVzACAAAAAAOLypVKNxf/wR1G8OZjUUsTQzDYeNNhhITxGMSp7euS4FbAAgAAAAAA9EsxoV1B2DcQ1NJRwuxXnvVR+vkD0wbbDYEI/zFEnDAAM5AH0AAAAFZAAgAAAAAEocREw1L0g+roFUchJI2Yd0M0ME2bnErNUYnpyJP1SqBXMAIAAAAAAcE2/JK/8MoSeOchIuAkKh1X3ImoA7p8ujAZIfvIDo6QVsACAAAAAA+W0+zgLr85/PD7P9a94wk6MgNgrizx/XU9aCxAkp1IwAABJjbQAAAAAAAAAAAAAQcGF5bG9hZElkAAAAAAAQZmlyc3RPcGVyYXRvcgABAAAAAA==",
101 "subType": "06"
102 }
103 }
104 }
105 }
106 update: { "$set": {"encryptedInt": { $$type: "binData" }} }
107 encryptionInformation:
108 type: 1
109 schema:
110 default.default:
111 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
112 escCollection: "enxcol_.default.esc"
113 ecocCollection: "enxcol_.default.ecoc"
114 <<: *encrypted_fields
115 command_name: findAndModify
116 outcome:
117 collection:
118 # Outcome is checked using a separate MongoClient without auto encryption.
119 data:
120 -
121 {
122 "_id": 0,
123 "encryptedInt": { $$type: "binData" },
124 "__safeContent__": [
125 {
126 "$binary": {
127 "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
128 "subType": "00"
129 }
130 },
131 {
132 "$binary": {
133 "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
134 "subType": "00"
135 }
136 },
137 {
138 "$binary": {
139 "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
140 "subType": "00"
141 }
142 },
143 {
144 "$binary": {
145 "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
146 "subType": "00"
147 }
148 },
149 {
150 "$binary": {
151 "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
152 "subType": "00"
153 }
154 },
155 {
156 "$binary": {
157 "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
158 "subType": "00"
159 }
160 },
161 {
162 "$binary": {
163 "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
164 "subType": "00"
165 }
166 },
167 {
168 "$binary": {
169 "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
170 "subType": "00"
171 }
172 },
173 {
174 "$binary": {
175 "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
176 "subType": "00"
177 }
178 }
179 ]
180 }
181 -
182 {
183 "_id": 1,
184 "encryptedInt": { $$type: "binData" },
185 "__safeContent__": [
186 {
187 "$binary": {
188 "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
189 "subType": "00"
190 }
191 },
192 {
193 "$binary": {
194 "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
195 "subType": "00"
196 }
197 },
198 {
199 "$binary": {
200 "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
201 "subType": "00"
202 }
203 },
204 {
205 "$binary": {
206 "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
207 "subType": "00"
208 }
209 },
210 {
211 "$binary": {
212 "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
213 "subType": "00"
214 }
215 },
216 {
217 "$binary": {
218 "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
219 "subType": "00"
220 }
221 },
222 {
223 "$binary": {
224 "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
225 "subType": "00"
226 }
227 },
228 {
229 "$binary": {
230 "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
231 "subType": "00"
232 }
233 },
234 {
235 "$binary": {
236 "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
237 "subType": "00"
238 }
239 }
240 ]
241 }
View as plain text