1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use rand::distributions::Alphanumeric;
use rand::{thread_rng, Rng};

pub fn generate_bytes(length: usize) -> Vec<u8> {
    let mut dest = Vec::new();
    dest.resize(length, 0);
    thread_rng().fill(dest.as_mut_slice());
    dest
}

pub fn generate_string(length: usize) -> String {
    let mut string = String::new();
    for char in thread_rng().sample_iter(&Alphanumeric).take(length) {
        string.push(char);
    }
    string
}

#[test]
fn random_iv_test() {
    let iv16 = generate_bytes(16);
    let iv32 = generate_bytes(32);

    assert_eq!(iv16.len(), 16);
    assert_eq!(iv32.len(), 32);
}

#[test]
fn random_string_test() {
    let random_string = generate_string(20);
    assert_eq!(random_string.len(), 20);
}