|
1 | 1 | use http_types::{self, Method, Url}; |
2 | | -use tide::{self, Request, Response, Result, StatusCode}; |
| 2 | +use tide::{self, Request, Response, Result}; |
3 | 3 |
|
4 | 4 | #[async_std::test] |
5 | | -async fn test_param_invalid_type() { |
6 | | - async fn get_by_id(req: Request<()>) -> Result<Response> { |
7 | | - assert_eq!( |
8 | | - req.param::<i32>("id").unwrap_err().to_string(), |
9 | | - "Param failed to parse: invalid digit found in string" |
10 | | - ); |
11 | | - let _ = req.param::<i32>("id")?; |
12 | | - Result::Ok(Response::new(StatusCode::Ok)) |
13 | | - } |
14 | | - let mut server = tide::new(); |
15 | | - server.at("/by_id/:id").get(get_by_id); |
16 | | - |
17 | | - let req = http_types::Request::new( |
18 | | - Method::Get, |
19 | | - Url::parse("http://example.com/by_id/wrong").unwrap(), |
20 | | - ); |
21 | | - let res: http_types::Response = server.respond(req).await.unwrap(); |
22 | | - assert_eq!(res.status(), StatusCode::InternalServerError); |
23 | | -} |
24 | | - |
25 | | -#[async_std::test] |
26 | | -async fn test_missing_param() { |
| 5 | +async fn test_missing_param() -> tide::Result<()> { |
27 | 6 | async fn greet(req: Request<()>) -> Result<Response> { |
28 | | - assert_eq!( |
29 | | - req.param::<String>("name").unwrap_err().to_string(), |
30 | | - "Param \"name\" not found!" |
31 | | - ); |
32 | | - let _: String = req.param("name")?; |
33 | | - Result::Ok(Response::new(StatusCode::Ok)) |
| 7 | + assert_eq!(req.param("name")?, "Param \"name\" not found"); |
| 8 | + Ok(Response::new(200)) |
34 | 9 | } |
| 10 | + |
35 | 11 | let mut server = tide::new(); |
36 | 12 | server.at("/").get(greet); |
37 | 13 |
|
38 | | - let req = http_types::Request::new(Method::Get, Url::parse("http://example.com/").unwrap()); |
39 | | - let res: http_types::Response = server.respond(req).await.unwrap(); |
40 | | - assert_eq!(res.status(), StatusCode::InternalServerError); |
| 14 | + let req = http_types::Request::new(Method::Get, Url::parse("http://example.com/")?); |
| 15 | + let res: http_types::Response = server.respond(req).await?; |
| 16 | + assert_eq!(res.status(), 500); |
| 17 | + Ok(()) |
41 | 18 | } |
42 | 19 |
|
43 | 20 | #[async_std::test] |
44 | | -async fn hello_world_parametrized() { |
45 | | - async fn greet(req: tide::Request<()>) -> Result<Response> { |
46 | | - let name = req.param("name").unwrap_or_else(|_| "nori".to_owned()); |
47 | | - let mut response = tide::Response::new(StatusCode::Ok); |
48 | | - response.set_body(format!("{} says hello", name)); |
49 | | - Ok(response) |
| 21 | +async fn hello_world_parametrized() -> Result<()> { |
| 22 | + async fn greet(req: tide::Request<()>) -> Result<impl Into<Response>> { |
| 23 | + let body = format!("{} says hello", req.param("name").unwrap_or("nori")); |
| 24 | + Ok(Response::builder(200).body(body)) |
50 | 25 | } |
51 | 26 |
|
52 | 27 | let mut server = tide::new(); |
53 | 28 | server.at("/").get(greet); |
54 | 29 | server.at("/:name").get(greet); |
55 | 30 |
|
56 | | - let req = http_types::Request::new(Method::Get, Url::parse("http://example.com/").unwrap()); |
57 | | - let mut res: http_types::Response = server.respond(req).await.unwrap(); |
58 | | - assert_eq!( |
59 | | - res.body_string().await.unwrap(), |
60 | | - "nori says hello".to_string() |
61 | | - ); |
| 31 | + let req = http_types::Request::new(Method::Get, Url::parse("http://example.com/")?); |
| 32 | + let mut res: http_types::Response = server.respond(req).await?; |
| 33 | + assert_eq!(res.body_string().await?, "nori says hello"); |
62 | 34 |
|
63 | | - let req = http_types::Request::new(Method::Get, Url::parse("http://example.com/iron").unwrap()); |
64 | | - let mut res: http_types::Response = server.respond(req).await.unwrap(); |
65 | | - assert_eq!( |
66 | | - res.body_string().await.unwrap(), |
67 | | - "iron says hello".to_string() |
68 | | - ); |
| 35 | + let req = http_types::Request::new(Method::Get, Url::parse("http://example.com/iron")?); |
| 36 | + let mut res: http_types::Response = server.respond(req).await?; |
| 37 | + assert_eq!(res.body_string().await?, "iron says hello"); |
| 38 | + Ok(()) |
69 | 39 | } |
0 commit comments