sshcerts 0.14.1

A library for parsing, verifying, and creating SSH Certificates
Documentation
use sshcerts::ssh::AllowedSigners;

#[test]
fn parse_good_allowed_signers() {
    let allowed_signers = AllowedSigners::from_path("tests/allowed_signers/good_allowed_signers");
    assert!(allowed_signers.is_ok());
    let AllowedSigners(allowed_signers) = allowed_signers.unwrap();
    assert_eq!(allowed_signers.len(), 3);

    assert_eq!(
        allowed_signers[0].key.fingerprint().to_string(),
        "SHA256:QAtqtvvCePelMMUNPP7madH2zNa1ATxX1nt9L/0C5+M",
    );
    assert_eq!(
        allowed_signers[0].principals,
        vec!["mitchell@confurious.io".to_string()],
    );
    assert!(!allowed_signers[0].cert_authority);
    assert!(allowed_signers[0].namespaces.is_none());
    assert!(allowed_signers[0].valid_after.is_none());
    assert!(allowed_signers[0].valid_before.is_none());

    assert_eq!(
        allowed_signers[1].principals,
        vec!["mitchell@confurious.io".to_string(), "mitchel2@confurious.io".to_string()],
    );
    assert!(allowed_signers[1].cert_authority);
    assert_eq!(
        allowed_signers[1].namespaces, 
        Some(vec!["thanh".to_string(), "#mitchell".to_string()])
    );
    assert!(allowed_signers[1].valid_after.is_none());
    assert_eq!(
        allowed_signers[1].valid_before,
        Some(1714867200i64),
    );

    assert_eq!(
        allowed_signers[2].namespaces, 
        Some(vec![
            "thanh".to_string(),
            " ".to_string(),
            "mitchell mitchell".to_string(),
            " andrew   andrew".to_string(),
        ]),
    );
    assert!(allowed_signers[2].valid_after.is_none());
    assert_eq!(
        allowed_signers[2].valid_before,
        Some(1714867200i64),
    );
}