ws::start(WsRev {}, &req, stream)
}
-#[actix_web::main]
-async fn main() -> std::io::Result<()> {
- env_logger::init_from_env(env_logger::Env::default().default_filter_or("info"));
-
- HttpServer::new(|| {
+// App is a template soup, too hard as a proper function
+macro_rules! get_app {
+ () => {
App::new()
.service(hello)
.service(static_file)
.service(Files::new("/dir", "../static"))
.service(ws_echo)
.service(ws_rev)
+ }
+}
+
+#[actix_web::main]
+async fn main() -> std::io::Result<()> {
+ env_logger::init_from_env(env_logger::Env::default().default_filter_or("info"));
+
+ HttpServer::new(|| {
+ get_app!()
.wrap(Logger::default())
})
.bind(("127.0.0.1", 3030))?
use actix_web::{App, body, test, web};
use actix_web::http::{header, StatusCode};
use actix_web_actors::ws;
+ use actix_files::Files;
use futures_util::sink::SinkExt;
use futures_util::StreamExt;
#[actix_web::test]
async fn test_hello() {
- // FIXME: duplicating the .service() call from main() here is super ugly, but it's hard to move that into a fn
- let app = test::init_service(App::new().service(hello)).await;
+ let app = test::init_service(get_app!()).await;
// no user-agent
let req = test::TestRequest::get().uri("/hello/rust").to_request();
#[actix_web::test]
async fn test_static_dir() {
- // FIXME: duplicating the .service() call from main() here is super ugly, but it's hard to move that into a fn
- let app = test::init_service(App::new().service(actix_files::Files::new("/dir", "../static"))).await;
+ let app = test::init_service(get_app!()).await;
let req = test::TestRequest::get().uri("/dir/plain.txt").to_request();
let res = test::call_service(&app, req).await;
#[actix_web::test]
async fn test_static_file() {
- // FIXME: duplicating the .service() call from main() here is super ugly, but it's hard to move that into a fn
- let app = test::init_service(App::new().service(static_file)).await;
+ let app = test::init_service(get_app!()).await;
// uncompressed
let req = test::TestRequest::get().uri("/file/dir1/optzip.txt").to_request();
#[actix_web::test]
async fn test_ws_echo() {
- // FIXME: duplicating the .service() call from main() here is super ugly, but it's hard to move that into a fn
- let mut srv = actix_test::start(|| App::new().service(ws_echo));
+ let mut srv = actix_test::start(|| get_app!());
let mut client = srv.ws_at("/ws-echo").await.unwrap();
// text echo
#[actix_web::test]
async fn test_ws_rev() {
- // FIXME: duplicating the .service() call from main() here is super ugly, but it's hard to move that into a fn
- let mut srv = actix_test::start(|| App::new().service(ws_rev));
+ let mut srv = actix_test::start(|| get_app!());
let mut client = srv.ws_at("/ws-rev").await.unwrap();
// text reversed