#[macro_use] extern crate actix_web; use std::collections::HashMap; use actix_web::{middleware::Logger, web, App, HttpServer, Responder}; use yarte::Template; #[derive(Template)] #[template(path = "index.hbs")] struct IndexTemplate { query: web::Query>, } #[get("/")] pub fn index(query: web::Query>) -> impl Responder { IndexTemplate { query } } fn main() -> std::io::Result<()> { std::env::set_var("RUST_LOG", "actix_web=info"); env_logger::init(); // start http server HttpServer::new(move || App::new().wrap(Logger::default()).service(index)) .bind("127.0.0.1:8080")? .run() } #[cfg(test)] mod test { use super::*; use actix_http::HttpService; use actix_http_test::TestServer; use actix_web::{http, App}; use bytes::Bytes; #[test] fn test() { let mut srv = TestServer::new(|| HttpService::new(App::new().service(index))); let req = srv.get("/"); let mut response = srv.block_on(req.send()).unwrap(); assert!(response.status().is_success()); assert_eq!( response.headers().get(http::header::CONTENT_TYPE).unwrap(), "text/html" ); let bytes = srv.block_on(response.body()).unwrap(); assert_eq!( bytes, Bytes::from_static( "\ \ Actix web\

Welcome!

\

What is your name?

\
\ Name: \
Last name: \

\
\ " .as_ref() ) ); let req = srv.get("/?name=foo&lastname=bar"); let mut response = srv.block_on(req.send()).unwrap(); assert!(response.status().is_success()); assert_eq!( response.headers().get(http::header::CONTENT_TYPE).unwrap(), "text/html" ); let bytes = srv.block_on(response.body()).unwrap(); assert_eq!( bytes, Bytes::from_static( "\ \ Actix web\ \

Hi, foo bar!

Welcome

\ " .as_ref() ) ); let req = srv.get("/?name=foo"); let mut response = srv.block_on(req.send()).unwrap(); assert!(response.status().is_server_error()); let req = srv.get("/?lastname=bar"); let mut response = srv.block_on(req.send()).unwrap(); assert!(response.status().is_success()); assert_eq!( response.headers().get(http::header::CONTENT_TYPE).unwrap(), "text/html" ); let bytes = srv.block_on(response.body()).unwrap(); assert_eq!( bytes, Bytes::from_static( "\ \ Actix web\

Welcome!

\

What is your name?

\
\ Name: \
Last name: \

\
\ " .as_ref() ) ); } }