1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
mod test_server;
pub use self::test_server::*;
mod test_request;
pub use self::test_request::*;
mod test_response;
pub use self::test_response::*;
pub mod util;
pub use ::hyper::http;
#[cfg(test)]
mod test_get {
use super::*;
use ::axum::routing::get;
use ::axum::Router;
async fn get_ping() -> &'static str {
"pong!"
}
#[tokio::test]
async fn it_sound_get() {
let app = Router::new()
.route("/ping", get(get_ping))
.into_make_service();
let server = TestServer::new(app).expect("Should create test server");
server.get(&"/ping").await.assert_text(&"pong!");
}
}
#[cfg(test)]
mod test_cookies {
use super::*;
use ::axum::extract::RawBody;
use ::axum::routing::get;
use ::axum::routing::put;
use ::axum::Router;
use ::axum_extra::extract::cookie::Cookie;
use ::axum_extra::extract::cookie::CookieJar;
use ::hyper::body::to_bytes;
async fn get_cookie(cookies: CookieJar) -> (CookieJar, String) {
let cookie = cookies.get("test-cookie").unwrap();
let cookie_value = cookie.value().to_string();
(cookies, cookie_value)
}
async fn put_cookie(
mut cookies: CookieJar,
RawBody(body): RawBody,
) -> (CookieJar, &'static str) {
let body_bytes = to_bytes(body)
.await
.expect("Should turn the body into bytes");
let body_text: String = String::from_utf8_lossy(&body_bytes).to_string();
let cookie = Cookie::new("test-cookie", body_text);
cookies = cookies.add(cookie);
(cookies, &"done")
}
#[tokio::test]
async fn it_should_pass_cookies_created_back_up_to_server_automatically() {
let app = Router::new()
.route("/cookie", put(put_cookie))
.route("/cookie", get(get_cookie))
.into_make_service();
let server = TestServer::new(app).expect("Should create test server");
server.put(&"/cookie").text(&"new-cookie").await;
let response_text = server.get(&"/cookie").await.text();
assert_eq!(response_text, "new-cookie");
}
}