1
+ # Requires libmongocrypt 1.8.0.
2
+ runOn :
3
+ - minServerVersion : " 7.0.0"
4
+ # Skip QEv2 (also referred to as FLE2v2) tests on Serverless. Unskip once Serverless enables the QEv2 protocol.
5
+ # FLE 2 Encrypted collections are not supported on standalone.
6
+ topology : [ "replicaset", "sharded", "load-balanced" ]
7
+ database_name : &database_name "default"
8
+ collection_name : &collection_name "default"
9
+ data : []
10
+ encrypted_fields : &encrypted_fields {'fields': [{'keyId': {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'path': 'encryptedIndexed', 'bsonType': 'string', 'queries': {'queryType': 'equality', 'contention': {'$numberLong': '0'}}}, {'keyId': {'$binary': {'base64': 'q83vqxI0mHYSNBI0VniQEg==', 'subType': '04'}}, 'path': 'encryptedUnindexed', 'bsonType': 'string'}]}
11
+ key_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'}} ]
12
+
13
+ tests :
14
+ - description : " BypassQueryAnalysis decrypts"
15
+ clientOptions :
16
+ autoEncryptOpts :
17
+ kmsProviders :
18
+ local : {'key': {'$binary': {'base64': 'Mng0NCt4ZHVUYUJCa1kxNkVyNUR1QURhZ2h2UzR2d2RrZzh0cFBwM3R6NmdWMDFBMUN3YkQ5aXRRMkhGRGdQV09wOGVNYUMxT2k3NjZKelhaQmRCZGJkTXVyZG9uSjFk', 'subType': '00'}}}
19
+ bypassQueryAnalysis : true
20
+ operations :
21
+ - name : insertOne
22
+ arguments :
23
+ document : &doc0_encrypted {
24
+ " _id " : 1,
25
+ " encryptedIndexed " : {
26
+ " $binary " : {
27
+ # Payload has an IndexKey of key1 and UserKey of key1.
28
+ " base64 " : " C18BAAAFZAAgAAAAANnt+eLTkv4GdDPl8IAfJOvTzArOgFJQ2S/DcLza4W0DBXMAIAAAAAD2u+omZme3P2gBPehMQyQHQ153tPN1+z7bksYA9jKTpAVwADAAAAAAUnCOQqIvmR65YKyYnsiVfVrg9hwUVO3RhhKExo3RWOzgaS0QdsBL5xKFS0JhZSoWBXUAEAAAAAQSNFZ4EjSYdhI0EjRWeJASEHQAAgAAAAV2AFAAAAAAEjRWeBI0mHYSNBI0VniQEpQbp/ZJpWBKeDtKLiXb0P2E9wvc0g3f373jnYQYlJquOrlPOoEy3ngsHPJuSUijvWDsrQzqYa349K7G/66qaXEFZQAgAAAAAOuac/eRLYakKX6B0vZ1r3QodOQFfjqJD+xlGiPu4/PsBWwAIAAAAACkm0o9bj6j0HuADKc0svbqO2UHj6GrlNdF6yKNxh63xRJrAAAAAAAAAAAAAA==" ,
29
+ " subType " : " 06"
30
+ }
31
+ }
32
+ }
33
+ - name : find
34
+ arguments :
35
+ filter : { "_id": 1 }
36
+ result : [{"_id": 1, "encryptedIndexed": "123" }]
37
+ expectations :
38
+ - command_started_event :
39
+ command :
40
+ listCollections : 1
41
+ filter :
42
+ name : *collection_name
43
+ command_name : listCollections
44
+ - command_started_event :
45
+ command :
46
+ insert : *collection_name
47
+ documents :
48
+ - *doc0_encrypted
49
+ ordered : true
50
+ encryptionInformation :
51
+ type : 1
52
+ schema :
53
+ " default.default " :
54
+ # libmongocrypt applies escCollection and ecocCollection to outgoing command.
55
+ escCollection : " enxcol_.default.esc"
56
+ ecocCollection : " enxcol_.default.ecoc"
57
+ << : *encrypted_fields
58
+ command_name : insert
59
+ - command_started_event :
60
+ command :
61
+ find : *collection_name
62
+ filter : { "_id": 1 }
63
+ command_name : find
64
+ - command_started_event :
65
+ command :
66
+ find : datakeys
67
+ filter : {
68
+ " $or " : [
69
+ {
70
+ " _id " : {
71
+ " $in " : [
72
+ {'$binary': {'base64': 'EjRWeBI0mHYSNBI0VniQEg==', 'subType': '04'}}
73
+ ]
74
+ }
75
+ },
76
+ {
77
+ " keyAltNames " : {
78
+ " $in " : []
79
+ }
80
+ }
81
+ ]
82
+ }
83
+ $db : keyvault
84
+ readConcern : { level: "majority" }
85
+ command_name : find
86
+ outcome :
87
+ collection :
88
+ data :
89
+ - {"_id": 1, "encryptedIndexed": { "$$type": "binData" }, "__safeContent__": [{ "$binary" : { "base64" : "31eCYlbQoVboc5zwC8IoyJVSkag9PxREka8dkmbXJeY=", "subType" : "00" } }] }
0 commit comments