xref: /webrtc/stun/src/addr/addr_test.rs (revision 5d8fe953)
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