xref: /webrtc/ice/src/control/control_test.rs (revision ffe74184)
1 use super::*;
2 use crate::error::Result;
3 
4 #[test]
test_controlled_get_from() -> Result<()>5 fn test_controlled_get_from() -> Result<()> {
6     let mut m = Message::new();
7     let mut c = AttrControlled(4321);
8     let result = c.get_from(&m);
9     if let Err(err) = result {
10         assert_eq!(stun::Error::ErrAttributeNotFound, err, "unexpected error");
11     } else {
12         panic!("expected error, but got ok");
13     }
14 
15     m.build(&[Box::new(BINDING_REQUEST), Box::new(c)])?;
16 
17     let mut m1 = Message::new();
18     m1.write(&m.raw)?;
19 
20     let mut c1 = AttrControlled::default();
21     c1.get_from(&m1)?;
22 
23     assert_eq!(c1, c, "not equal");
24 
25     //"IncorrectSize"
26     {
27         let mut m3 = Message::new();
28         m3.add(ATTR_ICE_CONTROLLED, &[0; 100]);
29         let mut c2 = AttrControlled::default();
30         let result = c2.get_from(&m3);
31         if let Err(err) = result {
32             assert!(is_attr_size_invalid(&err), "should error");
33         } else {
34             panic!("expected error, but got ok");
35         }
36     }
37 
38     Ok(())
39 }
40 
41 #[test]
test_controlling_get_from() -> Result<()>42 fn test_controlling_get_from() -> Result<()> {
43     let mut m = Message::new();
44     let mut c = AttrControlling(4321);
45     let result = c.get_from(&m);
46     if let Err(err) = result {
47         assert_eq!(stun::Error::ErrAttributeNotFound, err, "unexpected error");
48     } else {
49         panic!("expected error, but got ok");
50     }
51 
52     m.build(&[Box::new(BINDING_REQUEST), Box::new(c)])?;
53 
54     let mut m1 = Message::new();
55     m1.write(&m.raw)?;
56 
57     let mut c1 = AttrControlling::default();
58     c1.get_from(&m1)?;
59 
60     assert_eq!(c1, c, "not equal");
61 
62     //"IncorrectSize"
63     {
64         let mut m3 = Message::new();
65         m3.add(ATTR_ICE_CONTROLLING, &[0; 100]);
66         let mut c2 = AttrControlling::default();
67         let result = c2.get_from(&m3);
68         if let Err(err) = result {
69             assert!(is_attr_size_invalid(&err), "should error");
70         } else {
71             panic!("expected error, but got ok");
72         }
73     }
74 
75     Ok(())
76 }
77 
78 #[test]
test_control_get_from() -> Result<()>79 fn test_control_get_from() -> Result<()> {
80     //"Blank"
81     {
82         let m = Message::new();
83         let mut c = AttrControl::default();
84         let result = c.get_from(&m);
85         if let Err(err) = result {
86             assert_eq!(stun::Error::ErrAttributeNotFound, err, "unexpected error");
87         } else {
88             panic!("expected error, but got ok");
89         }
90     }
91     //"Controlling"
92     {
93         let mut m = Message::new();
94         let mut c = AttrControl::default();
95         let result = c.get_from(&m);
96         if let Err(err) = result {
97             assert_eq!(stun::Error::ErrAttributeNotFound, err, "unexpected error");
98         } else {
99             panic!("expected error, but got ok");
100         }
101 
102         c.role = Role::Controlling;
103         c.tie_breaker = TieBreaker(4321);
104 
105         m.build(&[Box::new(BINDING_REQUEST), Box::new(c)])?;
106 
107         let mut m1 = Message::new();
108         m1.write(&m.raw)?;
109 
110         let mut c1 = AttrControl::default();
111         c1.get_from(&m1)?;
112 
113         assert_eq!(c1, c, "not equal");
114 
115         //"IncorrectSize"
116         {
117             let mut m3 = Message::new();
118             m3.add(ATTR_ICE_CONTROLLING, &[0; 100]);
119             let mut c2 = AttrControl::default();
120             let result = c2.get_from(&m3);
121             if let Err(err) = result {
122                 assert!(is_attr_size_invalid(&err), "should error");
123             } else {
124                 panic!("expected error, but got ok");
125             }
126         }
127     }
128 
129     //"Controlled"
130     {
131         let mut m = Message::new();
132         let mut c = AttrControl::default();
133         let result = c.get_from(&m);
134         if let Err(err) = result {
135             assert_eq!(stun::Error::ErrAttributeNotFound, err, "unexpected error");
136         } else {
137             panic!("expected error, but got ok");
138         }
139 
140         c.role = Role::Controlled;
141         c.tie_breaker = TieBreaker(1234);
142 
143         m.build(&[Box::new(BINDING_REQUEST), Box::new(c)])?;
144 
145         let mut m1 = Message::new();
146         m1.write(&m.raw)?;
147 
148         let mut c1 = AttrControl::default();
149         c1.get_from(&m1)?;
150 
151         assert_eq!(c1, c, "not equal");
152 
153         //"IncorrectSize"
154         {
155             let mut m3 = Message::new();
156             m3.add(ATTR_ICE_CONTROLLING, &[0; 100]);
157             let mut c2 = AttrControl::default();
158             let result = c2.get_from(&m3);
159             if let Err(err) = result {
160                 assert!(is_attr_size_invalid(&err), "should error");
161             } else {
162                 panic!("expected error, but got ok");
163             }
164         }
165     }
166 
167     Ok(())
168 }
169