fn test_load()

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);
    }