use actix_http::StatusCode; use actix_web::{middleware, web, App}; use env_logger::Env; use lilgit::{self, UserConfig}; use std::collections::HashMap; use std::sync::Mutex; #[actix_rt::test] async fn test_index_redirects_when_single_user() { let mut users = HashMap::new(); let mut repos = HashMap::new(); repos.insert( String::from("lilgit"), lilgit::RepoConfig { description: String::from("lilgit self-hosted git service"), clone_with: Some(String::from("")), }, ); let user = UserConfig { repos }; users.insert( std::env::var("LILGIT_TEST_USER").expect("must set LILGIT_TEST_USER to run tests"), user, ); let config = lilgit::Config { users, repos_dir: std::env::var("LILGIT_TEST_DIR").expect("must set LILGIT_TEST_DIR to run tests"), folder_depth: 4, }; let app_data = web::Data::new(lilgit::AppState { config, line_counts: Mutex::new(HashMap::new()), }); env_logger::init_from_env(Env::default().default_filter_or("info")); let srv = actix_test::start(move || { App::new() .wrap(middleware::NormalizePath::trim()) .wrap(middleware::Compress::default()) .wrap(middleware::Logger::default()) .app_data(app_data.clone()) .service(lilgit::get_index) .service(lilgit::user::get_repos) }); let req = srv.get("/"); let res = req.send().await.unwrap(); assert_eq!(res.status(), StatusCode::OK); }