1 use super::*; 2 use crate::error::Result; 3 4 #[test] 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] 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] 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