use std::{collections::HashMap, sync::{Mutex}};
use once_cell::sync::Lazy;
use allowlist_rs::sources::{is_src_valid, SourceAddresses};
static GLOBAL_DATA: Lazy<Mutex<HashMap<String, String>>> = Lazy::new(|| {
let mut m = HashMap::new();
m.insert("local".to_string(), "0.0.0.0".to_string());
m.insert("dev".to_string(), "localhost".to_string());
m.insert("stripe_hook".to_string(), "3.130.192.231".to_string());
m.insert("stripe_global".to_string(), "198.202.176.173".to_string());
Mutex::new(m)
});
#[test]
fn test_lib_webhook_sources() {
let local = GLOBAL_DATA.lock().unwrap().get("local").unwrap().to_string();
let hook = GLOBAL_DATA.lock().unwrap().get("stripe_hook").unwrap().to_string();
let addresses = match SourceAddresses::new("data/stripe_webhook_sources.txt") {
Some(addrs) => addrs,
None => panic!("error loading source addresses from path")
};
let invalid_src = is_src_valid(&addresses, &local);
let valid_src = is_src_valid(&addresses, &hook);
assert_eq!(valid_src, true);
assert_eq!(invalid_src, false);
}
#[test]
fn test_lib_global_sources() {
let local = GLOBAL_DATA.lock().unwrap().get("local").unwrap().to_string();
let global = GLOBAL_DATA.lock().unwrap().get("stripe_global").unwrap().to_string();
let addresses = match SourceAddresses::new("data/stripe_global_sources.txt") {
Some(addrs) => addrs,
None => panic!("error loading source addresses from path")
};
let invalid_src = is_src_valid(&addresses, &local);
let valid_src = is_src_valid(&addresses, &global);
assert_eq!(valid_src, true);
assert_eq!(invalid_src, false);
}
#[test]
fn test_lib_dev_sources() {
let dev = GLOBAL_DATA.lock().unwrap().get("dev").unwrap().to_string();
let global = GLOBAL_DATA.lock().unwrap().get("stripe_global").unwrap().to_string();
let addresses = match SourceAddresses::new("data/dev_sources.txt") {
Some(addrs) => addrs,
None => panic!("error loading source addresses from path")
};
let invalid_src = is_src_valid(&addresses, &global);
let valid_src = is_src_valid(&addresses, &dev);
assert_eq!(valid_src, true);
assert_eq!(invalid_src, false);
}