use crate::test_utils;
use aws_db_esdk::dynamodb::client as dbesdk_client;
use aws_db_esdk::dynamodb::types::dynamo_db_encryption_config::DynamoDbEncryptionConfig;
use aws_db_esdk::dynamodb::types::GetEncryptedDataKeyDescriptionUnion;
use aws_sdk_dynamodb::types::AttributeValue;
use std::collections::HashMap;
pub async fn get_encrypted_data_key_description() -> Result<(), crate::BoxError> {
let kms_key_id = test_utils::TEST_KMS_KEY_ID;
let ddb_table_name = test_utils::TEST_DDB_TABLE_NAME;
let config = DynamoDbEncryptionConfig::builder().build()?;
let ddb_enc = dbesdk_client::Client::from_conf(config)?;
let key_to_get = HashMap::from([
(
"partition_key".to_string(),
AttributeValue::S("BasicPutGetExample".to_string()),
),
("sort_key".to_string(), AttributeValue::N("0".to_string())),
]);
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
let ddb = aws_sdk_dynamodb::Client::new(&sdk_config);
let get_item_response = ddb
.get_item()
.set_key(Some(key_to_get))
.table_name(ddb_table_name)
.send()
.await?;
let returned_item = get_item_response.item.unwrap();
let input_union = GetEncryptedDataKeyDescriptionUnion::Item(returned_item);
let output = ddb_enc
.get_encrypted_data_key_description()
.input(input_union)
.send()
.await?;
let encrypted_data_key_descriptions = output.encrypted_data_key_description_output.unwrap();
assert_eq!(
encrypted_data_key_descriptions[0].key_provider_id,
Some("aws-kms".to_string())
);
assert_eq!(
encrypted_data_key_descriptions[0].key_provider_info,
Some(kms_key_id.to_string())
);
println!("get_encrypted_data_key_description successful.");
Ok(())
}