(self, provider_name)
| 729 | self.vault.drop() |
| 730 | |
| 731 | def run_test(self, provider_name): |
| 732 | # Create data key. |
| 733 | master_key: Any = self.MASTER_KEYS[provider_name] |
| 734 | datakey_id = self.client_encryption.create_data_key( |
| 735 | provider_name, master_key=master_key, key_alt_names=[f"{provider_name}_altname"] |
| 736 | ) |
| 737 | self.assertBinaryUUID(datakey_id) |
| 738 | cmd = self.listener.started_events[-1] |
| 739 | self.assertEqual("insert", cmd.command_name) |
| 740 | self.assertEqual({"w": "majority"}, cmd.command.get("writeConcern")) |
| 741 | docs = self.vault.find({"_id": datakey_id}).to_list() |
| 742 | self.assertEqual(len(docs), 1) |
| 743 | self.assertEqual(docs[0]["masterKey"]["provider"], provider_name) |
| 744 | |
| 745 | # Encrypt by key_id. |
| 746 | encrypted = self.client_encryption.encrypt( |
| 747 | f"hello {provider_name}", |
| 748 | Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic, |
| 749 | key_id=datakey_id, |
| 750 | ) |
| 751 | self.assertEncrypted(encrypted) |
| 752 | self.client_encrypted.db.coll.insert_one({"_id": provider_name, "value": encrypted}) |
| 753 | doc_decrypted = self.client_encrypted.db.coll.find_one({"_id": provider_name}) |
| 754 | self.assertEqual(doc_decrypted["value"], f"hello {provider_name}") # type: ignore |
| 755 | |
| 756 | # Encrypt by key_alt_name. |
| 757 | encrypted_altname = self.client_encryption.encrypt( |
| 758 | f"hello {provider_name}", |
| 759 | Algorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic, |
| 760 | key_alt_name=f"{provider_name}_altname", |
| 761 | ) |
| 762 | self.assertEqual(encrypted_altname, encrypted) |
| 763 | |
| 764 | # Explicitly encrypting an auto encrypted field. |
| 765 | with self.assertRaisesRegex(EncryptionError, r"encrypt element of type"): |
| 766 | self.client_encrypted.db.coll.insert_one({"encrypted_placeholder": encrypted}) |
| 767 | |
| 768 | def test_data_key_local(self): |
| 769 | self.run_test("local") |
no test coverage detected