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      "_id": 2,
21      "encrypted_string": {
22        "$binary": {
23          "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==",
24          "subType": "06"
25        }
26      }
27    },
28    {
29      "_id": 3,
30      "encrypted_string": {
31        "$binary": {
32          "base64": "AQAAAAAAAAAAAAAAAAAAAAACDdw4KFz3ZLquhsbt7RmDjD0N67n0uSXx7IGnQNCLeIKvot6s/ouI21Eo84IOtb6lhwUNPlSEBNY0/hbszWAKJg==",
33          "subType": "06"
34        }
35      }
36    }
37  ],
38  "json_schema": {
39    "properties": {
40      "encrypted_w_altname": {
41        "encrypt": {
42          "keyId": "/altname",
43          "bsonType": "string",
44          "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
45        }
46      },
47      "encrypted_string": {
48        "encrypt": {
49          "keyId": [
50            {
51              "$binary": {
52                "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
53                "subType": "04"
54              }
55            }
56          ],
57          "bsonType": "string",
58          "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
59        }
60      },
61      "random": {
62        "encrypt": {
63          "keyId": [
64            {
65              "$binary": {
66                "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
67                "subType": "04"
68              }
69            }
70          ],
71          "bsonType": "string",
72          "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
73        }
74      },
75      "encrypted_string_equivalent": {
76        "encrypt": {
77          "keyId": [
78            {
79              "$binary": {
80                "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
81                "subType": "04"
82              }
83            }
84          ],
85          "bsonType": "string",
86          "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
87        }
88      }
89    },
90    "bsonType": "object"
91  },
92  "key_vault_data": [
93    {
94      "status": 1,
95      "_id": {
96        "$binary": {
97          "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
98          "subType": "04"
99        }
100      },
101      "masterKey": {
102        "provider": "aws",
103        "key": "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0",
104        "region": "us-east-1"
105      },
106      "updateDate": {
107        "$date": {
108          "$numberLong": "1552949630483"
109        }
110      },
111      "keyMaterial": {
112        "$binary": {
113          "base64": "AQICAHhQNmWG2CzOm1dq3kWLM+iDUZhEqnhJwH9wZVpuZ94A8gEqnsxXlR51T5EbEVezUqqKAAAAwjCBvwYJKoZIhvcNAQcGoIGxMIGuAgEAMIGoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDHa4jo6yp0Z18KgbUgIBEIB74sKxWtV8/YHje5lv5THTl0HIbhSwM6EqRlmBiFFatmEWaeMk4tO4xBX65eq670I5TWPSLMzpp8ncGHMmvHqRajNBnmFtbYxN3E3/WjxmdbOOe+OXpnGJPcGsftc7cB2shRfA4lICPnE26+oVNXT6p0Lo20nY5XC7jyCO",
114          "subType": "00"
115        }
116      },
117      "creationDate": {
118        "$date": {
119          "$numberLong": "1552949630483"
120        }
121      },
122      "keyAltNames": [
123        "altname",
124        "another_altname"
125      ]
126    }
127  ],
128  "tests": [
129    {
130      "description": "distinct with deterministic encryption",
131      "clientOptions": {
132        "autoEncryptOpts": {
133          "kmsProviders": {
134            "aws": {}
135          }
136        }
137      },
138      "operations": [
139        {
140          "name": "distinct",
141          "arguments": {
142            "filter": {
143              "encrypted_string": "string0"
144            },
145            "fieldName": "encrypted_string"
146          },
147          "result": [
148            "string0"
149          ]
150        }
151      ],
152      "expectations": [
153        {
154          "command_started_event": {
155            "command": {
156              "listCollections": 1,
157              "filter": {
158                "name": "default"
159              }
160            },
161            "command_name": "listCollections"
162          }
163        },
164        {
165          "command_started_event": {
166            "command": {
167              "find": "datakeys",
168              "filter": {
169                "$or": [
170                  {
171                    "_id": {
172                      "$in": [
173                        {
174                          "$binary": {
175                            "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
176                            "subType": "04"
177                          }
178                        }
179                      ]
180                    }
181                  },
182                  {
183                    "keyAltNames": {
184                      "$in": []
185                    }
186                  }
187                ]
188              },
189              "$db": "keyvault",
190              "readConcern": {
191                "level": "majority"
192              }
193            },
194            "command_name": "find"
195          }
196        },
197        {
198          "command_started_event": {
199            "command": {
200              "distinct": "default",
201              "key": "encrypted_string",
202              "query": {
203                "encrypted_string": {
204                  "$eq": {
205                    "$binary": {
206                      "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==",
207                      "subType": "06"
208                    }
209                  }
210                }
211              }
212            },
213            "command_name": "distinct"
214          }
215        }
216      ],
217      "outcome": {
218        "collection": {
219          "data": [
220            {
221              "_id": 1,
222              "encrypted_string": {
223                "$binary": {
224                  "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==",
225                  "subType": "06"
226                }
227              }
228            },
229            {
230              "_id": 2,
231              "encrypted_string": {
232                "$binary": {
233                  "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==",
234                  "subType": "06"
235                }
236              }
237            },
238            {
239              "_id": 3,
240              "encrypted_string": {
241                "$binary": {
242                  "base64": "AQAAAAAAAAAAAAAAAAAAAAACDdw4KFz3ZLquhsbt7RmDjD0N67n0uSXx7IGnQNCLeIKvot6s/ouI21Eo84IOtb6lhwUNPlSEBNY0/hbszWAKJg==",
243                  "subType": "06"
244                }
245              }
246            }
247          ]
248        }
249      }
250    },
251    {
252      "description": "Distinct fails when filtering on a random encrypted field",
253      "clientOptions": {
254        "autoEncryptOpts": {
255          "kmsProviders": {
256            "aws": {}
257          }
258        }
259      },
260      "operations": [
261        {
262          "name": "distinct",
263          "arguments": {
264            "filter": {
265              "random": "abc"
266            },
267            "fieldName": "encrypted_string"
268          },
269          "result": {
270            "errorContains": "Cannot query on fields encrypted with the randomized encryption"
271          }
272        }
273      ]
274    }
275  ]
276}
277