Jesús Pérez 09a97ac8f5
chore: update platform submodule to monorepo crates structure
Platform restructured into crates/, added AI service and detector,
       migrated control-center-ui to Leptos 0.8
2026-01-08 21:32:59 +00:00

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());
}
}