6 changed files with 166 additions and 107 deletions
@ -1,18 +1,152 @@
|
||||
use std::env; |
||||
use std::error::Error; |
||||
use std::str::FromStr; |
||||
use crate::log::expect_or_log; |
||||
use crate::model::error::DeviceError; |
||||
|
||||
pub fn set(key: &str, val: &str) { |
||||
env::set_var(key, val); |
||||
} |
||||
|
||||
pub fn get(key: &str) -> Result<String, Box<dyn Error>> { |
||||
pub fn get(key: &str) -> Result<String, DeviceError> { |
||||
let ret = env::var(key)?; |
||||
Ok(ret) |
||||
} |
||||
|
||||
pub fn get_i64(key: &str) -> Result<i64, Box<dyn Error>> { |
||||
pub fn get_i64(key: &str) -> Result<i64, DeviceError> { |
||||
let str_env = env::var(key)?; |
||||
let ret = i64::from_str(&str_env)?; |
||||
Ok(ret) |
||||
} |
||||
|
||||
pub fn get_prefix() -> String { |
||||
let profile = expect_or_log(env::var("RUST_PROFILE"), "RUST_PROFILE is not set"); |
||||
|
||||
let prefix = match profile.as_str() { |
||||
"dev" => "/dev", |
||||
"local" => "/dev", |
||||
"prod" => "/prod", |
||||
_ => { |
||||
expect_or_log(Err("Unexpected value"), &format!("Unexpected RUST_PROFILE value: {}", profile)) |
||||
} |
||||
}; |
||||
|
||||
prefix.to_string() |
||||
} |
||||
|
||||
#[cfg(test)] |
||||
mod tests { |
||||
use super::*; |
||||
use serial_test::serial; |
||||
|
||||
fn setup() { |
||||
env::remove_var("RUST_PROFILE"); |
||||
} |
||||
|
||||
fn teardown() { |
||||
env::remove_var("RUST_PROFILE"); |
||||
} |
||||
|
||||
#[test] |
||||
#[serial] |
||||
fn test_set_and_get() { |
||||
setup(); |
||||
let key = "TEST_ENV_VAR"; |
||||
let value = "test_value"; |
||||
|
||||
set(key, value); |
||||
|
||||
let result = get(key); |
||||
assert!(result.is_ok()); |
||||
assert_eq!(result.unwrap(), value); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[serial] |
||||
fn test_get_none_exist_ent_var() { |
||||
setup(); |
||||
let key = "NONE_EXIST_ENT_ENV_VAR"; |
||||
|
||||
env::remove_var(key); |
||||
|
||||
let result = get(key); |
||||
assert!(result.is_err()); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[serial] |
||||
fn test_set_and_get_i64() { |
||||
setup(); |
||||
let key = "TEST_ENV_I64"; |
||||
let value = "12345"; |
||||
|
||||
set(key, value); |
||||
|
||||
let result = get_i64(key); |
||||
assert!(result.is_ok()); |
||||
assert_eq!(result.unwrap(), 12345); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[serial] |
||||
fn test_get_i64_invalid_value() { |
||||
setup(); |
||||
let key = "TEST_ENV_I64_INVALID"; |
||||
let value = "invalid_number"; |
||||
|
||||
set(key, value); |
||||
|
||||
let result = get_i64(key); |
||||
assert!(result.is_err()); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[serial] |
||||
fn test_get_prefix_dev() { |
||||
setup(); |
||||
env::set_var("RUST_PROFILE", "dev"); |
||||
assert_eq!(get_prefix(), "/dev"); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[serial] |
||||
fn test_get_prefix_prod() { |
||||
setup(); |
||||
env::set_var("RUST_PROFILE", "prod"); |
||||
assert_eq!(get_prefix(), "/prod"); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[serial] |
||||
fn test_get_prefix_local() { |
||||
setup(); |
||||
env::set_var("RUST_PROFILE", "local"); |
||||
assert_eq!(get_prefix(), "/dev"); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[should_panic(expected = "Unexpected RUST_PROFILE value")] |
||||
#[serial] |
||||
fn test_get_prefix_unexpected_value() { |
||||
setup(); |
||||
let unexpected_profile = "abcdefg53546"; |
||||
env::set_var("RUST_PROFILE", &unexpected_profile); |
||||
get_prefix(); |
||||
teardown(); |
||||
} |
||||
|
||||
#[test] |
||||
#[should_panic(expected = "RUST_PROFILE is not set")] |
||||
#[serial] |
||||
fn test_get_prefix_not_set() { |
||||
setup(); |
||||
get_prefix(); |
||||
teardown(); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue