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
#[cfg(test)]
mod parse {
use crate::spf::Spf;
#[test]
fn test_a_mechanism() {
let input = "v=spf1 a ~all";
let spf: Spf = input.parse().unwrap();
assert_eq!(spf.is_valid(), true);
assert_eq!(spf.version(), "v=spf1");
assert!(spf.a().is_some());
assert_eq!(spf.a().unwrap()[0].qualifier().is_pass(), true);
assert_eq!(spf.a().unwrap()[0].to_string(), "a");
assert_eq!(spf.all().unwrap().qualifier().is_softfail(), true);
assert_eq!(spf.all().unwrap().to_string(), "~all");
}
#[test]
fn test_a_mechanism_slash() {
let input = "v=spf1 -a/24 ~all";
let spf: Spf = input.parse().unwrap();
assert!(spf.a().is_some());
assert_eq!(spf.a().unwrap()[0].qualifier().is_fail(), true);
assert_eq!(spf.a().unwrap()[0].to_string(), "-a/24");
}
#[test]
fn test_a_mechanism_colon() {
let input = "v=spf1 ?a:example.com ~all";
let spf: Spf = input.parse().unwrap();
assert!(spf.a().is_some());
assert_eq!(spf.a().unwrap()[0].qualifier().is_neutral(), true);
assert_eq!(spf.a().unwrap()[0].to_string(), "?a:example.com");
}
#[test]
fn test_a_mechanism_colon_slash() {
let input = "v=spf1 ~a:example.com/24 ~all";
let spf: Spf = input.parse().unwrap();
assert!(spf.a().is_some());
assert_eq!(spf.a().unwrap()[0].qualifier().is_softfail(), true);
assert_eq!(spf.a().unwrap()[0].to_string(), "~a:example.com/24");
}
}