rooster 2.14.1

A simple password manager
mod helpers;

use crate::helpers::prelude::*;
use std::fs::File;
use std::io::Read;

#[test]
fn test_command_set_scrypt_params() {
    let rooster_file = tempfile();
    assert_eq!(
        0,
        main_with_args(
            &["rooster", "init", "--force-for-tests"],
            &mut CursorInputOutput::new("", "\nxxxx\n"),
            &rooster_file
        )
    );

    let mut rooster_file_contents = Vec::new();
    File::open(rooster_file.as_path())
        .unwrap()
        .read_to_end(&mut rooster_file_contents)
        .unwrap();
    assert_eq!(&rooster_file_contents[4..13], &[12, 0, 0, 0, 8, 0, 0, 0, 1]);

    let mut io = CursorInputOutput::new("", "xxxx\n");
    assert_eq!(
        1,
        main_with_args(
            &["rooster", "set-scrypt-params", "15", "4", "0"],
            &mut io,
            &rooster_file
        )
    );
    let output_as_vecu8 = io.stderr_cursor.into_inner();
    let output_as_string = String::from_utf8_lossy(output_as_vecu8.as_slice());
    assert!(output_as_string.contains("must be > 0"));

    let mut io = CursorInputOutput::new("", "xxxx\n");
    assert_eq!(
        1,
        main_with_args(
            &["rooster", "set-scrypt-params", "21", "4", "1"],
            &mut io,
            &rooster_file
        )
    );
    let output_as_vecu8 = io.stderr_cursor.into_inner();
    let output_as_string = String::from_utf8_lossy(output_as_vecu8.as_slice());
    assert!(output_as_string.contains("Run with --force to force"));

    // This takes a long time to run because parameters are high.
    assert_eq!(
        0,
        main_with_args(
            &["rooster", "set-scrypt-params", "--force", "6", "4", "2"],
            &mut CursorInputOutput::new("", "xxxx\n"),
            &rooster_file
        )
    );
    let mut rooster_file_contents = Vec::new();
    File::open(rooster_file.as_path())
        .unwrap()
        .read_to_end(&mut rooster_file_contents)
        .unwrap();
    assert_eq!(&rooster_file_contents[4..13], &[6, 0, 0, 0, 4, 0, 0, 0, 2]);
}