add init_rocket test wrapper

This commit is contained in:
glyph 2021-11-25 11:33:09 +02:00
parent 5c4ef4a529
commit d760f9f92c
1 changed files with 63 additions and 103 deletions

View File

@ -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<Build> {
// 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<T>(path: &str, file: T, status: Status)
where
T: Into<Option<&'static str>>,
{
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<u8> {
#[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