1{
2  "runOn": [
3    {
4      "minServerVersion": "4.1.10"
5    }
6  ],
7  "database_name": "default",
8  "collection_name": "default",
9  "data": [],
10  "json_schema": {},
11  "key_vault_data": [
12    {
13      "status": 1,
14      "_id": {
15        "$binary": {
16          "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
17          "subType": "04"
18        }
19      },
20      "masterKey": {
21        "provider": "aws",
22        "key": "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0",
23        "region": "us-east-1"
24      },
25      "updateDate": {
26        "$date": {
27          "$numberLong": "1552949630483"
28        }
29      },
30      "keyMaterial": {
31        "$binary": {
32          "base64": "AQICAHhQNmWG2CzOm1dq3kWLM+iDUZhEqnhJwH9wZVpuZ94A8gEqnsxXlR51T5EbEVezUqqKAAAAwjCBvwYJKoZIhvcNAQcGoIGxMIGuAgEAMIGoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDHa4jo6yp0Z18KgbUgIBEIB74sKxWtV8/YHje5lv5THTl0HIbhSwM6EqRlmBiFFatmEWaeMk4tO4xBX65eq670I5TWPSLMzpp8ncGHMmvHqRajNBnmFtbYxN3E3/WjxmdbOOe+OXpnGJPcGsftc7cB2shRfA4lICPnE26+oVNXT6p0Lo20nY5XC7jyCO",
33          "subType": "00"
34        }
35      },
36      "creationDate": {
37        "$date": {
38          "$numberLong": "1552949630483"
39        }
40      },
41      "keyAltNames": [
42        "altname",
43        "another_altname"
44      ]
45    }
46  ],
47  "tests": [
48    {
49      "description": "A local schema should override",
50      "clientOptions": {
51        "autoEncryptOpts": {
52          "schemaMap": {
53            "default.default": {
54              "properties": {
55                "encrypted_w_altname": {
56                  "encrypt": {
57                    "keyId": "/altname",
58                    "bsonType": "string",
59                    "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
60                  }
61                },
62                "encrypted_string": {
63                  "encrypt": {
64                    "keyId": [
65                      {
66                        "$binary": {
67                          "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
68                          "subType": "04"
69                        }
70                      }
71                    ],
72                    "bsonType": "string",
73                    "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
74                  }
75                },
76                "random": {
77                  "encrypt": {
78                    "keyId": [
79                      {
80                        "$binary": {
81                          "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
82                          "subType": "04"
83                        }
84                      }
85                    ],
86                    "bsonType": "string",
87                    "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
88                  }
89                },
90                "encrypted_string_equivalent": {
91                  "encrypt": {
92                    "keyId": [
93                      {
94                        "$binary": {
95                          "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
96                          "subType": "04"
97                        }
98                      }
99                    ],
100                    "bsonType": "string",
101                    "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
102                  }
103                }
104              },
105              "bsonType": "object"
106            }
107          },
108          "kmsProviders": {
109            "aws": {}
110          }
111        }
112      },
113      "operations": [
114        {
115          "name": "insertOne",
116          "arguments": {
117            "document": {
118              "_id": 1,
119              "encrypted_string": "string0"
120            }
121          }
122        },
123        {
124          "name": "find",
125          "arguments": {
126            "filter": {
127              "_id": 1
128            }
129          },
130          "result": [
131            {
132              "_id": 1,
133              "encrypted_string": "string0"
134            }
135          ]
136        }
137      ],
138      "expectations": [
139        {
140          "command_started_event": {
141            "command": {
142              "find": "datakeys",
143              "filter": {
144                "$or": [
145                  {
146                    "_id": {
147                      "$in": [
148                        {
149                          "$binary": {
150                            "base64": "AAAAAAAAAAAAAAAAAAAAAA==",
151                            "subType": "04"
152                          }
153                        }
154                      ]
155                    }
156                  },
157                  {
158                    "keyAltNames": {
159                      "$in": []
160                    }
161                  }
162                ]
163              },
164              "$db": "keyvault",
165              "readConcern": {
166                "level": "majority"
167              }
168            },
169            "command_name": "find"
170          }
171        },
172        {
173          "command_started_event": {
174            "command": {
175              "insert": "default",
176              "documents": [
177                {
178                  "_id": 1,
179                  "encrypted_string": {
180                    "$binary": {
181                      "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==",
182                      "subType": "06"
183                    }
184                  }
185                }
186              ],
187              "ordered": true
188            },
189            "command_name": "insert"
190          }
191        },
192        {
193          "command_started_event": {
194            "command": {
195              "find": "default",
196              "filter": {
197                "_id": 1
198              }
199            },
200            "command_name": "find"
201          }
202        }
203      ],
204      "outcome": {
205        "collection": {
206          "data": [
207            {
208              "_id": 1,
209              "encrypted_string": {
210                "$binary": {
211                  "base64": "AQAAAAAAAAAAAAAAAAAAAAACwj+3zkv2VM+aTfk60RqhXq6a/77WlLwu/BxXFkL7EppGsju/m8f0x5kBDD3EZTtGALGXlym5jnpZAoSIkswHoA==",
212                  "subType": "06"
213                }
214              }
215            }
216          ]
217        }
218      }
219    },
220    {
221      "description": "A local schema with no encryption is an error",
222      "clientOptions": {
223        "autoEncryptOpts": {
224          "schemaMap": {
225            "default.default": {
226              "properties": {
227                "test": {
228                  "bsonType": "string"
229                }
230              },
231              "bsonType": "object",
232              "required": [
233                "test"
234              ]
235            }
236          },
237          "kmsProviders": {
238            "aws": {}
239          }
240        }
241      },
242      "operations": [
243        {
244          "name": "insertOne",
245          "arguments": {
246            "document": {
247              "_id": 1,
248              "encrypted_string": "string0"
249            }
250          },
251          "result": {
252            "errorContains": "JSON schema keyword 'required' is only allowed with a remote schema"
253          }
254        }
255      ]
256    }
257  ]
258}
259