Private
Public Access
1
0

Compare commits

..

2 Commits

Author SHA1 Message Date
5b5791f52f fix(tests): update test suite for AppConfig::load signature change
All checks were successful
CI/CD Pipeline / Code Format (push) Successful in 5s
CI/CD Pipeline / Clippy Lints (push) Successful in 43s
CI/CD Pipeline / All Unit Tests (push) Successful in 1m11s
CI/CD Pipeline / Security Audit (push) Successful in 5s
CI/CD Pipeline / Enrollment Tests (push) Successful in 1m13s
CI/CD Pipeline / Verify Enrollment CLI Flag (push) Successful in 1m14s
CI/CD Pipeline / Build Debian Package (Ubuntu 22.04) (push) Successful in 2m27s
CI/CD Pipeline / Build Arch Package (push) Successful in 2m55s
CI/CD Pipeline / Build Debian Package (push) Successful in 2m38s
CI/CD Pipeline / Build Alpine Package (push) Successful in 4m11s
CI/CD Pipeline / Build RPM Package (push) Successful in 4m34s
2026-05-17 22:28:17 +00:00
fed5e386ce fix(enroll): skip TLS validation during enrollment bootstrap to allow certificate acquisition
Some checks failed
CI/CD Pipeline / Code Format (push) Successful in 3s
CI/CD Pipeline / Clippy Lints (push) Failing after 43s
CI/CD Pipeline / Enrollment Tests (push) Has been skipped
CI/CD Pipeline / Verify Enrollment CLI Flag (push) Has been skipped
CI/CD Pipeline / All Unit Tests (push) Failing after 56s
CI/CD Pipeline / Build Debian Package (push) Has been skipped
CI/CD Pipeline / Build Debian Package (Ubuntu 22.04) (push) Has been skipped
CI/CD Pipeline / Build RPM Package (push) Has been skipped
CI/CD Pipeline / Build Alpine Package (push) Has been skipped
CI/CD Pipeline / Build Arch Package (push) Has been skipped
CI/CD Pipeline / Security Audit (push) Successful in 4s
2026-05-17 22:20:48 +00:00
2 changed files with 11 additions and 11 deletions

View File

@ -142,16 +142,16 @@ pub struct AppConfig {
impl AppConfig { impl AppConfig {
/// Load configuration from a YAML file /// Load configuration from a YAML file
pub fn load(path: &str) -> Result<Self> { pub fn load(path: &str, skip_tls_validation: bool) -> Result<Self> {
let content = std::fs::read_to_string(path) let content = std::fs::read_to_string(path)
.with_context(|| format!("Failed to read config file: {}", path))?; .with_context(|| format!("Failed to read config file: {}", path))?;
let config: AppConfig = serde_yaml::from_str(&content) let config: AppConfig = serde_yaml::from_str(&content)
.with_context(|| format!("Failed to parse config file: {}", path))?; .with_context(|| format!("Failed to parse config file: {}", path))?;
// Validate TLS configuration if enabled // Validate TLS configuration if enabled (skip during enrollment bootstrap)
if let Some(ref tls) = config.tls { if let Some(ref tls) = config.tls {
if tls.enabled { if tls.enabled && !skip_tls_validation {
if !std::path::Path::new(&tls.ca_cert).exists() { if !std::path::Path::new(&tls.ca_cert).exists() {
anyhow::bail!("TLS CA certificate not found: {}", tls.ca_cert); anyhow::bail!("TLS CA certificate not found: {}", tls.ca_cert);
} }
@ -187,7 +187,7 @@ mod tests {
#[test] #[test]
fn test_config_load_valid_yaml() { fn test_config_load_valid_yaml() {
let result = AppConfig::load("tests/fixtures/valid_config.yaml"); let result = AppConfig::load("tests/fixtures/valid_config.yaml", false);
assert!( assert!(
result.is_ok(), result.is_ok(),
"Failed to load valid config: {:?}", "Failed to load valid config: {:?}",
@ -204,7 +204,7 @@ mod tests {
#[test] #[test]
fn test_config_load_missing_file() { fn test_config_load_missing_file() {
let result = AppConfig::load("/nonexistent/path/config.yaml"); let result = AppConfig::load("/nonexistent/path/config.yaml", false);
assert!(result.is_err(), "Should fail for missing file"); assert!(result.is_err(), "Should fail for missing file");
let err = result.unwrap_err(); let err = result.unwrap_err();
assert!(err.to_string().contains("Failed to read config file")); assert!(err.to_string().contains("Failed to read config file"));
@ -215,7 +215,7 @@ mod tests {
let invalid_path = "/tmp/invalid_config_test.yaml"; let invalid_path = "/tmp/invalid_config_test.yaml";
std::fs::write(invalid_path, "invalid: yaml: content: [").unwrap(); std::fs::write(invalid_path, "invalid: yaml: content: [").unwrap();
let result = AppConfig::load(invalid_path); let result = AppConfig::load(invalid_path, false);
assert!(result.is_err(), "Should fail for invalid yaml"); assert!(result.is_err(), "Should fail for invalid yaml");
std::fs::remove_file(invalid_path).unwrap(); std::fs::remove_file(invalid_path).unwrap();
@ -223,7 +223,7 @@ mod tests {
#[test] #[test]
fn test_config_validation_port_range() { fn test_config_validation_port_range() {
let result = AppConfig::load("tests/fixtures/valid_config.yaml"); let result = AppConfig::load("tests/fixtures/valid_config.yaml", false);
assert!(result.is_ok()); assert!(result.is_ok());
let config = result.unwrap(); let config = result.unwrap();
assert!(config.server.port >= 1); assert!(config.server.port >= 1);
@ -231,7 +231,7 @@ mod tests {
#[test] #[test]
fn test_config_validation_bind_address() { fn test_config_validation_bind_address() {
let result = AppConfig::load("tests/fixtures/valid_config.yaml"); let result = AppConfig::load("tests/fixtures/valid_config.yaml", false);
assert!(result.is_ok()); assert!(result.is_ok());
let config = result.unwrap(); let config = result.unwrap();
assert!(!config.server.bind.is_empty()); assert!(!config.server.bind.is_empty());
@ -239,7 +239,7 @@ mod tests {
#[test] #[test]
fn test_config_validation_max_concurrent() { fn test_config_validation_max_concurrent() {
let result = AppConfig::load("tests/fixtures/valid_config.yaml"); let result = AppConfig::load("tests/fixtures/valid_config.yaml", false);
assert!(result.is_ok()); assert!(result.is_ok());
let config = result.unwrap(); let config = result.unwrap();
assert!(config.jobs.max_concurrent > 0); assert!(config.jobs.max_concurrent > 0);
@ -247,7 +247,7 @@ mod tests {
#[test] #[test]
fn test_config_validation_timeout() { fn test_config_validation_timeout() {
let result = AppConfig::load("tests/fixtures/valid_config.yaml"); let result = AppConfig::load("tests/fixtures/valid_config.yaml", false);
assert!(result.is_ok()); assert!(result.is_ok());
let config = result.unwrap(); let config = result.unwrap();
assert!(config.jobs.timeout_minutes >= 1 && config.jobs.timeout_minutes <= 1440); assert!(config.jobs.timeout_minutes >= 1 && config.jobs.timeout_minutes <= 1440);

View File

@ -64,7 +64,7 @@ async fn main() -> Result<()> {
); );
// Load configuration // Load configuration
let config = match AppConfig::load(&args.config) { let config = match AppConfig::load(&args.config, args.enroll.is_some()) {
Ok(cfg) => { Ok(cfg) => {
info!( info!(
port = cfg.server.port, port = cfg.server.port,