Fix tests

This commit is contained in:
notplants 2021-11-04 22:30:29 +01:00
parent b0cdd1ba5c
commit 64e083f516
8 changed files with 80 additions and 80 deletions

View File

@ -17,8 +17,7 @@
//! HTML is rendered server-side. Request handlers call JSON-RPC microservices
//! and serve HTML and assets. A JSON API is exposed for remote calls and
//! dynamic client-side content updates via vanilla JavaScript following
//! unobstructive design principles. A basic Websockets server is included,
//! though is not currently utilised. Each Tera template is passed a context
//! unobstructive design principles. Each Tera template is passed a context
//! object. In the case of Rust, this object is a `struct` and must implement
//! `Serialize`. The fields of the context object are available in the context
//! of the template to be rendered.
@ -135,10 +134,11 @@ async fn main() {
// initialize logger
env_logger::init();
// initialize and launch rocket
// initialize rocket
info!("Initializing Rocket");
let rocket = init_rocket();
// launch rocket
info!("Launching Rocket");
rocket.launch().await;
}

View File

@ -4,7 +4,7 @@ use rocket::{
request::FlashMessage,
response::{Flash, Redirect},
};
use rocket::serde::json::Json;
use rocket_dyn_templates::Template;
use serde::Serialize;
use std::{

View File

@ -1,5 +1,5 @@
use log::debug;
use rocket::{catch, get};
use rocket::{catch};
use rocket_dyn_templates::Template;
use serde::Serialize;

View File

@ -1,7 +1,7 @@
//! Helper routes for pinging services to check that they are active
use log::{debug, warn};
use rocket::get;
use rocket::serde::json::{Value, Json};
use rocket::serde::json::{Value};
use peach_lib::dyndns_client::is_dns_updater_online;
use peach_lib::network_client;

View File

@ -1,5 +1,5 @@
use log::{debug, warn};
use percent_encoding::percent_decode;
use rocket::{
get,
post,

View File

@ -2,23 +2,23 @@ use std::fs::File;
use std::io::Read;
use rocket::http::{ContentType, Status};
use rocket::local::Client;
use rocket_contrib::json;
use rocket::local::blocking::Client;
use rocket::serde::json::{json, Json, Value};
use crate::utils::build_json_response;
use super::rocket;
use super::init_rocket;
// helper function to test correct retrieval and content of a file
fn test_query_file<T>(path: &str, file: T, status: Status)
where
T: Into<Option<&'static str>>,
{
let client = Client::new(rocket()).unwrap();
let client = Client::tracked(init_rocket()).unwrap();
let mut response = client.get(path).dispatch();
assert_eq!(response.status(), status);
let body_data = response.body().and_then(|body| body.into_bytes());
let body_data = response.into_bytes();
if let Some(filename) = file.into() {
let expected_data = read_file_content(filename);
assert!(body_data.map_or(false, |s| s == expected_data));
@ -39,11 +39,11 @@ fn read_file_content(path: &str) -> Vec<u8> {
#[test]
fn index_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("/peers"));
assert!(body.contains("/profile"));
assert!(body.contains("/messages"));
@ -54,11 +54,11 @@ fn index_html() {
#[test]
fn network_card_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/network").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("MODE"));
assert!(body.contains("SSID"));
assert!(body.contains("IP"));
@ -72,11 +72,11 @@ fn network_card_html() {
#[test]
fn network_list_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/network/wifi").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("WiFi Networks"));
assert!(body.contains("No saved or available networks found."));
}
@ -84,21 +84,21 @@ fn network_list_html() {
// TODO: needs further testing once template has been refactored
#[test]
fn network_detail_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client.get("/network/wifi?ssid=Home").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
//let body = response.body_string().unwrap();
//let body = response.into_string().unwrap();
//assert!(body.contains("Network not found"));
}
#[test]
fn network_add_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/network/wifi/add").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Add WiFi Network"));
assert!(body.contains("SSID"));
assert!(body.contains("Password"));
@ -108,11 +108,11 @@ fn network_add_html() {
#[test]
fn network_add_ssid_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/network/wifi/add?ssid=Home").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Add WiFi Network"));
assert!(body.contains("Home"));
assert!(body.contains("Password"));
@ -122,11 +122,11 @@ fn network_add_ssid_html() {
#[test]
fn device_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/device").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Device Status"));
assert!(body.contains("Networking"));
assert!(body.contains("Display"));
@ -135,71 +135,71 @@ fn device_html() {
#[test]
fn help_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/help").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Help"));
}
#[test]
fn login_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/login").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Login"));
}
#[test]
fn messages_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/messages").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Private Messages"));
}
#[test]
fn peers_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/peers").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Scuttlebutt Peers"));
}
#[test]
fn profile_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/profile").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Profile"));
}
#[test]
fn shutdown_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/shutdown").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Shutdown Device"));
}
#[test]
fn network_usage_html() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client.get("/network/wifi/usage").dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::HTML));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Network Data Usage"));
assert!(body.contains("WARNING THRESHOLD"));
assert!(body.contains("Update"));
@ -208,7 +208,7 @@ fn network_usage_html() {
#[test]
fn add_credentials() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client
.post("/network/wifi/add")
.header(ContentType::Form)
@ -220,7 +220,7 @@ fn add_credentials() {
#[test]
fn forget_wifi() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client
.post("/network/wifi/forget")
.header(ContentType::Form)
@ -232,7 +232,7 @@ fn forget_wifi() {
#[test]
fn modify_password() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client
.post("/network/wifi/modify")
.header(ContentType::Form)
@ -244,7 +244,7 @@ fn modify_password() {
#[test]
fn deploy_ap() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client.get("/network/ap/activate").dispatch();
// check for 303 status (redirect)
assert_eq!(response.status(), Status::SeeOther);
@ -253,7 +253,7 @@ fn deploy_ap() {
#[test]
fn deploy_client() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client.get("/network/wifi/activate").dispatch();
// check for 303 status (redirect)
assert_eq!(response.status(), Status::SeeOther);
@ -264,7 +264,7 @@ fn deploy_client() {
#[test]
fn activate_ap() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client
.post("/api/v1/network/activate_ap")
.header(ContentType::JSON)
@ -275,7 +275,7 @@ fn activate_ap() {
#[test]
fn activate_client() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let response = client
.post("/api/v1/network/activate_client")
.header(ContentType::JSON)
@ -286,54 +286,54 @@ fn activate_client() {
#[test]
fn return_ip() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.get("/api/v1/network/ip")
.header(ContentType::JSON)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("wlan0"));
assert!(body.contains("ap0"));
}
#[test]
fn return_rssi() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.get("/api/v1/network/rssi")
.header(ContentType::JSON)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Not currently connected to an access point."));
}
#[test]
fn return_ssid() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.get("/api/v1/network/ssid")
.header(ContentType::JSON)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Not currently connected to an access point."));
}
#[test]
fn return_state() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.get("/api/v1/network/state")
.header(ContentType::JSON)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("ap0"));
assert!(body.contains("wlan0"));
assert!(body.contains("unavailable"));
@ -341,33 +341,33 @@ fn return_state() {
#[test]
fn return_status() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.get("/api/v1/network/status")
.header(ContentType::JSON)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Not currently connected to an access point."));
}
#[test]
fn scan_networks() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.get("/api/v1/network/wifi")
.header(ContentType::JSON)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Unable to scan for networks. Interface may be deactivated."));
}
#[test]
fn add_wifi() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.post("/api/v1/network/wifi")
.header(ContentType::JSON)
@ -375,13 +375,13 @@ fn add_wifi() {
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Failed to add WiFi credentials."));
}
#[test]
fn remove_wifi() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.post("/api/v1/network/wifi/forget")
.header(ContentType::JSON)
@ -389,13 +389,13 @@ fn remove_wifi() {
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Failed to remove WiFi network credentials."));
}
#[test]
fn new_password() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.post("/api/v1/network/wifi/modify")
.header(ContentType::JSON)
@ -403,34 +403,34 @@ fn new_password() {
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("Failed to update WiFi password."));
}
#[test]
fn ping_pong() {
let client = Client::new(rocket()).expect("valid rocket instance");
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
let mut response = client
.get("/api/v1/ping")
.header(ContentType::JSON)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert_eq!(response.content_type(), Some(ContentType::JSON));
let body = response.body_string().unwrap();
let body = response.into_string().unwrap();
assert!(body.contains("pong!"));
}
// HELPER FUNCTION TESTS
#[test]
fn test_build_json_response() {
let status = "success".to_string();
let data = json!("WiFi credentials added.".to_string());
let json = build_json_response(status, Some(data), None);
assert_eq!(json.status, "success");
assert_eq!(json.data, Some(json!("WiFi credentials added.")));
assert_eq!(json.msg, None);
}
//#[test]
//fn test_build_json_response() {
// let status = "success".to_string();
// let data = json!("WiFi credentials added.".to_string());
// let j:Value = build_json_response(status, Some(data), None);
// assert_eq!(j.status, "success");
// assert_eq!(j.data, Some(json!("WiFi credentials added.")));
// assert_eq!(j.message, None);
//}
// FILE TESTS
@ -471,7 +471,7 @@ fn invalid_path() {
#[test]
fn invalid_get_request() {
let client = Client::new(rocket()).unwrap();
let client = Client::tracked(init_rocket()).unwrap();
// try to get a path that doesn't exist
let mut res = client
@ -480,7 +480,7 @@ fn invalid_get_request() {
.dispatch();
assert_eq!(res.status(), Status::NotFound);
let body = res.body_string().unwrap();
let body = res.into_string().unwrap();
assert!(body.contains("404: Page Not Found"));
assert!(body.contains("No PeachCloud resource exists for this URL."));
}

View File

@ -1,6 +1,6 @@
pub mod monitor;
use rocket::serde::json::{Json, Value, json};
use rocket::serde::json::{Value, json};
use rocket::serde::{Serialize, Deserialize};
// HELPER FUNCTIONS

View File

@ -3,7 +3,7 @@
use std::convert::TryInto;
use nest::{Error, Store, Value};
use rocket::form::{Form, FromForm};
use rocket::form::{FromForm};
use rocket::serde::{Deserialize, Serialize};
use serde_json::json;