use super::utils;
use rama::{
http::{BodyExtractExt, StatusCode},
service::Context,
};
#[tokio::test]
#[ignore]
async fn test_http_web_service_dir_and_api() {
utils::init_tracing();
let runner = utils::ExampleRunner::interactive("http_web_service_dir_and_api");
// test index.html via directory service
let response = runner
.get("http://127.0.0.1:62013")
.send(Context::default())
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let homepage = response.try_into_string().await.unwrap();
assert!(homepage.contains("
Coin Clicker
"));
// test redirect
let response = runner
.get("http://127.0.0.1:62013/foo/bar")
.send(Context::default())
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let error_page = response.try_into_string().await.unwrap();
assert!(error_page.contains("Not Found (404)
"));
// test coin fetching
let response = runner
.get("http://127.0.0.1:62013/coin")
.send(Context::default())
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let coin_page = response.try_into_string().await.unwrap();
assert!(coin_page.contains(r#"0
"#));
// test coin post
let response = runner
.post("http://127.0.0.1:62013/coin")
.send(Context::default())
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let coin_page = response.try_into_string().await.unwrap();
assert!(coin_page.contains(r#"1
"#));
// test coin fetching (again)
let response = runner
.get("http://127.0.0.1:62013/coin")
.send(Context::default())
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
let coin_page = response.try_into_string().await.unwrap();
assert!(coin_page.contains(r#"1
"#));
}