f7a720204a
- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用 - 添加所有子项目的完整源代码 - 保留原始 .git 为 .git.bak 备份
103 lines
3.4 KiB
Rust
103 lines
3.4 KiB
Rust
//! Integration tests for ConnectionTestService.
|
|
//!
|
|
//! Tests validate input checking, service construction, and error paths.
|
|
//! Real AWS calls are tested only with fake credentials to verify
|
|
//! proper error handling (no real accounts needed).
|
|
|
|
use nomifun_api_types::{BedrockAuthMethod, BedrockConfig};
|
|
use nomifun_system::ConnectionTestService;
|
|
|
|
fn make_service() -> ConnectionTestService {
|
|
ConnectionTestService::new(reqwest::Client::new())
|
|
}
|
|
|
|
// ── Bedrock validation ──────────────────────────────────────────────
|
|
|
|
#[tokio::test]
|
|
async fn bedrock_rejects_empty_region() {
|
|
let svc = make_service();
|
|
let config = BedrockConfig {
|
|
auth_method: BedrockAuthMethod::AccessKey,
|
|
region: "".into(),
|
|
access_key_id: Some("AKIA".into()),
|
|
secret_access_key: Some("secret".into()),
|
|
profile: None,
|
|
};
|
|
let err = svc.test_bedrock_connection(config).await.unwrap_err();
|
|
assert!(err.to_string().contains("region"));
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn bedrock_rejects_missing_access_key_id() {
|
|
let svc = make_service();
|
|
let config = BedrockConfig {
|
|
auth_method: BedrockAuthMethod::AccessKey,
|
|
region: "us-east-1".into(),
|
|
access_key_id: None,
|
|
secret_access_key: Some("secret".into()),
|
|
profile: None,
|
|
};
|
|
let err = svc.test_bedrock_connection(config).await.unwrap_err();
|
|
assert!(err.to_string().contains("accessKeyId"));
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn bedrock_rejects_missing_secret_access_key() {
|
|
let svc = make_service();
|
|
let config = BedrockConfig {
|
|
auth_method: BedrockAuthMethod::AccessKey,
|
|
region: "us-east-1".into(),
|
|
access_key_id: Some("AKIA".into()),
|
|
secret_access_key: None,
|
|
profile: None,
|
|
};
|
|
let err = svc.test_bedrock_connection(config).await.unwrap_err();
|
|
assert!(err.to_string().contains("secretAccessKey"));
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn bedrock_rejects_empty_profile() {
|
|
let svc = make_service();
|
|
let config = BedrockConfig {
|
|
auth_method: BedrockAuthMethod::Profile,
|
|
region: "us-east-1".into(),
|
|
access_key_id: None,
|
|
secret_access_key: None,
|
|
profile: Some("".into()),
|
|
};
|
|
let err = svc.test_bedrock_connection(config).await.unwrap_err();
|
|
assert!(err.to_string().contains("profile"));
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn bedrock_rejects_none_profile() {
|
|
let svc = make_service();
|
|
let config = BedrockConfig {
|
|
auth_method: BedrockAuthMethod::Profile,
|
|
region: "us-east-1".into(),
|
|
access_key_id: None,
|
|
secret_access_key: None,
|
|
profile: None,
|
|
};
|
|
let err = svc.test_bedrock_connection(config).await.unwrap_err();
|
|
assert!(err.to_string().contains("profile"));
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn bedrock_fake_credentials_error() {
|
|
let svc = make_service();
|
|
let config = BedrockConfig {
|
|
auth_method: BedrockAuthMethod::AccessKey,
|
|
region: "us-east-1".into(),
|
|
access_key_id: Some("AKIAFAKEKEY1234567890".into()),
|
|
secret_access_key: Some("fakesecretkey1234567890abcdefgh".into()),
|
|
profile: None,
|
|
};
|
|
// Should fail with credential error, not panic
|
|
let err = svc.test_bedrock_connection(config).await.unwrap_err();
|
|
assert!(
|
|
err.to_string().contains("Bedrock credentials invalid"),
|
|
"Expected credential error, got: {err}"
|
|
);
|
|
}
|