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': 'encryptedDate', 'bsonType': 'date', 'queries': {'queryType': 'rangePreview', 'contention': {'$numberLong': '0'}, 'sparsity': {'$numberLong': '1'}, 'min': {'$date': {'$numberLong': '0'}}, 'max': {'$date': {'$numberLong': '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 Date. 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, encryptedDate: { $date: { $numberLong: "0" } }}
25 - name: insertOne
26 arguments:
27 document: &doc1 { _id: 1, encryptedDate: { $date: { $numberLong: "1" } }}
28 - name: updateOne
29 arguments:
30 filter: { encryptedDate: { $gt: { $date: { $numberLong: "0" } } }}
31 update: { "$set": { "encryptedDate": { $date: { $numberLong: "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, "encryptedDate": { $$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, "encryptedDate": { $$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 "update": "default"
99 "ordered": true
100 "updates": [
101 {
102 "q": {
103 "encryptedDate": {
104 "$gt": {
105 "$binary": {
106 "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==",
107 "subType": "06"
108 }
109 }
110 }
111 },
112 "u": {
113 "$set": {
114 "encryptedDate": { $$type: "binData" }
115 }
116 }
117 }
118 ]
119 encryptionInformation:
120 type: 1
121 schema:
122 "default.default":
123 # libmongocrypt applies escCollection and ecocCollection to outgoing command.
124 escCollection: "enxcol_.default.esc"
125 ecocCollection: "enxcol_.default.ecoc"
126 <<: *encrypted_fields
127 "$db": "default"
128
129 outcome:
130 collection:
131 # Outcome is checked using a separate MongoClient without auto encryption.
132 data:
133 -
134 {
135 "_id": 0,
136 "encryptedDate": { $$type: "binData" },
137 "__safeContent__": [
138 {
139 "$binary": {
140 "base64": "5nRutVIyq7URVOVtbE4vM01APSIajAVnsShMwjBlzkM=",
141 "subType": "00"
142 }
143 },
144 {
145 "$binary": {
146 "base64": "RjBYT2h3ZAoHxhf8DU6/dFbDkEBZp0IxREcsRTu2MXs=",
147 "subType": "00"
148 }
149 },
150 {
151 "$binary": {
152 "base64": "x7GR49EN0t3WXQDihkrbonK7qNIBYC87tpL/XEUyIYc=",
153 "subType": "00"
154 }
155 },
156 {
157 "$binary": {
158 "base64": "JfYUqWF+OoGjiYkRI4L5iPlF+T1Eleul7Fki22jp4Qc=",
159 "subType": "00"
160 }
161 },
162 {
163 "$binary": {
164 "base64": "q1RyGfIgsaQHoZFRw+DD28V26rN5hweApPLwExncvT8=",
165 "subType": "00"
166 }
167 },
168 {
169 "$binary": {
170 "base64": "L2PFeKGvLS6C+DLudR6fGlBq3ERPvjWvRyNRIA2HVb0=",
171 "subType": "00"
172 }
173 },
174 {
175 "$binary": {
176 "base64": "CWxaNqL3iP1yCixDkcmf9bmW3E5VeN8TJkg1jJe528s=",
177 "subType": "00"
178 }
179 },
180 {
181 "$binary": {
182 "base64": "+vC6araOEo+fpW7PSIP40/EnzBCj1d2N10Jr3rrXJJM=",
183 "subType": "00"
184 }
185 },
186 {
187 "$binary": {
188 "base64": "6SV63Mf51Z6A6p2X3rCnJKCu6ku3Oeb45mBYbz+IoAo=",
189 "subType": "00"
190 }
191 }
192 ]
193 }
194 -
195 {
196 "_id": 1,
197 "encryptedDate": { $$type: "binData" },
198 "__safeContent__": [
199 {
200 "$binary": {
201 "base64": "DLCAJs+W2PL2DV5YChCL6dYrQNr+j4p3L7xhVaub4ic=",
202 "subType": "00"
203 }
204 },
205 {
206 "$binary": {
207 "base64": "hyDcE6QQjPrYJaIS/n7evEZFYcm31Tj89CpEYGF45cI=",
208 "subType": "00"
209 }
210 },
211 {
212 "$binary": {
213 "base64": "F08nMDWDZc+DbWM7XCEJNNCEYyinRmrvGP7EWhmp4is=",
214 "subType": "00"
215 }
216 },
217 {
218 "$binary": {
219 "base64": "cXH4688amcDc8kZOJq4UP8cE3R58Zl7e+Qo/1jyspps=",
220 "subType": "00"
221 }
222 },
223 {
224 "$binary": {
225 "base64": "uURBxvTp3FBCVkd+LPqyuY7d6rMW6SGIJQEPY/wtkZI=",
226 "subType": "00"
227 }
228 },
229 {
230 "$binary": {
231 "base64": "jG3hax1L3RBp9t38vUt53FsBxgr/+Si/vVISpAylYpE=",
232 "subType": "00"
233 }
234 },
235 {
236 "$binary": {
237 "base64": "kwtIW8MhH9Ky5xNjBx8gFA/SHh2YVphie7g5FGBzals=",
238 "subType": "00"
239 }
240 },
241 {
242 "$binary": {
243 "base64": "FHflwFuEMu4xX0ZApHi+pdlBH+oevAtXckCUb5Wv0xU=",
244 "subType": "00"
245 }
246 },
247 {
248 "$binary": {
249 "base64": "ty4cnzJdAlbQKnh7px3GEYjBnvO+jIOaKjoTRDtmh3M=",
250 "subType": "00"
251 }
252 }
253 ]
254 }
View as plain text