refactor: fix unit tests for new API

This commit is contained in:
Alexey Galakhov 2017-03-11 02:59:09 +01:00
parent b7557f1baa
commit c6d3dd6404
3 changed files with 16 additions and 24 deletions

View File

@ -187,8 +187,7 @@ fn generate_key() -> String {
mod tests {
use super::{Response, generate_key};
use std::io::Cursor;
use super::super::machine::TryParse;
#[test]
fn random_keys() {
@ -209,10 +208,9 @@ mod tests {
#[test]
fn response_parsing() {
const data: &'static [u8] = b"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n";
let mut inp = Cursor::new(data);
let req = Response::parse(&mut inp).unwrap().unwrap();
assert_eq!(req.code, 200);
assert_eq!(req.headers.find_first("Content-Type"), Some(&b"text/html"[..]));
let (_, resp) = Response::try_parse(data).unwrap().unwrap();
assert_eq!(resp.code, 200);
assert_eq!(resp.headers.find_first("Content-Type"), Some(&b"text/html"[..]));
}
}

View File

@ -3,8 +3,10 @@ use std::str::from_utf8;
use std::slice;
use httparse;
use httparse::Status;
use error::Result;
use super::machine::TryParse;
// Limit the number of header lines.
pub const MAX_HEADERS: usize = 124;
@ -71,16 +73,15 @@ pub trait FromHttparse<T>: Sized {
fn from_httparse(raw: T) -> Result<Self>;
}
/*
impl TryParse for Headers {
fn httparse(buf: &[u8]) -> Result<Option<(usize, Self)>> {
fn try_parse(buf: &[u8]) -> Result<Option<(usize, Self)>> {
let mut hbuffer = [httparse::EMPTY_HEADER; MAX_HEADERS];
Ok(match httparse::parse_headers(buf, &mut hbuffer)? {
Status::Partial => None,
Status::Complete((size, hdr)) => Some((size, Headers::from_httparse(hdr)?)),
})
}
}*/
}
impl<'b: 'h, 'h> FromHttparse<&'b [httparse::Header<'h>]> for Headers {
fn from_httparse(raw: &'b [httparse::Header<'h>]) -> Result<Self> {
@ -96,8 +97,7 @@ impl<'b: 'h, 'h> FromHttparse<&'b [httparse::Header<'h>]> for Headers {
mod tests {
use super::Headers;
use std::io::Cursor;
use super::super::machine::TryParse;
#[test]
fn headers() {
@ -106,8 +106,7 @@ mod tests {
Connection: Upgrade\r\n\
Upgrade: websocket\r\n\
\r\n";
let mut inp = Cursor::new(data);
let hdr = Headers::parse(&mut inp).unwrap().unwrap();
let (_, hdr) = Headers::try_parse(data).unwrap().unwrap();
assert_eq!(hdr.find_first("Host"), Some(&b"foo.com"[..]));
assert_eq!(hdr.find_first("Upgrade"), Some(&b"websocket"[..]));
assert_eq!(hdr.find_first("Connection"), Some(&b"Upgrade"[..]));
@ -126,8 +125,7 @@ mod tests {
Sec-WebSocket-ExtenSIONS: permessage-unknown\r\n\
Upgrade: websocket\r\n\
\r\n";
let mut inp = Cursor::new(data);
let hdr = Headers::parse(&mut inp).unwrap().unwrap();
let (_, hdr) = Headers::try_parse(data).unwrap().unwrap();
let mut iter = hdr.find("Sec-WebSocket-Extensions");
assert_eq!(iter.next(), Some(&b"permessage-deflate"[..]));
assert_eq!(iter.next(), Some(&b"permessage-unknown"[..]));
@ -140,8 +138,7 @@ mod tests {
b"Host: foo.com\r\n\
Connection: Upgrade\r\n\
Upgrade: websocket\r\n";
let mut inp = Cursor::new(data);
let hdr = Headers::parse(&mut inp).unwrap();
let hdr = Headers::try_parse(data).unwrap();
assert!(hdr.is_none());
}

View File

@ -93,14 +93,12 @@ impl HandshakeRole for ServerHandshake {
mod tests {
use super::Request;
use std::io::Cursor;
use super::super::machine::TryParse;
#[test]
fn request_parsing() {
const data: &'static [u8] = b"GET /script.ws HTTP/1.1\r\nHost: foo.com\r\n\r\n";
let mut inp = Cursor::new(data);
let req = Request::parse(&mut inp).unwrap().unwrap();
let (_, req) = Request::try_parse(data).unwrap().unwrap();
assert_eq!(req.path, "/script.ws");
assert_eq!(req.headers.find_first("Host"), Some(&b"foo.com"[..]));
}
@ -115,9 +113,8 @@ mod tests {
Sec-WebSocket-Version: 13\r\n\
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\
\r\n";
let mut inp = Cursor::new(data);
let req = Request::parse(&mut inp).unwrap().unwrap();
let reply = req.reply().unwrap();
let (_, req) = Request::try_parse(data).unwrap().unwrap();
let _ = req.reply().unwrap();
}
}