Platform restructured into crates/, added AI service and detector,
migrated control-center-ui to Leptos 0.8
156 lines
4.2 KiB
Rust
156 lines
4.2 KiB
Rust
#![allow(unused_variables, unexpected_cfgs)]
|
|
|
|
use vault_service::rustyvault::RustyVaultClient;
|
|
use vault_service::types::{EncryptionContext, KeySpec};
|
|
|
|
#[test]
|
|
fn test_rustyvault_client_creation() {
|
|
let client = RustyVaultClient::new(
|
|
"http://localhost:8200".to_string(),
|
|
Some("test-token".to_string()),
|
|
"transit".to_string(),
|
|
"test-key".to_string(),
|
|
true,
|
|
);
|
|
|
|
assert!(client.is_ok());
|
|
let _client = client.unwrap();
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustyvault_client_without_token() {
|
|
let client = RustyVaultClient::new(
|
|
"http://localhost:8200".to_string(),
|
|
None,
|
|
"transit".to_string(),
|
|
"test-key".to_string(),
|
|
true,
|
|
);
|
|
|
|
assert!(client.is_ok());
|
|
}
|
|
|
|
#[test]
|
|
fn test_rustyvault_url_normalization() {
|
|
let client = RustyVaultClient::new(
|
|
"http://localhost:8200/".to_string(),
|
|
Some("token".to_string()),
|
|
"transit".to_string(),
|
|
"test-key".to_string(),
|
|
false,
|
|
);
|
|
|
|
assert!(client.is_ok());
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_encryption_context() {
|
|
let mut ctx = EncryptionContext::new();
|
|
ctx.add("environment", "test");
|
|
ctx.add("service", "kms");
|
|
|
|
assert_eq!(ctx.context.len(), 2);
|
|
assert_eq!(ctx.context.get("environment").unwrap(), "test");
|
|
assert_eq!(ctx.context.get("service").unwrap(), "kms");
|
|
}
|
|
|
|
#[test]
|
|
fn test_key_spec_sizes() {
|
|
assert_eq!(KeySpec::Aes128.key_size(), 16);
|
|
assert_eq!(KeySpec::Aes256.key_size(), 32);
|
|
assert_eq!(KeySpec::Rsa2048.key_size(), 256);
|
|
assert_eq!(KeySpec::Rsa4096.key_size(), 512);
|
|
}
|
|
|
|
// Integration tests (require running RustyVault instance)
|
|
#[cfg(feature = "integration_tests")]
|
|
mod integration {
|
|
use super::*;
|
|
|
|
async fn get_test_client() -> RustyVaultClient {
|
|
let server_url = std::env::var("RUSTYVAULT_TEST_URL")
|
|
.unwrap_or_else(|_| "http://localhost:8200".to_string());
|
|
let token = std::env::var("RUSTYVAULT_TEST_TOKEN").ok();
|
|
|
|
RustyVaultClient::new(
|
|
server_url,
|
|
token,
|
|
"transit".to_string(),
|
|
"test-key".to_string(),
|
|
false,
|
|
)
|
|
.expect("Failed to create test client")
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_health_check() {
|
|
let client = get_test_client().await;
|
|
let result = client.health_check().await;
|
|
assert!(result.is_ok());
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_encrypt_decrypt() {
|
|
let client = get_test_client().await;
|
|
let plaintext = b"Hello, RustyVault!";
|
|
let context = EncryptionContext::new();
|
|
|
|
let ciphertext = client
|
|
.encrypt(plaintext, &context)
|
|
.await
|
|
.expect("Encryption failed");
|
|
|
|
assert!(!ciphertext.is_empty());
|
|
assert_ne!(ciphertext, plaintext);
|
|
|
|
let decrypted = client
|
|
.decrypt(&ciphertext, &context)
|
|
.await
|
|
.expect("Decryption failed");
|
|
|
|
assert_eq!(decrypted, plaintext);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_encrypt_decrypt_with_context() {
|
|
let client = get_test_client().await;
|
|
let plaintext = b"Sensitive data";
|
|
let mut context = EncryptionContext::new();
|
|
context.add("environment", "production");
|
|
context.add("service", "api-gateway");
|
|
|
|
let ciphertext = client
|
|
.encrypt(plaintext, &context)
|
|
.await
|
|
.expect("Encryption with context failed");
|
|
|
|
let decrypted = client
|
|
.decrypt(&ciphertext, &context)
|
|
.await
|
|
.expect("Decryption with context failed");
|
|
|
|
assert_eq!(decrypted, plaintext);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_generate_data_key() {
|
|
let client = get_test_client().await;
|
|
|
|
let data_key = client
|
|
.generate_data_key(&KeySpec::Aes256)
|
|
.await
|
|
.expect("Data key generation failed");
|
|
|
|
assert_eq!(data_key.plaintext.len(), 32); // AES-256 = 32 bytes
|
|
assert!(!data_key.ciphertext.is_empty());
|
|
assert_eq!(data_key.key_id, "test-key");
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_version_check() {
|
|
let client = get_test_client().await;
|
|
let version = client.get_version().await;
|
|
assert!(version.is_ok());
|
|
}
|
|
}
|