in src/keys.rs [61:101]
fn test_load() {
// setup
let logs = Arc::new(Mutex::new(Vec::new()));
let logger =
slog::Logger::root(slog::Fuse::new(VecDrain { logs: logs.clone() }), slog::o!());
let missing_file: PathBuf = "./missing_file.json".into();
let corrupt_file: PathBuf = "./corrupt_file.json".into();
let good_file: PathBuf = "./good_file.json".into();
let _ = fs::remove_file(missing_file.clone());
let _ = fs::write(corrupt_file.clone(), "[\"foo\"]z");
let _ = fs::write(good_file.clone(), "[\"foo\"]");
// tests
let missing_set = load(missing_file.clone(), logger.clone());
assert!(missing_set.is_empty());
assert!(logs
.lock()
.unwrap()
.pop()
.unwrap()
.starts_with("ERRO / Error reading api keys file"));
let corrupt_set = load(corrupt_file.clone(), logger.clone());
assert!(corrupt_set.is_empty());
assert!(logs
.lock()
.unwrap()
.pop()
.unwrap()
.starts_with("ERRO / Error parsing api keys file"));
let good_set = load(good_file.clone(), logger.clone());
assert!(good_set.len() == 1);
assert!(logs.lock().unwrap().pop().is_none());
// cleanup
let _ = fs::remove_file(corrupt_file);
let _ = fs::remove_file(good_file);
}