use http2::{ Flags,
FrameType,
Parser,
ParserState };
use http2::test::*;
#[test]
fn push_promise_with_padding() {
let mut v = Vec::new();
pack_u32!(
v,
(28 << 8) | 0x5
);
pack_u8!(v, 0x8);
pack_u32!(v, 0x7FFFFFFF);
pack_u8!(
v,
10
);
pack_u32!(
v,
0xFFEE
);
pack_bytes!(
v,
b"Hello, world!"
);
pack_bytes!(
v,
b"XXXXXXXXXX"
);
let mut h = DebugHandler::new();
let mut p = Parser::new();
p.resume(&mut h, &v);
assert!(Flags::from_u8(h.frame_flags).is_padded());
assert_eq!(
FrameType::from_u8(h.frame_type),
FrameType::PushPromise
);
assert_eq!(
h.push_promise_stream_id,
0xFFEE
);
assert_eq!(
h.headers_data,
b"Hello, world!"
);
assert_eq!(
p.state(),
ParserState::FrameLength1
);
}
#[test]
fn push_promise_without_padding() {
let mut v = Vec::new();
pack_u32!(
v,
(17 << 8) | 0x5
);
pack_u8!(v, 0);
pack_u32!(v, 0x7FFFFFFF);
pack_u32!(
v,
0xFFEE
);
pack_bytes!(
v,
b"Hello, world!"
);
let mut h = DebugHandler::new();
let mut p = Parser::new();
p.resume(&mut h, &v);
assert!(Flags::from_u8(h.frame_flags).is_empty());
assert_eq!(
FrameType::from_u8(h.frame_type),
FrameType::PushPromise
);
assert_eq!(
h.push_promise_stream_id,
0xFFEE
);
assert_eq!(
h.headers_data,
b"Hello, world!"
);
assert_eq!(
p.state(),
ParserState::FrameLength1
);
}