|
use std::net::TcpListener; |
|
|
|
use handlebars::Handlebars; |
|
use websurfx::{config::parser::Config, run}; |
|
|
|
|
|
fn spawn_app() -> String { |
|
|
|
let listener = TcpListener::bind("127.0.0.1:0").expect("Failed to bind random port"); |
|
let port = listener.local_addr().unwrap().port(); |
|
let config = Config::parse(false).unwrap(); |
|
let server = run( |
|
listener, |
|
config, |
|
#[cfg(all(feature = "memory-cache", not(feature = "redis-cache")))] |
|
websurfx::cache::cacher::Cache::new_in_memory(), |
|
) |
|
.expect("Failed to bind address"); |
|
|
|
tokio::spawn(server); |
|
format!("http://127.0.0.1:{}/", port) |
|
} |
|
|
|
|
|
|
|
fn handlebars() -> Handlebars<'static> { |
|
let mut handlebars = Handlebars::new(); |
|
|
|
handlebars |
|
.register_templates_directory(".html", "./public/templates") |
|
.unwrap(); |
|
|
|
handlebars |
|
} |
|
|
|
#[tokio::test] |
|
async fn test_index() { |
|
let address = spawn_app(); |
|
|
|
let client = reqwest::Client::new(); |
|
let res = client.get(address).send().await.unwrap(); |
|
assert_eq!(res.status(), 200); |
|
|
|
let handlebars = handlebars(); |
|
let config = Config::parse(true).unwrap(); |
|
let template = handlebars.render("index", &config.style).unwrap(); |
|
assert_eq!(res.text().await.unwrap(), template); |
|
} |
|
|
|
|
|
|
|
|