From a15f06ea7cd460d66c6a148b7ac7ca0b9959e763 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Thu, 6 Jul 2017 18:34:17 -0700 Subject: [PATCH] Add a test for reading client preface --- tests/server_preface.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/server_preface.rs diff --git a/tests/server_preface.rs b/tests/server_preface.rs new file mode 100644 index 0000000..71f3ef9 --- /dev/null +++ b/tests/server_preface.rs @@ -0,0 +1,31 @@ +extern crate h2; +extern crate http; +extern crate futures; +extern crate mock_io; +extern crate env_logger; + +use h2::server; + +use futures::*; + +const SETTINGS: &'static [u8] = &[0, 0, 0, 4, 0, 0, 0, 0, 0]; +const SETTINGS_ACK: &'static [u8] = &[0, 0, 0, 4, 1, 0, 0, 0, 0]; + +#[test] +fn read_preface_in_multiple_frames() { + let _ = ::env_logger::init().unwrap(); + + let mock = mock_io::Builder::new() + .read(b"PRI * HTTP/2.0") + .read(b"\r\n\r\nSM\r\n\r\n") + .write(SETTINGS) + .read(SETTINGS) + .write(SETTINGS_ACK) + .read(SETTINGS_ACK) + .build(); + + let h2 = server::handshake(mock) + .wait().unwrap(); + + assert!(Stream::wait(h2).next().is_none()); +}