1{ 2 "runOn": [ 3 { 4 "minServerVersion": "4.1.10" 5 } 6 ], 7 "database_name": "default", 8 "collection_name": "default", 9 "data": [ 10 { 11 "_id": 1, 12 "encrypted_string": { 13 "$binary": { 14 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 15 "subType": "06" 16 } 17 } 18 } 19 ], 20 "json_schema": { 21 "properties": { 22 "encrypted_w_altname": { 23 "encrypt": { 24 "keyId": "/altname", 25 "bsonType": "string", 26 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random" 27 } 28 }, 29 "encrypted_string": { 30 "encrypt": { 31 "keyId": [ 32 { 33 "$binary": { 34 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 35 "subType": "04" 36 } 37 } 38 ], 39 "bsonType": "string", 40 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" 41 } 42 }, 43 "random": { 44 "encrypt": { 45 "keyId": [ 46 { 47 "$binary": { 48 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 49 "subType": "04" 50 } 51 } 52 ], 53 "bsonType": "string", 54 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random" 55 } 56 }, 57 "encrypted_string_equivalent": { 58 "encrypt": { 59 "keyId": [ 60 { 61 "$binary": { 62 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 63 "subType": "04" 64 } 65 } 66 ], 67 "bsonType": "string", 68 "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" 69 } 70 } 71 }, 72 "bsonType": "object" 73 }, 74 "key_vault_data": [ 75 { 76 "status": 1, 77 "_id": { 78 "$binary": { 79 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 80 "subType": "04" 81 } 82 }, 83 "masterKey": { 84 "provider": "aws", 85 "key": "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0", 86 "region": "us-east-1" 87 }, 88 "updateDate": { 89 "$date": { 90 "$numberLong": "1552949630483" 91 } 92 }, 93 "keyMaterial": { 94 "$binary": { 95 "base64": "AQICAHhQNmWG2CzOm1dq3kWLM+iDUZhEqnhJwH9wZVpuZ94A8gEqnsxXlR51T5EbEVezUqqKAAAAwjCBvwYJKoZIhvcNAQcGoIGxMIGuAgEAMIGoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDHa4jo6yp0Z18KgbUgIBEIB74sKxWtV8/YHje5lv5THTl0HIbhSwM6EqRlmBiFFatmEWaeMk4tO4xBX65eq670I5TWPSLMzpp8ncGHMmvHqRajNBnmFtbYxN3E3/WjxmdbOOe+OXpnGJPcGsftc7cB2shRfA4lICPnE26+oVNXT6p0Lo20nY5XC7jyCO", 96 "subType": "00" 97 } 98 }, 99 "creationDate": { 100 "$date": { 101 "$numberLong": "1552949630483" 102 } 103 }, 104 "keyAltNames": [ 105 "altname", 106 "another_altname" 107 ] 108 } 109 ], 110 "tests": [ 111 { 112 "description": "Aggregate with deterministic encryption", 113 "skipReason": "SERVER-39395", 114 "clientOptions": { 115 "autoEncryptOpts": { 116 "kmsProviders": { 117 "aws": {} 118 } 119 } 120 }, 121 "operations": [ 122 { 123 "name": "aggregate", 124 "arguments": { 125 "pipeline": [ 126 { 127 "$match": { 128 "encrypted_string": "457-55-5642" 129 } 130 } 131 ] 132 }, 133 "result": [ 134 { 135 "_id": 1, 136 "encrypted_string": "string0" 137 } 138 ] 139 } 140 ], 141 "expectations": [ 142 { 143 "command_started_event": { 144 "command": { 145 "listCollections": 1, 146 "filter": { 147 "name": "default" 148 } 149 }, 150 "command_name": "listCollections" 151 } 152 }, 153 { 154 "command_started_event": { 155 "command": { 156 "find": "datakeys", 157 "filter": { 158 "$or": [ 159 { 160 "_id": { 161 "$in": [ 162 { 163 "$binary": { 164 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 165 "subType": "04" 166 } 167 } 168 ] 169 } 170 }, 171 { 172 "keyAltNames": { 173 "$in": [] 174 } 175 } 176 ] 177 }, 178 "$db": "keyvault", 179 "readConcern": { 180 "level": "majority" 181 } 182 }, 183 "command_name": "find" 184 } 185 }, 186 { 187 "command_started_event": { 188 "command": { 189 "aggregate": "default", 190 "pipeline": [ 191 { 192 "$match": { 193 "encrypted_string": "457-55-5642" 194 } 195 } 196 ] 197 }, 198 "command_name": "aggregate" 199 } 200 } 201 ], 202 "outcome": { 203 "collection": { 204 "data": [ 205 { 206 "_id": 1, 207 "encrypted_string": { 208 "$binary": { 209 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 210 "subType": "06" 211 } 212 } 213 } 214 ] 215 } 216 } 217 }, 218 { 219 "description": "Aggregate with empty pipeline", 220 "skipReason": "SERVER-40829 hides agg support behind enableTestCommands flag.", 221 "clientOptions": { 222 "autoEncryptOpts": { 223 "kmsProviders": { 224 "aws": {} 225 } 226 } 227 }, 228 "operations": [ 229 { 230 "name": "aggregate", 231 "arguments": { 232 "pipeline": [] 233 }, 234 "result": [ 235 { 236 "_id": 1, 237 "encrypted_string": "string0" 238 } 239 ] 240 } 241 ], 242 "expectations": [ 243 { 244 "command_started_event": { 245 "command": { 246 "listCollections": 1, 247 "filter": { 248 "name": "default" 249 } 250 }, 251 "command_name": "listCollections" 252 } 253 }, 254 { 255 "command_started_event": { 256 "command": { 257 "aggregate": "default", 258 "pipeline": [], 259 "cursor": {} 260 }, 261 "command_name": "aggregate" 262 } 263 }, 264 { 265 "command_started_event": { 266 "command": { 267 "find": "datakeys", 268 "filter": { 269 "$or": [ 270 { 271 "_id": { 272 "$in": [ 273 { 274 "$binary": { 275 "base64": "AAAAAAAAAAAAAAAAAAAAAA==", 276 "subType": "04" 277 } 278 } 279 ] 280 } 281 }, 282 { 283 "keyAltNames": { 284 "$in": [] 285 } 286 } 287 ] 288 }, 289 "$db": "keyvault", 290 "readConcern": { 291 "level": "majority" 292 } 293 }, 294 "command_name": "find" 295 } 296 } 297 ], 298 "outcome": { 299 "collection": { 300 "data": [ 301 { 302 "_id": 1, 303 "encrypted_string": { 304 "$binary": { 305 "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==", 306 "subType": "06" 307 } 308 } 309 } 310 ] 311 } 312 } 313 }, 314 { 315 "description": "Aggregate should fail with random encryption", 316 "skipReason": "SERVER-39395", 317 "clientOptions": { 318 "autoEncryptOpts": { 319 "kmsProviders": { 320 "aws": {} 321 } 322 } 323 }, 324 "operations": [ 325 { 326 "name": "aggregate", 327 "arguments": { 328 "pipeline": [ 329 { 330 "$match": { 331 "random": "abc" 332 } 333 } 334 ] 335 }, 336 "result": { 337 "errorContains": "Cannot query on fields encrypted with the randomized encryption" 338 } 339 } 340 ] 341 }, 342 { 343 "description": "Database aggregate should fail", 344 "clientOptions": { 345 "autoEncryptOpts": { 346 "kmsProviders": { 347 "aws": {} 348 } 349 } 350 }, 351 "operations": [ 352 { 353 "name": "aggregate", 354 "object": "database", 355 "arguments": { 356 "pipeline": [ 357 { 358 "$currentOp": { 359 "allUsers": false, 360 "idleConnections": false, 361 "localOps": true 362 } 363 }, 364 { 365 "$match": { 366 "command.aggregate": { 367 "$eq": 1 368 } 369 } 370 }, 371 { 372 "$project": { 373 "command": 1 374 } 375 }, 376 { 377 "$project": { 378 "command.lsid": 0 379 } 380 } 381 ] 382 }, 383 "result": { 384 "errorContains": "non-collection command not supported for auto encryption: aggregate" 385 } 386 } 387 ] 388 } 389 ] 390} 391