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