From 84d1fad2d8dc2de22f58ce7139cc484514441b77 Mon Sep 17 00:00:00 2001 From: Michael-F-Bryan Date: Mon, 26 Jun 2023 16:33:00 +0800 Subject: [PATCH] Added some regression tests to WasmerEnv --- lib/registry/src/wasmer_env.rs | 123 +++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/lib/registry/src/wasmer_env.rs b/lib/registry/src/wasmer_env.rs index 9935f06abaf..b3fcfea2fd9 100644 --- a/lib/registry/src/wasmer_env.rs +++ b/lib/registry/src/wasmer_env.rs @@ -146,3 +146,126 @@ impl From<&str> for Registry { Registry(value.to_string()) } } + +#[cfg(test)] +mod tests { + use tempfile::TempDir; + + use super::*; + + const WASMER_TOML: &str = r#" + telemetry_enabled = false + update_notifications_enabled = false + + [registry] + active_registry = "https://registry.wasmer.io/graphql" + + [[registry.tokens]] + registry = "https://registry.wasmer.wtf/graphql" + token = "dev-token" + + [[registry.tokens]] + registry = "https://registry.wasmer.io/graphql" + token = "prod-token" + "#; + + #[test] + fn load_defaults_from_config() { + let temp = TempDir::new().unwrap(); + std::fs::write(temp.path().join("wasmer.toml"), WASMER_TOML).unwrap(); + + let env = WasmerEnv { + wasmer_dir: temp.path().to_path_buf(), + registry: None, + cache_dir: None, + token: None, + }; + + assert_eq!( + env.registry_endpoint().unwrap().as_str(), + "https://registry.wasmer.io/graphql" + ); + assert_eq!(env.token().unwrap(), "prod-token"); + assert_eq!(env.cache_dir(), temp.path().join("cache")); + } + + #[test] + fn override_token() { + let temp = TempDir::new().unwrap(); + std::fs::write(temp.path().join("wasmer.toml"), WASMER_TOML).unwrap(); + + let env = WasmerEnv { + wasmer_dir: temp.path().to_path_buf(), + registry: None, + cache_dir: None, + token: Some("asdf".to_string()), + }; + + assert_eq!( + env.registry_endpoint().unwrap().as_str(), + "https://registry.wasmer.io/graphql" + ); + assert_eq!(env.token().unwrap(), "asdf"); + assert_eq!(env.cache_dir(), temp.path().join("cache")); + } + + #[test] + fn override_registry() { + let temp = TempDir::new().unwrap(); + std::fs::write(temp.path().join("wasmer.toml"), WASMER_TOML).unwrap(); + let env = WasmerEnv { + wasmer_dir: temp.path().to_path_buf(), + registry: Some(Registry::from("wasmer.wtf")), + cache_dir: None, + token: None, + }; + + assert_eq!( + env.registry_endpoint().unwrap().as_str(), + "https://registry.wasmer.wtf/graphql" + ); + assert_eq!(env.token().unwrap(), "dev-token"); + assert_eq!(env.cache_dir(), temp.path().join("cache")); + } + + #[test] + fn override_registry_and_token() { + let temp = TempDir::new().unwrap(); + std::fs::write(temp.path().join("wasmer.toml"), WASMER_TOML).unwrap(); + + let env = WasmerEnv { + wasmer_dir: temp.path().to_path_buf(), + registry: Some(Registry::from("wasmer.wtf")), + cache_dir: None, + token: Some("asdf".to_string()), + }; + + assert_eq!( + env.registry_endpoint().unwrap().as_str(), + "https://registry.wasmer.wtf/graphql" + ); + assert_eq!(env.token().unwrap(), "asdf"); + assert_eq!(env.cache_dir(), temp.path().join("cache")); + } + + #[test] + fn override_cache_dir() { + let temp = TempDir::new().unwrap(); + std::fs::write(temp.path().join("wasmer.toml"), WASMER_TOML).unwrap(); + let expected_cache_dir = temp.path().join("some-other-cache"); + + let env = WasmerEnv { + wasmer_dir: temp.path().to_path_buf(), + registry: None, + cache_dir: Some(expected_cache_dir.clone()), + token: None, + }; + + assert_eq!( + env.registry_endpoint().unwrap().as_str(), + "https://registry.wasmer.io/graphql" + ); + assert_eq!(env.token().unwrap(), "prod-token"); + assert_eq!(env.cache_dir(), expected_cache_dir); + } +}