2019-03-17 20:55:03 +00:00
|
|
|
use actix_http::HttpService;
|
|
|
|
use actix_http_test::TestServer;
|
2019-05-15 17:31:40 +00:00
|
|
|
use actix_web::{http, web::Path, App, HttpResponse, Responder};
|
2019-06-05 02:43:13 +00:00
|
|
|
use actix_web_codegen::{connect, delete, get, head, options, patch, post, put, trace};
|
2019-04-10 19:24:17 +00:00
|
|
|
use futures::{future, Future};
|
2019-03-17 20:55:03 +00:00
|
|
|
|
|
|
|
#[get("/test")]
|
|
|
|
fn test() -> impl Responder {
|
|
|
|
HttpResponse::Ok()
|
|
|
|
}
|
|
|
|
|
2019-05-02 16:49:10 +00:00
|
|
|
#[put("/test")]
|
|
|
|
fn put_test() -> impl Responder {
|
|
|
|
HttpResponse::Created()
|
|
|
|
}
|
|
|
|
|
2019-06-04 16:30:43 +00:00
|
|
|
#[patch("/test")]
|
|
|
|
fn patch_test() -> impl Responder {
|
|
|
|
HttpResponse::Ok()
|
|
|
|
}
|
|
|
|
|
2019-05-02 16:49:10 +00:00
|
|
|
#[post("/test")]
|
|
|
|
fn post_test() -> impl Responder {
|
|
|
|
HttpResponse::NoContent()
|
|
|
|
}
|
|
|
|
|
2019-06-04 16:30:43 +00:00
|
|
|
#[head("/test")]
|
|
|
|
fn head_test() -> impl Responder {
|
|
|
|
HttpResponse::Ok()
|
|
|
|
}
|
|
|
|
|
|
|
|
#[connect("/test")]
|
|
|
|
fn connect_test() -> impl Responder {
|
|
|
|
HttpResponse::Ok()
|
|
|
|
}
|
|
|
|
|
|
|
|
#[options("/test")]
|
|
|
|
fn options_test() -> impl Responder {
|
|
|
|
HttpResponse::Ok()
|
|
|
|
}
|
|
|
|
|
|
|
|
#[trace("/test")]
|
|
|
|
fn trace_test() -> impl Responder {
|
|
|
|
HttpResponse::Ok()
|
|
|
|
}
|
|
|
|
|
2019-03-31 07:23:15 +00:00
|
|
|
#[get("/test")]
|
2019-04-10 19:24:17 +00:00
|
|
|
fn auto_async() -> impl Future<Item = HttpResponse, Error = actix_web::Error> {
|
2019-03-31 07:23:15 +00:00
|
|
|
future::ok(HttpResponse::Ok().finish())
|
|
|
|
}
|
|
|
|
|
|
|
|
#[get("/test")]
|
2019-04-10 19:24:17 +00:00
|
|
|
fn auto_sync() -> impl Future<Item = HttpResponse, Error = actix_web::Error> {
|
2019-03-31 07:23:15 +00:00
|
|
|
future::ok(HttpResponse::Ok().finish())
|
|
|
|
}
|
|
|
|
|
2019-05-15 16:21:07 +00:00
|
|
|
#[put("/test/{param}")]
|
|
|
|
fn put_param_test(_: Path<String>) -> impl Responder {
|
|
|
|
HttpResponse::Created()
|
|
|
|
}
|
|
|
|
|
|
|
|
#[delete("/test/{param}")]
|
|
|
|
fn delete_param_test(_: Path<String>) -> impl Responder {
|
|
|
|
HttpResponse::NoContent()
|
|
|
|
}
|
|
|
|
|
|
|
|
#[get("/test/{param}")]
|
|
|
|
fn get_param_test(_: Path<String>) -> impl Responder {
|
|
|
|
HttpResponse::Ok()
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_params() {
|
|
|
|
let mut srv = TestServer::new(|| {
|
|
|
|
HttpService::new(
|
|
|
|
App::new()
|
|
|
|
.service(get_param_test)
|
|
|
|
.service(put_param_test)
|
|
|
|
.service(delete_param_test),
|
|
|
|
)
|
|
|
|
});
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::GET, srv.url("/test/it"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert_eq!(response.status(), http::StatusCode::OK);
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::PUT, srv.url("/test/it"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert_eq!(response.status(), http::StatusCode::CREATED);
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::DELETE, srv.url("/test/it"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert_eq!(response.status(), http::StatusCode::NO_CONTENT);
|
|
|
|
}
|
|
|
|
|
2019-03-17 20:55:03 +00:00
|
|
|
#[test]
|
|
|
|
fn test_body() {
|
2019-05-02 16:49:10 +00:00
|
|
|
let mut srv = TestServer::new(|| {
|
|
|
|
HttpService::new(
|
|
|
|
App::new()
|
|
|
|
.service(post_test)
|
|
|
|
.service(put_test)
|
2019-06-04 16:30:43 +00:00
|
|
|
.service(head_test)
|
|
|
|
.service(connect_test)
|
|
|
|
.service(options_test)
|
|
|
|
.service(trace_test)
|
|
|
|
.service(patch_test)
|
2019-05-02 16:49:10 +00:00
|
|
|
.service(test),
|
|
|
|
)
|
|
|
|
});
|
2019-03-31 07:23:15 +00:00
|
|
|
let request = srv.request(http::Method::GET, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
|
2019-06-04 16:30:43 +00:00
|
|
|
let request = srv.request(http::Method::HEAD, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::CONNECT, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::OPTIONS, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::TRACE, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::PATCH, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
|
2019-05-02 16:49:10 +00:00
|
|
|
let request = srv.request(http::Method::PUT, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
assert_eq!(response.status(), http::StatusCode::CREATED);
|
|
|
|
|
|
|
|
let request = srv.request(http::Method::POST, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
assert_eq!(response.status(), http::StatusCode::NO_CONTENT);
|
|
|
|
|
2019-03-31 07:23:15 +00:00
|
|
|
let request = srv.request(http::Method::GET, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
|
|
|
assert!(response.status().is_success());
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_auto_async() {
|
|
|
|
let mut srv = TestServer::new(|| HttpService::new(App::new().service(auto_async)));
|
2019-03-17 20:55:03 +00:00
|
|
|
|
2019-03-26 19:50:51 +00:00
|
|
|
let request = srv.request(http::Method::GET, srv.url("/test"));
|
|
|
|
let response = srv.block_on(request.send()).unwrap();
|
2019-03-17 20:55:03 +00:00
|
|
|
assert!(response.status().is_success());
|
|
|
|
}
|