From ef5ab4dc7e780065b12b63b91009bbd34a9af586 Mon Sep 17 00:00:00 2001 From: Xynnn007 Date: Thu, 11 May 2023 10:24:07 +0800 Subject: [PATCH] deps/kms: add tests for Sample KMS Also, use rstest dep v0.17.0 for all subcrates under this repo Signed-off-by: Xynnn007 --- Cargo.toml | 1 + coco_keyprovider/Cargo.toml | 2 +- deps/crypto/Cargo.toml | 2 +- deps/kms/Cargo.toml | 1 + deps/kms/src/plugins/sample.rs | 37 ++++++++++++++++++++++++++++++++++ kbc/Cargo.toml | 2 +- 6 files changed, 42 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a8d5a35c..8132c7d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ kbs-types = { git = "https://github.com/mkulke/kbs-types", branch = "mkulke/add- lazy_static = "1.4.0" log = "0.4.14" resource_uri = { path = "deps/resource_uri" } +rstest = "0.17.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" strum = { version = "0.24.0", features = ["derive"] } diff --git a/coco_keyprovider/Cargo.toml b/coco_keyprovider/Cargo.toml index e86111d9..38086b88 100644 --- a/coco_keyprovider/Cargo.toml +++ b/coco_keyprovider/Cargo.toml @@ -30,6 +30,6 @@ shadow-rs = "0.5.25" tonic-build = "0.5" [dev-dependencies] -rstest = "0.17.0" +rstest.workspace = true [features] diff --git a/deps/crypto/Cargo.toml b/deps/crypto/Cargo.toml index da5e1c42..6b8b55bf 100644 --- a/deps/crypto/Cargo.toml +++ b/deps/crypto/Cargo.toml @@ -19,7 +19,7 @@ rand = { version = "0.8.5" } sha2 = { version = "0.10" } [dev-dependencies] -rstest = "0.17.0" +rstest.workspace = true [features] default = ["rust-crypto"] diff --git a/deps/kms/Cargo.toml b/deps/kms/Cargo.toml index ee83e717..a8e3dce3 100644 --- a/deps/kms/Cargo.toml +++ b/deps/kms/Cargo.toml @@ -20,6 +20,7 @@ uuid = { version = "1.3.0", features = ["fast-rng", "v4"], optional = true } zeroize = { version = "1.6.0", optional = true } [dev-dependencies] +rstest.workspace = true tokio = { version = "1.0", features = ["rt", "macros" ] } [features] diff --git a/deps/kms/src/plugins/sample.rs b/deps/kms/src/plugins/sample.rs index 14935381..c823714b 100644 --- a/deps/kms/src/plugins/sample.rs +++ b/deps/kms/src/plugins/sample.rs @@ -109,3 +109,40 @@ impl Default for SampleKms { } } } + +#[cfg(test)] +mod tests { + use rstest::rstest; + + use crate::{plugins::sample::SampleKms, KMS}; + + #[rstest] + #[case(b"this is a test plaintext")] + #[case(b"this is a another test plaintext")] + #[tokio::test] + async fn key_lifetime(#[case] plaintext: &[u8]) { + let mut kms = SampleKms::default(); + let keyid = kms.generate_key().await.expect("generate key"); + let ciphertext = kms.encrypt(plaintext, &keyid).await.expect("encrypt"); + let decrypted = kms.decrypt(&ciphertext, &keyid).await.expect("decrypt"); + assert_eq!(decrypted, plaintext); + } + + #[tokio::test] + async fn encrypt_with_an_non_existent_key() { + let mut kms = SampleKms::default(); + let ciphertext = kms.encrypt(b"a test text", "an-non-existent-key-id").await; + assert!(ciphertext.is_err()) + } + + #[tokio::test] + async fn decrypt_with_an_non_existent_key() { + let mut kms = SampleKms::default(); + let keyid = kms.generate_key().await.expect("generate key"); + let ciphertext = kms.encrypt(b"a test text", &keyid).await.expect("encrypt"); + + // Use a fake key id to decrypt + let decrypted = kms.decrypt(&ciphertext, "an-non-existent-key-id").await; + assert!(decrypted.is_err()) + } +} diff --git a/kbc/Cargo.toml b/kbc/Cargo.toml index 5bc40950..e052eaff 100644 --- a/kbc/Cargo.toml +++ b/kbc/Cargo.toml @@ -28,7 +28,7 @@ zeroize.workspace = true [dev-dependencies] tokio = { version = "1.20.1", features = ["macros", "rt-multi-thread"] } -rstest = "0.16.0" +rstest.workspace = true [build-dependencies] tonic-build = { version = "0.8.0", optional = true }