1 use super::*;
2 use crate::error::*;
3
4 #[test]
test_mapped_address() -> Result<()>5 fn test_mapped_address() -> Result<()> {
6 let mut m = Message::new();
7 let addr = MappedAddress {
8 ip: "122.12.34.5".parse().unwrap(),
9 port: 5412,
10 };
11 assert_eq!(addr.to_string(), "122.12.34.5:5412", "bad string {addr}");
12
13 //"add_to"
14 {
15 addr.add_to(&mut m)?;
16
17 //"GetFrom"
18 {
19 let mut got = MappedAddress::default();
20 got.get_from(&m)?;
21 assert_eq!(got.ip, addr.ip, "got bad IP: {}", got.ip);
22
23 //"Not found"
24 {
25 let message = Message::new();
26 let result = got.get_from(&message);
27 if let Err(err) = result {
28 assert_eq!(
29 Error::ErrAttributeNotFound,
30 err,
31 "should be not found: {err}"
32 );
33 } else {
34 panic!("expected error, but got ok");
35 }
36 }
37 //"Bad family"
38 {
39 let (mut v, _) = m.attributes.get(ATTR_MAPPED_ADDRESS);
40 v.value[0] = 32;
41 got.get_from(&m)?
42 }
43 //"Bad length"
44 {
45 let mut message = Message::new();
46 message.add(ATTR_MAPPED_ADDRESS, &[1, 2, 3]);
47 let result = got.get_from(&message);
48 if let Err(err) = result {
49 assert_eq!(
50 Error::ErrUnexpectedEof,
51 err,
52 "<{}> should be <{}>",
53 err,
54 Error::ErrUnexpectedEof
55 );
56 } else {
57 panic!("expected error, but got ok");
58 }
59 }
60 }
61 }
62
63 Ok(())
64 }
65
66 #[test]
test_mapped_address_v6() -> Result<()>67 fn test_mapped_address_v6() -> Result<()> {
68 let mut m = Message::new();
69 let addr = MappedAddress {
70 ip: "::".parse().unwrap(),
71 port: 5412,
72 };
73
74 //"add_to"
75 {
76 addr.add_to(&mut m)?;
77
78 //"GetFrom"
79 {
80 let mut got = MappedAddress::default();
81 got.get_from(&m)?;
82 assert_eq!(got.ip, addr.ip, "got bad IP: {}", got.ip);
83
84 //"Not found"
85 {
86 let message = Message::new();
87 let result = got.get_from(&message);
88 if let Err(err) = result {
89 assert_eq!(
90 Error::ErrAttributeNotFound,
91 err,
92 "<{}> should be <{}>",
93 err,
94 Error::ErrAttributeNotFound,
95 );
96 } else {
97 panic!("expected error, but got ok");
98 }
99 }
100 }
101 }
102 Ok(())
103 }
104
105 #[test]
test_alternate_server() -> Result<()>106 fn test_alternate_server() -> Result<()> {
107 let mut m = Message::new();
108 let addr = MappedAddress {
109 ip: "122.12.34.5".parse().unwrap(),
110 port: 5412,
111 };
112
113 //"add_to"
114 {
115 addr.add_to(&mut m)?;
116
117 //"GetFrom"
118 {
119 let mut got = AlternateServer::default();
120 got.get_from(&m)?;
121 assert_eq!(got.ip, addr.ip, "got bad IP: {}", got.ip);
122
123 //"Not found"
124 {
125 let message = Message::new();
126 let result = got.get_from(&message);
127 if let Err(err) = result {
128 assert_eq!(
129 Error::ErrAttributeNotFound,
130 err,
131 "<{}> should be <{}>",
132 err,
133 Error::ErrAttributeNotFound,
134 );
135 } else {
136 panic!("expected error, but got ok");
137 }
138 }
139 }
140 }
141
142 Ok(())
143 }
144
145 #[test]
test_other_address() -> Result<()>146 fn test_other_address() -> Result<()> {
147 let mut m = Message::new();
148 let addr = OtherAddress {
149 ip: "122.12.34.5".parse().unwrap(),
150 port: 5412,
151 };
152
153 //"add_to"
154 {
155 addr.add_to(&mut m)?;
156
157 //"GetFrom"
158 {
159 let mut got = OtherAddress::default();
160 got.get_from(&m)?;
161 assert_eq!(got.ip, addr.ip, "got bad IP: {}", got.ip);
162
163 //"Not found"
164 {
165 let message = Message::new();
166 let result = got.get_from(&message);
167 if let Err(err) = result {
168 assert_eq!(
169 Error::ErrAttributeNotFound,
170 err,
171 "<{}> should be <{}>",
172 err,
173 Error::ErrAttributeNotFound,
174 );
175 } else {
176 panic!("expected error, but got ok");
177 }
178 }
179 }
180 }
181
182 Ok(())
183 }
184