host-utils 1.0.2

library to manage website blocking, unblocking, redirection
Documentation
use std::io::{self, Cursor};

use host_utils::App;

#[test]
fn test_app_insert_valid_host_block_empty_etc_hosts() {
    let mut stdout = io::sink();
    let mut stderr = io::sink();

    let mut app = App::new::<Cursor<Vec<u8>>>("", None, &mut stdout, &mut stderr).unwrap();

    app.add_block(["example.com", "github.com", "12abcxyz.in"].into_iter());

    let mut etc_content = Vec::<u8>::new();
    let mut new_data = Vec::<u8>::new();

    app.save_1(&mut etc_content, &mut new_data).unwrap();

    let etc_want = r#"#host-rs-beg#
0.0.0.0 12abcxyz.in
0.0.0.0 example.com
0.0.0.0 github.com
#host-rs-end#
#r-host-rs-beg#
#r-host-rs-end#
"#;
    assert_eq!(
        unsafe { std::str::from_utf8_unchecked(&etc_content) },
        etc_want
    );

    let new_app = App::new("", Some(Cursor::new(new_data)), &mut stdout, &mut stderr).unwrap();
    let mut etc = Vec::<u8>::new();
    new_app.save_1(&mut etc, &mut io::sink()).unwrap();
    assert_eq!(unsafe { std::str::from_utf8_unchecked(&etc) }, etc_want);
}