diff --git a/actix-web-codegen/tests/test_macro.rs b/actix-web-codegen/tests/test_macro.rs index 9b9ec6f3b..cd58d0b0b 100644 --- a/actix-web-codegen/tests/test_macro.rs +++ b/actix-web-codegen/tests/test_macro.rs @@ -1,7 +1,7 @@ use actix_http::HttpService; use actix_http_test::TestServer; -use actix_web::{http, App, HttpResponse, Responder}; -use actix_web_codegen::{get, post, put}; +use actix_web::{http, App, HttpResponse, Responder, web::{Path}}; +use actix_web_codegen::{get, post, put, delete}; use futures::{future, Future}; #[get("/test")] @@ -29,6 +29,45 @@ fn auto_sync() -> impl Future { future::ok(HttpResponse::Ok().finish()) } +#[put("/test/{param}")] +fn put_param_test(_: Path) -> impl Responder { + HttpResponse::Created() +} + +#[delete("/test/{param}")] +fn delete_param_test(_: Path) -> impl Responder { + HttpResponse::NoContent() +} + +#[get("/test/{param}")] +fn get_param_test(_: Path) -> 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); +} + #[test] fn test_body() { let mut srv = TestServer::new(|| {