rhoast_utils 0.1.0

The Rho vision utility library
Documentation
use csv;
use rhoast_utils::eth_address_from_public_key::get_eth_addr_from_public_key;
use rhoast_utils::pub_from_private::{get_pri_key, get_pub_key, get_seckey_from_string};
use rhoast_utils::rev_address_from_public_key::{
    get_new_rev_address, get_rev_addr_from_eth, get_rev_addr_from_private_key,
    rev_address_from_public_key, verify_rev_addr,
};
use serde::Deserialize;

#[derive(Debug, Deserialize)]
struct TestKey {
    pk: String,
    pubk: String,
    eth: String,
    rev: String,
}

fn get_keys() -> Vec<TestKey> {
    let mut returned_vec: Vec<TestKey> = vec![];
    let mut rdr = csv::Reader::from_path("tests/test_keys/testing-keys.csv").unwrap();
    for result in rdr.deserialize() {
        let record: TestKey = result.unwrap();
        returned_vec.push(record);
    }
    returned_vec
}

#[test]
fn test_eth_from_public_key() {
    let keys: Vec<TestKey> = get_keys();
    let eth = get_eth_addr_from_public_key(&keys[0].pubk).unwrap();
    assert_eq!(eth, format!("0x{}", keys[0].eth))
}

#[test]
fn test_get_public_key_from_sec_key() {
    let keys: Vec<TestKey> = get_keys();
    let seckey = get_seckey_from_string(&keys[1].pk).unwrap();
    let pub_key = get_pub_key(&seckey);
    assert_eq!(pub_key, keys[1].pubk);
}

#[test]
fn test_get_private_key() {
    let key = get_pri_key();
    let key_string = &key.display_secret().to_string();
    assert_eq!(64, key_string.len())
}

#[test]
fn test_get_rev_from_eth() {
    let keys: Vec<TestKey> = get_keys();
    let rev_addr = get_rev_addr_from_eth(&keys[2].eth).unwrap();
    assert_eq!(rev_addr, keys[2].rev)
}

#[test]
fn test_get_rev_addr_pub_key() {
    let keys: Vec<TestKey> = get_keys();
    let rev_addr = rev_address_from_public_key(&keys[1].pubk).unwrap();
    assert_eq!(rev_addr, keys[1].rev)
}

#[test]
fn test_get_rev_from_pri_key() {
    let keys: Vec<TestKey> = get_keys();
    let seckey = get_seckey_from_string(&keys[1].pk).unwrap();
    let rev_addr = get_rev_addr_from_private_key(&seckey).unwrap();
    assert_eq!(rev_addr, keys[1].rev)
}

#[test]
fn test_generate_rev_addr() {
    let rev_addr = get_new_rev_address().unwrap();
    assert_eq!(64, rev_addr.pri_key.len());
    assert_eq!(130, rev_addr.pub_key.len());
}

#[test]
fn test_verify_rev_adr() {
    let keys: Vec<TestKey> = get_keys();
    let valid = verify_rev_addr(&keys[2].rev).unwrap();
    assert!(valid)
}