File: algorithm_name.rs

package info (click to toggle)
rust-ssh-key 0.6.7-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 1,008 kB
  • sloc: makefile: 2
file content (56 lines) | stat: -rw-r--r-- 1,421 bytes parent folder | download
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! Tests for `AlgorithmName` parsing.

#![cfg(feature = "alloc")]

use ssh_key::AlgorithmName;
use std::str::FromStr;

#[test]
fn additional_algorithm_name() {
    const NAME: &str = "name@example.com";
    const CERT_STR: &str = "name-cert-v01@example.com";

    let name = AlgorithmName::from_str(NAME).unwrap();
    assert_eq!(name.as_str(), NAME);
    assert_eq!(name.certificate_type(), CERT_STR);

    let name = AlgorithmName::from_certificate_type(CERT_STR).unwrap();
    assert_eq!(name.as_str(), NAME);
    assert_eq!(name.certificate_type(), CERT_STR);
}

#[test]
fn invalid_algorithm_name() {
    const INVALID_NAMES: &[&str] = &[
        "nameß@example.com",
        "name@example@com",
        "name",
        "@name",
        "name@",
        "",
        "@",
        "a-name-that-is-too-long-but-would-otherwise-be-valid-@example.com",
    ];

    const INVALID_CERT_STRS: &[&str] = &[
        "nameß-cert-v01@example.com",
        "name-cert-v01@example@com",
        "name@example.com",
    ];

    for name in INVALID_NAMES {
        assert!(
            AlgorithmName::from_str(&name).is_err(),
            "{:?} should be an invalid algorithm name",
            name
        );
    }

    for name in INVALID_CERT_STRS {
        assert!(
            AlgorithmName::from_certificate_type(&name).is_err(),
            "{:?} should be an invalid certificate str",
            name
        );
    }
}