simplify MessageDeframer tests with util functions

Co-authored-by: Jorge Aparicio <jorge.aparicio@ferrous-systems.com>
This commit is contained in:
Christian Poveda 2023-12-07 14:57:17 -05:00 committed by Daniel McCarney
parent a4ddaa2b6d
commit a2d4e720c5
1 changed files with 32 additions and 25 deletions

View File

@ -588,6 +588,7 @@ const READ_SIZE: usize = 4096;
mod tests {
use std::io;
use crate::crypto::cipher::PlainMessage;
use crate::msgs::message::Message;
use super::*;
@ -704,7 +705,7 @@ mod tests {
let mut rl = RecordLayer::new();
assert_eq!(
d.pop(&mut rl, None).unwrap_err(),
d.pop_error(&mut rl, None),
Error::InvalidMessage(InvalidMessage::InvalidContentType)
);
}
@ -719,7 +720,7 @@ mod tests {
let mut rl = RecordLayer::new();
assert_eq!(
d.pop(&mut rl, None).unwrap_err(),
d.pop_error(&mut rl, None),
Error::InvalidMessage(InvalidMessage::UnknownProtocolVersion)
);
}
@ -734,7 +735,7 @@ mod tests {
let mut rl = RecordLayer::new();
assert_eq!(
d.pop(&mut rl, None).unwrap_err(),
d.pop_error(&mut rl, None),
Error::InvalidMessage(InvalidMessage::MessageTooLarge)
);
}
@ -748,11 +749,7 @@ mod tests {
);
let mut rl = RecordLayer::new();
let m = d
.pop(&mut rl, None)
.unwrap()
.unwrap()
.message;
let m = d.pop_message(&mut rl, None);
assert_eq!(m.typ, ContentType::ApplicationData);
assert_eq!(m.payload.0.len(), 0);
assert!(!d.has_pending());
@ -769,12 +766,12 @@ mod tests {
let mut rl = RecordLayer::new();
assert_eq!(
d.pop(&mut rl, None).unwrap_err(),
d.pop_error(&mut rl, None),
Error::InvalidMessage(InvalidMessage::InvalidEmptyPayload)
);
// CorruptMessage has been fused
assert_eq!(
d.pop(&mut rl, None).unwrap_err(),
d.pop_error(&mut rl, None),
Error::InvalidMessage(InvalidMessage::InvalidEmptyPayload)
);
}
@ -819,21 +816,13 @@ mod tests {
}
fn pop_first(d: &mut BufferedDeframer, rl: &mut RecordLayer) {
let m = d
.pop(rl, None)
.unwrap()
.unwrap()
.message;
let m = d.pop_message(rl, None);
assert_eq!(m.typ, ContentType::Handshake);
Message::try_from(m).unwrap();
}
fn pop_second(d: &mut BufferedDeframer, rl: &mut RecordLayer) {
let m = d
.pop(rl, None)
.unwrap()
.unwrap()
.message;
let m = d.pop_message(rl, None);
assert_eq!(m.typ, ContentType::Alert);
Message::try_from(m).unwrap();
}
@ -859,18 +848,36 @@ mod tests {
self.read(&mut rd)
}
fn pop(
fn pop_error(
&mut self,
record_layer: &mut RecordLayer,
negotiated_version: Option<ProtocolVersion>,
) -> Result<Option<Deframed>, Error> {
) -> Error {
let mut deframer_buffer = self.buffer.borrow();
let res = self
let err = self
.inner
.pop(record_layer, negotiated_version, &mut deframer_buffer);
.pop(record_layer, negotiated_version, &mut deframer_buffer)
.unwrap_err();
let discard = deframer_buffer.pending_discard();
self.buffer.discard(discard);
res
err
}
fn pop_message(
&mut self,
record_layer: &mut RecordLayer,
negotiated_version: Option<ProtocolVersion>,
) -> PlainMessage {
let mut deframer_buffer = self.buffer.borrow();
let m = self
.inner
.pop(record_layer, negotiated_version, &mut deframer_buffer)
.unwrap()
.unwrap()
.message;
let discard = deframer_buffer.pending_discard();
self.buffer.discard(discard);
m
}
fn read(&mut self, rd: &mut dyn io::Read) -> io::Result<usize> {