2021-08-06 17:58:40 +00:00
|
|
|
use std::fs::File;
|
|
|
|
use std::io::Read;
|
|
|
|
|
|
|
|
use rocket::http::{ContentType, Status};
|
2021-11-04 21:30:29 +00:00
|
|
|
use rocket::local::blocking::Client;
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-11-04 21:39:40 +00:00
|
|
|
|
|
|
|
|
2021-10-28 12:35:00 +00:00
|
|
|
|
2021-11-04 21:30:29 +00:00
|
|
|
use super::init_rocket;
|
2021-08-06 17:58:40 +00:00
|
|
|
|
|
|
|
// 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>>,
|
|
|
|
{
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).unwrap();
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get(path).dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), status);
|
|
|
|
|
2021-11-04 21:30:29 +00:00
|
|
|
let body_data = response.into_bytes();
|
2021-08-06 17:58:40 +00:00
|
|
|
if let Some(filename) = file.into() {
|
|
|
|
let expected_data = read_file_content(filename);
|
|
|
|
assert!(body_data.map_or(false, |s| s == expected_data));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// helper function to return the content of a file, given a path
|
|
|
|
fn read_file_content(path: &str) -> Vec<u8> {
|
|
|
|
let mut fp = File::open(&path).expect(&format!("Can't open {}", path));
|
|
|
|
let mut file_content = vec![];
|
|
|
|
|
|
|
|
fp.read_to_end(&mut file_content)
|
|
|
|
.expect(&format!("Reading {} failed.", path));
|
|
|
|
file_content
|
|
|
|
}
|
|
|
|
|
|
|
|
// WEB PAGE ROUTES
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn index_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("/peers"));
|
|
|
|
assert!(body.contains("/profile"));
|
|
|
|
assert!(body.contains("/messages"));
|
|
|
|
assert!(body.contains("/device"));
|
|
|
|
assert!(body.contains("/help"));
|
|
|
|
assert!(body.contains("/network"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn network_card_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/network").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("MODE"));
|
|
|
|
assert!(body.contains("SSID"));
|
|
|
|
assert!(body.contains("IP"));
|
|
|
|
assert!(body.contains("Add WiFi Network"));
|
|
|
|
assert!(body.contains("Deploy Access Point"));
|
|
|
|
assert!(body.contains("List WiFi Networks"));
|
|
|
|
assert!(body.contains("SIGNAL"));
|
|
|
|
assert!(body.contains("DOWNLOAD"));
|
|
|
|
assert!(body.contains("UPLOAD"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn network_list_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/network/wifi").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("WiFi Networks"));
|
|
|
|
assert!(body.contains("No saved or available networks found."));
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: needs further testing once template has been refactored
|
|
|
|
#[test]
|
|
|
|
fn network_detail_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client.get("/network/wifi?ssid=Home").dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
//let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
//assert!(body.contains("Network not found"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn network_add_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/network/wifi/add").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Add WiFi Network"));
|
|
|
|
assert!(body.contains("SSID"));
|
|
|
|
assert!(body.contains("Password"));
|
|
|
|
assert!(body.contains("Add"));
|
|
|
|
assert!(body.contains("Cancel"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn network_add_ssid_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/network/wifi/add?ssid=Home").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Add WiFi Network"));
|
|
|
|
assert!(body.contains("Home"));
|
|
|
|
assert!(body.contains("Password"));
|
|
|
|
assert!(body.contains("Add"));
|
|
|
|
assert!(body.contains("Cancel"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn device_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/device").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Device Status"));
|
|
|
|
assert!(body.contains("Networking"));
|
|
|
|
assert!(body.contains("Display"));
|
|
|
|
assert!(body.contains("Statistics"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn help_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/help").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Help"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn login_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/login").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Login"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn messages_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/messages").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Private Messages"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn peers_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/peers").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Scuttlebutt Peers"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn profile_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/profile").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Profile"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn shutdown_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/shutdown").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Shutdown Device"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn network_usage_html() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client.get("/network/wifi/usage").dispatch();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Network Data Usage"));
|
|
|
|
assert!(body.contains("WARNING THRESHOLD"));
|
|
|
|
assert!(body.contains("Update"));
|
|
|
|
assert!(body.contains("Cancel"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn add_credentials() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client
|
|
|
|
.post("/network/wifi/add")
|
|
|
|
.header(ContentType::Form)
|
|
|
|
.body("ssid=Home&pass=Password")
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn forget_wifi() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client
|
|
|
|
.post("/network/wifi/forget")
|
|
|
|
.header(ContentType::Form)
|
|
|
|
.body("ssid=Home")
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::SeeOther);
|
|
|
|
assert_eq!(response.content_type(), None);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn modify_password() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client
|
|
|
|
.post("/network/wifi/modify")
|
|
|
|
.header(ContentType::Form)
|
|
|
|
.body("ssid=Home&pass=Password")
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::SeeOther);
|
|
|
|
assert_eq!(response.content_type(), None);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deploy_ap() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client.get("/network/ap/activate").dispatch();
|
|
|
|
// check for 303 status (redirect)
|
|
|
|
assert_eq!(response.status(), Status::SeeOther);
|
|
|
|
assert_eq!(response.content_type(), None);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deploy_client() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client.get("/network/wifi/activate").dispatch();
|
|
|
|
// check for 303 status (redirect)
|
|
|
|
assert_eq!(response.status(), Status::SeeOther);
|
|
|
|
assert_eq!(response.content_type(), None);
|
|
|
|
}
|
|
|
|
|
|
|
|
// JSON API ROUTES
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn activate_ap() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client
|
|
|
|
.post("/api/v1/network/activate_ap")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn activate_client() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-08-06 17:58:40 +00:00
|
|
|
let response = client
|
|
|
|
.post("/api/v1/network/activate_client")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn return_ip() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/api/v1/network/ip")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("wlan0"));
|
|
|
|
assert!(body.contains("ap0"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn return_rssi() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/api/v1/network/rssi")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Not currently connected to an access point."));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn return_ssid() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/api/v1/network/ssid")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Not currently connected to an access point."));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn return_state() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/api/v1/network/state")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("ap0"));
|
|
|
|
assert!(body.contains("wlan0"));
|
|
|
|
assert!(body.contains("unavailable"));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn return_status() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/api/v1/network/status")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Not currently connected to an access point."));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn scan_networks() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/api/v1/network/wifi")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Unable to scan for networks. Interface may be deactivated."));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn add_wifi() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.post("/api/v1/network/wifi")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.body(r#"{ "ssid": "Home", "pass": "Password" }"#)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Failed to add WiFi credentials."));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn remove_wifi() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.post("/api/v1/network/wifi/forget")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.body(r#"{ "ssid": "Home" }"#)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Failed to remove WiFi network credentials."));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn new_password() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.post("/api/v1/network/wifi/modify")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.body(r#"{ "ssid": "Home", "pass": "Password" }"#)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("Failed to update WiFi password."));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn ping_pong() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).expect("valid rocket instance");
|
2021-11-04 21:39:40 +00:00
|
|
|
let response = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/api/v1/ping")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(response.status(), Status::Ok);
|
|
|
|
assert_eq!(response.content_type(), Some(ContentType::JSON));
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = response.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("pong!"));
|
|
|
|
}
|
|
|
|
|
|
|
|
// HELPER FUNCTION TESTS
|
|
|
|
|
2021-11-04 21:30:29 +00:00
|
|
|
//#[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);
|
|
|
|
//}
|
2021-08-06 17:58:40 +00:00
|
|
|
|
|
|
|
// FILE TESTS
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn nested_file() {
|
|
|
|
test_query_file(
|
|
|
|
"/images/placeholder.txt",
|
|
|
|
"static/images/placeholder.txt",
|
|
|
|
Status::Ok,
|
|
|
|
);
|
|
|
|
test_query_file(
|
|
|
|
"/images/placeholder.txt?v=1",
|
|
|
|
"static/images/placeholder.txt",
|
|
|
|
Status::Ok,
|
|
|
|
);
|
|
|
|
test_query_file(
|
|
|
|
"/images/placeholder.txt?v=1&a=b",
|
|
|
|
"static/images/placeholder.txt",
|
|
|
|
Status::Ok,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn icon_file() {
|
|
|
|
test_query_file(
|
|
|
|
"/icons/peach-icon.png",
|
|
|
|
"static/icons/peach-icon.png",
|
|
|
|
Status::Ok,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn invalid_path() {
|
|
|
|
test_query_file("/thou_shalt_not_exist", None, Status::NotFound);
|
|
|
|
test_query_file("/thou_shalt_not_exist", None, Status::NotFound);
|
|
|
|
test_query_file("/thou/shalt/not/exist?a=b&c=d", None, Status::NotFound);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn invalid_get_request() {
|
2021-11-04 21:30:29 +00:00
|
|
|
let client = Client::tracked(init_rocket()).unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
|
|
|
|
// try to get a path that doesn't exist
|
2021-11-04 21:39:40 +00:00
|
|
|
let res = client
|
2021-08-06 17:58:40 +00:00
|
|
|
.get("/message/99")
|
|
|
|
.header(ContentType::JSON)
|
|
|
|
.dispatch();
|
|
|
|
assert_eq!(res.status(), Status::NotFound);
|
|
|
|
|
2021-11-04 21:30:29 +00:00
|
|
|
let body = res.into_string().unwrap();
|
2021-08-06 17:58:40 +00:00
|
|
|
assert!(body.contains("404: Page Not Found"));
|
|
|
|
assert!(body.contains("No PeachCloud resource exists for this URL."));
|
|
|
|
}
|