diff --git a/tests/credential_helper_integration_test.rs b/tests/credential_helper_integration_test.rs index a0c7102..8c54e70 100644 --- a/tests/credential_helper_integration_test.rs +++ b/tests/credential_helper_integration_test.rs @@ -15,13 +15,31 @@ fn test_resolve_auth_anonymous() -> Result<()> { // Save current env vars let old_docker_config = env::var("DOCKER_CONFIG").ok(); let old_registry_auth = env::var("REGISTRY_AUTH_FILE").ok(); + let old_xdg_runtime = env::var("XDG_RUNTIME_DIR").ok(); + let old_home = env::var("HOME").ok(); - // Set to empty directory + // Set to empty directory and clear all possible config locations env::set_var("DOCKER_CONFIG", tmp_dir.path()); env::remove_var("REGISTRY_AUTH_FILE"); + env::remove_var("XDG_RUNTIME_DIR"); + // Set HOME to temp dir to avoid ~/.docker/config.json + env::set_var("HOME", tmp_dir.path()); // Should resolve to anonymous let auth = resolve_auth("docker.io/library/alpine")?; + + // Debug output for CI + if !matches!(auth, RegistryAuth::Anonymous) { + eprintln!("Expected Anonymous auth but got: {:?}", auth); + eprintln!("DOCKER_CONFIG: {:?}", env::var("DOCKER_CONFIG")); + eprintln!("REGISTRY_AUTH_FILE: {:?}", env::var("REGISTRY_AUTH_FILE")); + eprintln!("HOME: {:?}", env::var("HOME")); + + // Check if there's a Docker config in the temp dir + let config_path = tmp_dir.path().join("config.json"); + eprintln!("Config exists at {:?}: {}", config_path, config_path.exists()); + } + assert!(matches!(auth, RegistryAuth::Anonymous)); // Restore env vars @@ -35,6 +53,16 @@ fn test_resolve_auth_anonymous() -> Result<()> { } else { env::remove_var("REGISTRY_AUTH_FILE"); } + if let Some(val) = old_xdg_runtime { + env::set_var("XDG_RUNTIME_DIR", val); + } else { + env::remove_var("XDG_RUNTIME_DIR"); + } + if let Some(val) = old_home { + env::set_var("HOME", val); + } else { + env::remove_var("HOME"); + } Ok(()) } @@ -59,10 +87,14 @@ fn test_resolve_auth_from_config() -> Result<()> { // Save current env vars let old_docker_config = env::var("DOCKER_CONFIG").ok(); let old_registry_auth = env::var("REGISTRY_AUTH_FILE").ok(); + let old_xdg_runtime = env::var("XDG_RUNTIME_DIR").ok(); + let old_home = env::var("HOME").ok(); // Set our test config and clear other env vars env::set_var("DOCKER_CONFIG", tmp_dir.path()); env::remove_var("REGISTRY_AUTH_FILE"); + env::remove_var("XDG_RUNTIME_DIR"); + env::set_var("HOME", tmp_dir.path()); // Should resolve to basic auth let auth = resolve_auth("test.registry.io/myimage")?; @@ -80,6 +112,16 @@ fn test_resolve_auth_from_config() -> Result<()> { } else { env::remove_var("REGISTRY_AUTH_FILE"); } + if let Some(val) = old_xdg_runtime { + env::set_var("XDG_RUNTIME_DIR", val); + } else { + env::remove_var("XDG_RUNTIME_DIR"); + } + if let Some(val) = old_home { + env::set_var("HOME", val); + } else { + env::remove_var("HOME"); + } Ok(()) } @@ -103,10 +145,14 @@ fn test_resolve_auth_bearer_token() -> Result<()> { // Save current env vars let old_docker_config = env::var("DOCKER_CONFIG").ok(); let old_registry_auth = env::var("REGISTRY_AUTH_FILE").ok(); + let old_xdg_runtime = env::var("XDG_RUNTIME_DIR").ok(); + let old_home = env::var("HOME").ok(); // Set our test config and clear other env vars env::set_var("DOCKER_CONFIG", tmp_dir.path()); env::remove_var("REGISTRY_AUTH_FILE"); + env::remove_var("XDG_RUNTIME_DIR"); + env::set_var("HOME", tmp_dir.path()); // Should resolve to bearer auth let auth = resolve_auth("ghcr.io/user/image")?; @@ -124,6 +170,16 @@ fn test_resolve_auth_bearer_token() -> Result<()> { } else { env::remove_var("REGISTRY_AUTH_FILE"); } + if let Some(val) = old_xdg_runtime { + env::set_var("XDG_RUNTIME_DIR", val); + } else { + env::remove_var("XDG_RUNTIME_DIR"); + } + if let Some(val) = old_home { + env::set_var("HOME", val); + } else { + env::remove_var("HOME"); + } Ok(()) }