|
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