use octane::path::PathBuf;
use octane::request::{HttpVersion, RequestLine, RequestMethod};
#[test]
fn success_standard() {
let req = RequestLine::parse("POST /abc/def HTTP/1.1").unwrap();
assert_eq!(req.method, RequestMethod::Post);
assert_eq!(req.path, PathBuf::parse("/abc/def").ok().unwrap());
assert_eq!(req.version, HttpVersion::Http11);
}
#[test]
fn success_other_method() {
let req = RequestLine::parse("PATCH /abc/def HTTP/1.1").unwrap();
assert_eq!(req.method, RequestMethod::None);
assert_eq!(req.path, PathBuf::parse("/abc/def").ok().unwrap());
assert_eq!(req.version, HttpVersion::Http11);
}
#[test]
#[should_panic]
#[cfg_attr(not(feature = "faithful"), ignore)]
fn fail_extra_1() {
RequestLine::parse("POST /abc/def HTTP/1.1 x").unwrap();
}
#[test]
#[should_panic]
fn fail_extra_2() {
RequestLine::parse("POST /a /b HTTP/1.1").unwrap();
}
#[test]
#[should_panic]
#[cfg_attr(not(feature = "faithful"), ignore)]
fn fail_malformed_version() {
RequestLine::parse("POST /abc/def HTDP/1.1").unwrap();
}
#[test]
#[should_panic]
fn fail_missing_clause() {
RequestLine::parse("POST /abc/def").unwrap();
}