From 3559704d3a2461fe367ad4c4a06262b4edf767b7 Mon Sep 17 00:00:00 2001 From: Tore Pettersen Date: Sat, 7 Mar 2020 23:55:20 +0100 Subject: [PATCH] Fix remarks from PR and add tests --- src/test.rs | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/test.rs b/src/test.rs index 7cea1362f..69ac1316c 100644 --- a/src/test.rs +++ b/src/test.rs @@ -238,10 +238,10 @@ where /// /// assert!(resp.status().is_success()); /// -/// let result: Person = test::read_json_body(resp).await; +/// let result: Person = test::read_body_json(resp).await; /// } /// ``` -pub async fn read_json_body(res: ServiceResponse) -> T +pub async fn read_body_json(res: ServiceResponse) -> T where B: MessageBody, T: DeserializeOwned, @@ -1101,6 +1101,23 @@ mod tests { assert_eq!(result, Bytes::from_static(b"welcome!")); } + #[actix_rt::test] + async fn test_send_request() { + let mut app = + init_service(App::new().service(web::resource("/index.html").route( + web::get().to(|| async { HttpResponse::Ok().body("welcome!") }), + ))) + .await; + + let resp = TestRequest::get() + .uri("/index.html") + .send_request(&mut app) + .await; + + let result = read_body(resp).await; + assert_eq!(result, Bytes::from_static(b"welcome!")); + } + #[derive(Serialize, Deserialize)] pub struct Person { id: String, @@ -1128,6 +1145,28 @@ mod tests { assert_eq!(&result.id, "12345"); } + #[actix_rt::test] + async fn test_body_json() { + let mut app = init_service(App::new().service(web::resource("/people").route( + web::post().to(|person: web::Json| { + async { HttpResponse::Ok().json(person.into_inner()) } + }), + ))) + .await; + + let payload = r#"{"id":"12345","name":"User name"}"#.as_bytes(); + + let resp = TestRequest::post() + .uri("/people") + .header(header::CONTENT_TYPE, "application/json") + .set_payload(payload) + .send_request(&mut app) + .await; + + let result: Person = read_body_json(resp).await; + assert_eq!(&result.name, "User name"); + } + #[actix_rt::test] async fn test_request_response_form() { let mut app = init_service(App::new().service(web::resource("/people").route(