Skip to content

Commit b132e54

Browse files
committed
agent/tests: add checks for when a request should leave the agent
1 parent 0cec7ce commit b132e54

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

stun-proto/src/agent.rs

+18
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ pub(crate) mod tests {
871871
.remote_addr(remote_addr)
872872
.build();
873873
let msg = Message::new_request(BINDING);
874+
let transaction_id = msg.transaction_id();
874875
let transmit = agent.send(msg, remote_addr).unwrap();
875876
let now = Instant::now();
876877
assert_eq!(transmit.transport, TransportType::Udp);
@@ -881,6 +882,8 @@ pub(crate) mod tests {
881882
let resp_data = response.to_bytes();
882883
let ret = agent.handle_incoming_data(&resp_data, remote_addr).unwrap();
883884
assert!(matches!(ret[0], HandleStunReply::StunResponse(_, _)));
885+
assert!(agent.request_transaction(transaction_id).is_none());
886+
assert!(agent.mut_request_transaction(transaction_id).is_none());
884887

885888
let ret = agent.poll(now);
886889
assert!(matches!(ret, StunAgentPollRet::WaitUntil(_)));
@@ -904,6 +907,8 @@ pub(crate) mod tests {
904907
assert_eq!(transmit.from, local_addr);
905908
assert_eq!(transmit.to, remote_addr);
906909
let _indication = Message::from_bytes(&transmit.data).unwrap();
910+
assert!(agent.request_transaction(transaction_id).is_none());
911+
assert!(agent.mut_request_transaction(transaction_id).is_none());
907912
// you should definitely never do this ;). Indications should never get replies.
908913
let response = Message::new(
909914
MessageType::from_class_method(MessageClass::Error, BINDING),
@@ -960,6 +965,8 @@ pub(crate) mod tests {
960965

961966
assert_eq!(request.transaction_id(), transaction_id);
962967
assert_eq!(response.transaction_id(), transaction_id);
968+
assert!(agent.request_transaction(transaction_id).is_none());
969+
assert!(agent.mut_request_transaction(transaction_id).is_none());
963970

964971
let data = vec![20; 4];
965972
let mut replies = agent.handle_incoming_data(&data, remote_addr).unwrap();
@@ -978,6 +985,7 @@ pub(crate) mod tests {
978985
.remote_addr(remote_addr)
979986
.build();
980987
let msg = Message::new_request(BINDING);
988+
let transaction_id = msg.transaction_id();
981989
agent.send(msg, remote_addr).unwrap();
982990
let mut now = Instant::now();
983991
loop {
@@ -990,6 +998,8 @@ pub(crate) mod tests {
990998
_ => unreachable!(),
991999
}
9921000
}
1001+
assert!(agent.request_transaction(transaction_id).is_none());
1002+
assert!(agent.mut_request_transaction(transaction_id).is_none());
9931003

9941004
// unvalidated peer data should be dropped
9951005
let data = vec![20; 4];
@@ -1011,6 +1021,7 @@ pub(crate) mod tests {
10111021
assert!(replies.is_empty());
10121022

10131023
let msg = Message::new_request(BINDING);
1024+
let transaction_id = msg.transaction_id();
10141025
let transmit = agent.send(msg, remote_addr).unwrap();
10151026

10161027
let request = Message::from_bytes(&transmit.data).unwrap();
@@ -1028,6 +1039,8 @@ pub(crate) mod tests {
10281039
let reply = agent.handle_incoming_data(&data, to).unwrap();
10291040

10301041
assert!(matches!(reply[0], HandleStunReply::StunResponse(_, _)));
1042+
assert!(agent.request_transaction(transaction_id).is_none());
1043+
assert!(agent.mut_request_transaction(transaction_id).is_none());
10311044

10321045
let data = vec![42; 8];
10331046
let transmit = agent.send_data(&data, remote_addr);
@@ -1056,6 +1069,7 @@ pub(crate) mod tests {
10561069
agent.set_remote_credentials(remote_credentials.clone().into());
10571070

10581071
let mut msg = Message::new_request(BINDING);
1072+
let transaction_id = msg.transaction_id();
10591073
msg.add_message_integrity(&local_credentials.into(), IntegrityAlgorithm::Sha1)
10601074
.unwrap();
10611075
let transmit = agent.send(msg, remote_addr).unwrap();
@@ -1075,6 +1089,8 @@ pub(crate) mod tests {
10751089
let reply = agent.handle_incoming_data(&data, to).unwrap();
10761090
// reply is ignored as it does not have credentials
10771091
assert!(reply.is_empty());
1092+
assert!(agent.request_transaction(transaction_id).is_some());
1093+
assert!(agent.mut_request_transaction(transaction_id).is_some());
10781094

10791095
// unvalidated peer data should be dropped
10801096
let data = vec![20; 4];
@@ -1226,6 +1242,8 @@ pub(crate) mod tests {
12261242
unreachable!();
12271243
};
12281244
assert_eq!(request.transaction_id(), transaction_id);
1245+
assert!(agent.request_transaction(transaction_id).is_none());
1246+
assert!(agent.mut_request_transaction(transaction_id).is_none());
12291247
}
12301248

12311249
#[test]

0 commit comments

Comments
 (0)