mirror of https://github.com/ctz/rustls
simplify MessageDeframer tests with util functions
Co-authored-by: Jorge Aparicio <jorge.aparicio@ferrous-systems.com>
This commit is contained in:
parent
a4ddaa2b6d
commit
a2d4e720c5
|
@ -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> {
|
||||
|
|
Loading…
Reference in New Issue