mod test;
use bytes::Bytes;
use http::header::CONTENT_TYPE;
use http::Method;
use http::Request;
use http::StatusCode;
use http::Uri;
use httpc::Issue as _;
use test::client;
use test::server;
use test::test;
#[test]
async fn get_ok() {
let uri = Uri::builder()
.scheme("http")
.authority(server())
.path_and_query("/get")
.build()
.unwrap();
let request = Request::get(uri).body(None).unwrap();
let client = client();
let response = client.issue(request).await.unwrap();
assert_eq!(response.status(), StatusCode::OK);
assert_eq!(response.body(), "GET success");
}
#[test]
async fn get_binary() {
let uri = Uri::builder()
.scheme("http")
.authority(server())
.path_and_query("/get-binary")
.build()
.unwrap();
let request = Request::get(uri).body(None).unwrap();
let client = client();
let response = client.issue(request).await.unwrap();
assert_eq!(response.status(), StatusCode::OK);
assert_eq!(
response.body(),
&Bytes::from_static(b"\x00\x01\x02\x03\x04\x05")
);
}
#[test]
async fn get_with_request_header() {
let uri = Uri::builder()
.scheme("http")
.authority(server())
.path_and_query("/get-with-request-header")
.build()
.unwrap();
let request = Request::builder()
.uri(uri)
.header(CONTENT_TYPE, "text/plain")
.body(None)
.unwrap();
let client = client();
let response = client.issue(request).await.unwrap();
assert_eq!(response.status(), StatusCode::OK);
assert_eq!(response.body(), &Bytes::from_static(b"text/plain"));
}
#[test]
async fn get_not_found() {
let uri = Uri::builder()
.scheme("http")
.authority(server())
.path_and_query("/not-found")
.build()
.unwrap();
let request = Request::get(uri).body(None).unwrap();
let client = client();
let response = client.issue(request).await.unwrap();
assert_eq!(response.status(), StatusCode::NOT_FOUND);
}
#[test]
async fn post_with_body() {
let uri = Uri::builder()
.scheme("http")
.authority(server())
.path_and_query("/post")
.build()
.unwrap();
let request = Request::builder()
.method(Method::POST)
.uri(uri)
.body(Some("!^*&@42!%*^".into()))
.unwrap();
let client = client();
let response = client.issue(request).await.unwrap();
assert_eq!(response.status(), StatusCode::OK);
assert_eq!(response.body(), &Bytes::from_static(b"!^*&@42!%*^"));
}
#[test]
async fn live_get_with_tls() {
let uri = Uri::from_static("https://whatwg.org/");
let request = Request::get(uri).header("Origin", "*").body(None).unwrap();
let client = client();
let response = client.issue(request).await.unwrap();
assert_eq!(response.status(), StatusCode::OK);
}