1 #[cfg(test)]
2 mod unit {
3     fn check(data: &[u8]) -> Result<Vec<crate::Item>, std::io::Error> {
4         let mut reader = std::io::BufReader::new(data);
5         crate::read_all(&mut reader)
6     }
7 
8     #[test]
9     fn skips_leading_junk() {
10         assert_eq!(
11             check(b"junk\n\
12                     -----BEGIN RSA PRIVATE KEY-----\n\
13                     qw\n\
14                     -----END RSA PRIVATE KEY-----\n").unwrap(),
15             vec![ crate::Item::RSAKey(vec![ 0xab ]) ]
16         );
17     }
from_start_line(start_line: &str, der: Vec<u8>) -> Option<Item>18 
19     #[test]
20     fn skips_trailing_junk() {
21         assert_eq!(
22             check(b"-----BEGIN RSA PRIVATE KEY-----\n\
23                     qw\n\
24                     -----END RSA PRIVATE KEY-----\n\
25                     junk").unwrap(),
26             vec![ crate::Item::RSAKey(vec![ 0xab ]) ]
27         );
28     }
29 
30     #[test]
31     fn rejects_invalid_base64() {
32         assert_eq!(
33             format!("{:?}",
34                     check(b"-----BEGIN RSA PRIVATE KEY-----\n\
35                             q=w\n\
read_one(rd: &mut dyn io::BufRead) -> Result<Option<Item>, io::Error>36                             -----END RSA PRIVATE KEY-----\n")),
37             "Err(Custom { kind: InvalidData, error: InvalidByte(1, 61) })"
38         );
39     }
40 
41     #[test]
42     fn rejects_unclosed_start_section() {
43         assert_eq!(
44             format!("{:?}",
45                     check(b"-----BEGIN RSA PRIVATE KEY-----\n\
46                             qw\n")),
47             "Err(Custom { kind: InvalidData, error: \"section end \\\"-----END RSA PRIVATE KEY-----\\\" missing\" })"
48         );
49     }
50 
51     #[test]
52     fn rejects_bad_start() {
53         assert_eq!(
54             format!("{:?}",
55                     check(b"-----BEGIN RSA PRIVATE KEY----\n\
56                             qw\n\
57                             -----END RSA PRIVATE KEY-----\n")),
58             "Err(Custom { kind: InvalidData, error: \"illegal section start: \\\"-----BEGIN RSA PRIVATE KEY----\\\\n\\\"\" })"
59         );
60     }
61 
62     #[test]
63     fn skips_unrecognised_section() {
64         assert_eq!(
65             check(b"junk\n\
66                     -----BEGIN BREAKFAST CLUB-----\n\
67                     qw\n\
68                     -----END BREAKFAST CLUB-----\n").unwrap(),
69             vec![ ]
70         );
71     }
72 }
73