Skip to content

Commit cf2ab37

Browse files
committed
message/test: add checks for add_raw_attribute()
Mimicking the add_attribute() tests
1 parent d52dcaa commit cf2ab37

File tree

1 file changed

+64
-2
lines changed

1 file changed

+64
-2
lines changed

stun-types/src/message.rs

+64-2
Original file line numberDiff line numberDiff line change
@@ -2020,6 +2020,22 @@ mod tests {
20202020
}
20212021
}
20222022

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+
20232039
#[test]
20242040
fn add_integrity_after_fingerprint() {
20252041
let _log = crate::tests::test_init_log();
@@ -2159,6 +2175,19 @@ mod tests {
21592175
));
21602176
}
21612177

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+
21622191
#[test]
21632192
fn parse_truncated_message_header() {
21642193
let _log = crate::tests::test_init_log();
@@ -2290,6 +2319,17 @@ mod tests {
22902319
msg.add_attribute(&integrity).unwrap();
22912320
}
22922321

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+
22932333
#[test]
22942334
#[should_panic(expected = "Use add_message_integrity() instead")]
22952335
fn builder_add_attribute_integrity_sha256_panic() {
@@ -2300,14 +2340,36 @@ mod tests {
23002340
msg.add_attribute(&integrity).unwrap();
23012341
}
23022342

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+
23032354
#[test]
23042355
#[should_panic(expected = "Use add_fingerprint() instead")]
23052356
fn builder_add_attribute_fingerprint_panic() {
23062357
let _log = crate::tests::test_init_log();
23072358
let mut msg = Message::builder_request(BINDING);
23082359
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();
23112373
}
23122374

23132375
#[test]

0 commit comments

Comments
 (0)