1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-12-01 02:44:37 +01:00
actix-extras/actix-web-codegen/tests/test_macro.rs

152 lines
4.5 KiB
Rust
Raw Normal View History

2019-12-12 18:08:38 +01:00
use actix_web::{http, test, web::Path, App, HttpResponse, Responder};
2019-06-05 04:43:13 +02:00
use actix_web_codegen::{connect, delete, get, head, options, patch, post, put, trace};
use futures::{future, Future};
2019-03-17 21:55:03 +01:00
#[get("/test")]
2019-12-12 18:08:38 +01:00
async fn test_handler() -> impl Responder {
2019-03-17 21:55:03 +01:00
HttpResponse::Ok()
}
2019-05-02 18:49:10 +02:00
#[put("/test")]
2019-11-22 06:49:35 +01:00
async fn put_test() -> impl Responder {
2019-05-02 18:49:10 +02:00
HttpResponse::Created()
}
#[patch("/test")]
2019-11-22 06:49:35 +01:00
async fn patch_test() -> impl Responder {
HttpResponse::Ok()
}
2019-05-02 18:49:10 +02:00
#[post("/test")]
2019-11-22 06:49:35 +01:00
async fn post_test() -> impl Responder {
2019-05-02 18:49:10 +02:00
HttpResponse::NoContent()
}
#[head("/test")]
2019-11-22 06:49:35 +01:00
async fn head_test() -> impl Responder {
HttpResponse::Ok()
}
#[connect("/test")]
2019-11-22 06:49:35 +01:00
async fn connect_test() -> impl Responder {
HttpResponse::Ok()
}
#[options("/test")]
2019-11-22 06:49:35 +01:00
async fn options_test() -> impl Responder {
HttpResponse::Ok()
}
#[trace("/test")]
2019-11-22 06:49:35 +01:00
async fn trace_test() -> impl Responder {
HttpResponse::Ok()
}
#[get("/test")]
2019-11-21 08:01:07 +01:00
fn auto_async() -> impl Future<Output = Result<HttpResponse, actix_web::Error>> {
future::ok(HttpResponse::Ok().finish())
}
#[get("/test")]
2019-11-21 08:01:07 +01:00
fn auto_sync() -> impl Future<Output = Result<HttpResponse, actix_web::Error>> {
future::ok(HttpResponse::Ok().finish())
}
#[put("/test/{param}")]
2019-11-22 06:49:35 +01:00
async fn put_param_test(_: Path<String>) -> impl Responder {
HttpResponse::Created()
}
#[delete("/test/{param}")]
2019-11-22 06:49:35 +01:00
async fn delete_param_test(_: Path<String>) -> impl Responder {
HttpResponse::NoContent()
}
#[get("/test/{param}")]
2019-11-22 06:49:35 +01:00
async fn get_param_test(_: Path<String>) -> impl Responder {
HttpResponse::Ok()
}
2019-11-26 06:25:50 +01:00
#[actix_rt::test]
async fn test_params() {
2019-12-12 18:08:38 +01:00
let srv = test::start(|| {
App::new()
.service(get_param_test)
.service(put_param_test)
.service(delete_param_test)
2019-11-26 06:25:50 +01:00
});
let request = srv.request(http::Method::GET, srv.url("/test/it"));
let response = request.send().await.unwrap();
assert_eq!(response.status(), http::StatusCode::OK);
let request = srv.request(http::Method::PUT, srv.url("/test/it"));
let response = request.send().await.unwrap();
assert_eq!(response.status(), http::StatusCode::CREATED);
let request = srv.request(http::Method::DELETE, srv.url("/test/it"));
let response = request.send().await.unwrap();
assert_eq!(response.status(), http::StatusCode::NO_CONTENT);
}
#[actix_rt::test]
async fn test_body() {
2019-12-12 18:08:38 +01:00
let srv = test::start(|| {
App::new()
.service(post_test)
.service(put_test)
.service(head_test)
.service(connect_test)
.service(options_test)
.service(trace_test)
.service(patch_test)
.service(test_handler)
2019-11-26 06:25:50 +01:00
});
let request = srv.request(http::Method::GET, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
let request = srv.request(http::Method::HEAD, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
let request = srv.request(http::Method::CONNECT, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
let request = srv.request(http::Method::OPTIONS, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
let request = srv.request(http::Method::TRACE, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
let request = srv.request(http::Method::PATCH, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
let request = srv.request(http::Method::PUT, srv.url("/test"));
let response = request.send().await.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 = request.send().await.unwrap();
assert!(response.status().is_success());
assert_eq!(response.status(), http::StatusCode::NO_CONTENT);
let request = srv.request(http::Method::GET, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
}
#[actix_rt::test]
async fn test_auto_async() {
2019-12-12 18:08:38 +01:00
let srv = test::start(|| App::new().service(auto_async));
2019-11-26 06:25:50 +01:00
let request = srv.request(http::Method::GET, srv.url("/test"));
let response = request.send().await.unwrap();
assert!(response.status().is_success());
2019-03-17 21:55:03 +01:00
}