@@ -2020,6 +2020,22 @@ mod tests {
2020
2020
}
2021
2021
}
2022
2022
2023
+ #[ test]
2024
+ fn add_raw_attribute_after_integrity ( ) {
2025
+ let _log = crate :: tests:: test_init_log ( ) ;
2026
+ for algorithm in [ IntegrityAlgorithm :: Sha1 , IntegrityAlgorithm :: Sha256 ] {
2027
+ let credentials = ShortTermCredentials :: new ( "secret" . to_owned ( ) ) . into ( ) ;
2028
+ let mut msg = Message :: builder_request ( BINDING ) ;
2029
+ msg. add_message_integrity ( & credentials, algorithm) . unwrap ( ) ;
2030
+ let software = Software :: new ( "s" ) . unwrap ( ) ;
2031
+ let raw = software. to_raw ( ) ;
2032
+ assert ! ( matches!(
2033
+ msg. add_raw_attribute( raw) ,
2034
+ Err ( StunWriteError :: MessageIntegrityExists )
2035
+ ) ) ;
2036
+ }
2037
+ }
2038
+
2023
2039
#[ test]
2024
2040
fn add_integrity_after_fingerprint ( ) {
2025
2041
let _log = crate :: tests:: test_init_log ( ) ;
@@ -2159,6 +2175,19 @@ mod tests {
2159
2175
) ) ;
2160
2176
}
2161
2177
2178
+ #[ test]
2179
+ fn add_raw_attribute_after_fingerprint ( ) {
2180
+ let _log = crate :: tests:: test_init_log ( ) ;
2181
+ let mut msg = Message :: builder_request ( BINDING ) ;
2182
+ msg. add_fingerprint ( ) . unwrap ( ) ;
2183
+ let software = Software :: new ( "s" ) . unwrap ( ) ;
2184
+ let raw = software. to_raw ( ) ;
2185
+ assert ! ( matches!(
2186
+ msg. add_raw_attribute( raw) ,
2187
+ Err ( StunWriteError :: FingerprintExists )
2188
+ ) ) ;
2189
+ }
2190
+
2162
2191
#[ test]
2163
2192
fn parse_truncated_message_header ( ) {
2164
2193
let _log = crate :: tests:: test_init_log ( ) ;
@@ -2290,6 +2319,17 @@ mod tests {
2290
2319
msg. add_attribute ( & integrity) . unwrap ( ) ;
2291
2320
}
2292
2321
2322
+ #[ test]
2323
+ #[ should_panic( expected = "Use add_message_integrity() instead" ) ]
2324
+ fn builder_add_raw_attribute_integrity_panic ( ) {
2325
+ let _log = crate :: tests:: test_init_log ( ) ;
2326
+ let mut msg = Message :: builder_request ( BINDING ) ;
2327
+ let hmac = [ 2 ; 20 ] ;
2328
+ let integrity = MessageIntegrity :: new ( hmac) ;
2329
+ let raw = integrity. to_raw ( ) ;
2330
+ msg. add_raw_attribute ( raw) . unwrap ( ) ;
2331
+ }
2332
+
2293
2333
#[ test]
2294
2334
#[ should_panic( expected = "Use add_message_integrity() instead" ) ]
2295
2335
fn builder_add_attribute_integrity_sha256_panic ( ) {
@@ -2300,14 +2340,36 @@ mod tests {
2300
2340
msg. add_attribute ( & integrity) . unwrap ( ) ;
2301
2341
}
2302
2342
2343
+ #[ test]
2344
+ #[ should_panic( expected = "Use add_message_integrity() instead" ) ]
2345
+ fn builder_add_raw_attribute_integrity_sha256_panic ( ) {
2346
+ let _log = crate :: tests:: test_init_log ( ) ;
2347
+ let mut msg = Message :: builder_request ( BINDING ) ;
2348
+ let hmac = [ 2 ; 16 ] ;
2349
+ let integrity = MessageIntegritySha256 :: new ( & hmac) . unwrap ( ) ;
2350
+ let raw = integrity. to_raw ( ) ;
2351
+ msg. add_raw_attribute ( raw) . unwrap ( ) ;
2352
+ }
2353
+
2303
2354
#[ test]
2304
2355
#[ should_panic( expected = "Use add_fingerprint() instead" ) ]
2305
2356
fn builder_add_attribute_fingerprint_panic ( ) {
2306
2357
let _log = crate :: tests:: test_init_log ( ) ;
2307
2358
let mut msg = Message :: builder_request ( BINDING ) ;
2308
2359
let fingerprint = [ 2 ; 4 ] ;
2309
- let integrity = Fingerprint :: new ( fingerprint) ;
2310
- msg. add_attribute ( & integrity) . unwrap ( ) ;
2360
+ let fingerprint = Fingerprint :: new ( fingerprint) ;
2361
+ msg. add_attribute ( & fingerprint) . unwrap ( ) ;
2362
+ }
2363
+
2364
+ #[ test]
2365
+ #[ should_panic( expected = "Use add_fingerprint() instead" ) ]
2366
+ fn builder_add_raw_attribute_fingerprint_panic ( ) {
2367
+ let _log = crate :: tests:: test_init_log ( ) ;
2368
+ let mut msg = Message :: builder_request ( BINDING ) ;
2369
+ let fingerprint = [ 2 ; 4 ] ;
2370
+ let fingerprint = Fingerprint :: new ( fingerprint) ;
2371
+ let raw = fingerprint. to_raw ( ) ;
2372
+ msg. add_raw_attribute ( raw) . unwrap ( ) ;
2311
2373
}
2312
2374
2313
2375
#[ test]
0 commit comments