diff --git a/peach-web/src/tests.rs b/peach-web/src/tests.rs index 0b76f926..e95c794c 100644 --- a/peach-web/src/tests.rs +++ b/peach-web/src/tests.rs @@ -1,18 +1,24 @@ -use std::env; use std::fs::File; use std::io::Read; use rocket::http::{ContentType, Status}; use rocket::local::blocking::Client; use rocket::serde::json::{json, Value}; +use rocket::{Build, Config, Rocket}; use crate::utils::build_json_response; use super::init_rocket; -// helper function to disable authentication -fn disable_auth() { - env::set_var("DISABLE_ROCKET_AUTH", "true") +// define authentication mode +const DISABLE_AUTH: bool = true; + +/// Wrapper around `init_rocket()` to simplify the process of invoking the application with the desired authentication status. This is particularly useful for testing purposes. +fn init_test_rocket(disable_auth: bool) -> Rocket { + // set authentication based on provided `disable_auth` value + Config::figment().merge(("disable_auth", disable_auth)); + + init_rocket() } // helper function to test correct retrieval and content of a file @@ -20,7 +26,7 @@ fn test_query_file(path: &str, file: T, status: Status) where T: Into>, { - let client = Client::tracked(init_rocket()).unwrap(); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).unwrap(); let response = client.get(path).dispatch(); assert_eq!(response.status(), status); @@ -45,8 +51,7 @@ fn read_file_content(path: &str) -> Vec { #[test] fn index_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -61,8 +66,7 @@ fn index_html() { #[test] fn help_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/help").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -72,7 +76,7 @@ fn help_html() { #[test] fn login_html() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/login").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -82,7 +86,7 @@ fn login_html() { #[test] fn logout_html() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/logout").dispatch(); // check for 303 status (redirect to "/login") assert_eq!(response.status(), Status::SeeOther); @@ -91,8 +95,7 @@ fn logout_html() { #[test] fn power_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/power").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -106,7 +109,7 @@ NOTE: these tests are comment-out for the moment, due to the fact that they invo #[test] fn reboot() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/power/reboot").dispatch(); // check for redirect assert_eq!(response.status(), Status::SeeOther); @@ -114,7 +117,7 @@ fn reboot() { #[test] fn shutdown() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/power/shutdown").dispatch(); // check for redirect assert_eq!(response.status(), Status::SeeOther); @@ -125,8 +128,7 @@ fn shutdown() { #[test] fn block() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/scuttlebutt/block") .header(ContentType::Form) @@ -137,8 +139,7 @@ fn block() { #[test] fn blocks_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/scuttlebutt/blocks").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -148,8 +149,7 @@ fn blocks_html() { #[test] fn follow() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/scuttlebutt/follow") .header(ContentType::Form) @@ -161,8 +161,7 @@ fn follow() { #[test] fn follows_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/scuttlebutt/follows").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -172,8 +171,7 @@ fn follows_html() { #[test] fn followers_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/scuttlebutt/followers").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -183,8 +181,7 @@ fn followers_html() { #[test] fn friends_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/scuttlebutt/friends").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -194,8 +191,7 @@ fn friends_html() { #[test] fn peers_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/scuttlebutt/peers").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -205,8 +201,7 @@ fn peers_html() { #[test] fn private_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/scuttlebutt/private").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -216,8 +211,7 @@ fn private_html() { #[test] fn profile_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/scuttlebutt/profile").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -227,8 +221,7 @@ fn profile_html() { #[test] fn publish_post() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/scuttlebutt/publish") .header(ContentType::Form) @@ -239,8 +232,7 @@ fn publish_post() { #[test] fn unfollow() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/scuttlebutt/unfollow") .header(ContentType::Form) @@ -253,8 +245,7 @@ fn unfollow() { #[test] fn admin_settings_menu_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/admin").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -266,8 +257,7 @@ fn admin_settings_menu_html() { #[test] fn add_admin_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/admin/add").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -280,8 +270,7 @@ fn add_admin_html() { #[test] fn add_admin() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/settings/admin/add") .header(ContentType::Form) @@ -293,8 +282,7 @@ fn add_admin() { #[test] fn change_password_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/admin/change_password").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -308,8 +296,7 @@ fn change_password_html() { #[test] fn configure_admin_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/admin/configure").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -321,7 +308,7 @@ fn configure_admin_html() { #[test] fn forgot_password_html() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/admin/forgot_password").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -333,8 +320,7 @@ fn forgot_password_html() { #[test] fn network_settings_menu_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -344,8 +330,7 @@ fn network_settings_menu_html() { #[test] fn deploy_ap() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network/ap/activate").dispatch(); // check for 303 status (redirect) assert_eq!(response.status(), Status::SeeOther); @@ -354,8 +339,7 @@ fn deploy_ap() { #[test] fn dns_settings_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network/dns").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -369,8 +353,7 @@ fn dns_settings_html() { #[test] fn list_aps_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network/wifi").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -382,8 +365,7 @@ fn list_aps_html() { // TODO: needs further testing once template has been refactored #[test] fn ap_details_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network/wifi?ssid=Home").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -393,8 +375,7 @@ fn ap_details_html() { #[test] fn deploy_client() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network/wifi/activate").dispatch(); // check for 303 status (redirect) assert_eq!(response.status(), Status::SeeOther); @@ -403,8 +384,7 @@ fn deploy_client() { #[test] fn add_ap_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network/wifi/add").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -418,8 +398,7 @@ fn add_ap_html() { #[test] fn add_ap_ssid_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/settings/network/wifi/add?ssid=Home") .dispatch(); @@ -435,8 +414,7 @@ fn add_ap_ssid_html() { #[test] fn add_credentials() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/settings/network/wifi/add") .header(ContentType::Form) @@ -448,8 +426,7 @@ fn add_credentials() { #[test] fn forget_wifi() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/settings/network/wifi/forget") .header(ContentType::Form) @@ -461,8 +438,7 @@ fn forget_wifi() { #[test] fn modify_password() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/settings/network/wifi/modify") .header(ContentType::Form) @@ -474,8 +450,7 @@ fn modify_password() { #[test] fn data_usage_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/network/wifi/usage").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -490,8 +465,7 @@ fn data_usage_html() { #[test] fn scuttlebutt_settings_menu_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/settings/scuttlebutt").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -510,8 +484,7 @@ fn scuttlebutt_settings_menu_html() { #[test] fn status_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/status").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -524,8 +497,7 @@ fn status_html() { #[test] fn network_status_html() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client.get("/status/network").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); @@ -542,8 +514,7 @@ fn network_status_html() { #[test] fn activate_ap() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/api/v1/network/activate_ap") .header(ContentType::JSON) @@ -554,8 +525,7 @@ fn activate_ap() { #[test] fn activate_client() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/api/v1/network/activate_client") .header(ContentType::JSON) @@ -566,8 +536,7 @@ fn activate_client() { #[test] fn return_ip() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/api/v1/network/ip") .header(ContentType::JSON) @@ -581,8 +550,7 @@ fn return_ip() { #[test] fn return_rssi() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/api/v1/network/rssi") .header(ContentType::JSON) @@ -595,8 +563,7 @@ fn return_rssi() { #[test] fn return_ssid() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/api/v1/network/ssid") .header(ContentType::JSON) @@ -609,8 +576,7 @@ fn return_ssid() { #[test] fn return_state() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/api/v1/network/state") .header(ContentType::JSON) @@ -625,8 +591,7 @@ fn return_state() { #[test] fn return_status() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/api/v1/network/status") .header(ContentType::JSON) @@ -639,8 +604,7 @@ fn return_status() { #[test] fn scan_networks() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/api/v1/network/wifi") .header(ContentType::JSON) @@ -653,8 +617,7 @@ fn scan_networks() { #[test] fn add_wifi() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/api/v1/network/wifi") .header(ContentType::JSON) @@ -668,8 +631,7 @@ fn add_wifi() { #[test] fn remove_wifi() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/api/v1/network/wifi/forget") .header(ContentType::JSON) @@ -683,8 +645,7 @@ fn remove_wifi() { #[test] fn new_password() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .post("/api/v1/network/wifi/modify") .header(ContentType::JSON) @@ -698,8 +659,7 @@ fn new_password() { #[test] fn ping_pong() { - disable_auth(); - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).expect("valid rocket instance"); let response = client .get("/api/v1/ping") .header(ContentType::JSON) @@ -761,7 +721,7 @@ fn invalid_path() { #[test] fn invalid_get_request() { - let client = Client::tracked(init_rocket()).unwrap(); + let client = Client::tracked(init_test_rocket(DISABLE_AUTH)).unwrap(); // try to get a path that doesn't exist let res = client