From 0b2b346bfc891adc51090379a570ef76bec9e324 Mon Sep 17 00:00:00 2001 From: glyph Date: Wed, 17 Nov 2021 11:40:02 +0200 Subject: [PATCH] add test and reorder existing tests --- peach-web/src/tests.rs | 521 +++++++++++++++++++++++++++-------------- 1 file changed, 340 insertions(+), 181 deletions(-) diff --git a/peach-web/src/tests.rs b/peach-web/src/tests.rs index 18365cc4..712fa38b 100644 --- a/peach-web/src/tests.rs +++ b/peach-web/src/tests.rs @@ -52,6 +52,260 @@ fn index_html() { assert!(body.contains("/settings")); } +#[test] +fn help_html() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/help").dispatch(); + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::HTML)); + let body = response.into_string().unwrap(); + assert!(body.contains("Help")); +} + +#[test] +fn login_html() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/login").dispatch(); + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::HTML)); + let body = response.into_string().unwrap(); + assert!(body.contains("Login")); +} + +#[test] +fn logout_html() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/logout").dispatch(); + // check for 303 status (redirect to "/login") + assert_eq!(response.status(), Status::SeeOther); + assert_eq!(response.content_type(), None); +} + +#[test] +fn power_html() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/power").dispatch(); + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::HTML)); + let body = response.into_string().unwrap(); + assert!(body.contains("Shutdown Device")); +} + +/* + +NOTE: these tests are comment-out for the moment, due to the fact that they invoke system commands (resulting in a `sudo` password request during test execution). see if we can find a way to test the results without triggering the shutdown or restart. + +#[test] +fn reboot() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/power/reboot").dispatch(); + // check for redirect + assert_eq!(response.status(), Status::SeeOther); +} + +#[test] +fn shutdown() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/power/shutdown").dispatch(); + // check for redirect + assert_eq!(response.status(), Status::SeeOther); +} +*/ + +// SCUTTLEBUTT ROUTES + +#[test] +fn block() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client + .post("/scuttlebutt/block") + .header(ContentType::Form) + .body("key=HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519") + .dispatch(); + assert_eq!(response.status(), Status::SeeOther); +} + +#[test] +fn blocks_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Blocks")); +} + +#[test] +fn follow() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client + .post("/scuttlebutt/follow") + .header(ContentType::Form) + .body("key=@HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519") + .dispatch(); + // ensure we redirect (303) + assert_eq!(response.status(), Status::SeeOther); +} + +#[test] +fn follows_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Follows")); +} + +#[test] +fn followers_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Followers")); +} + +#[test] +fn friends_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Friends")); +} + +#[test] +fn peers_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Scuttlebutt Peers")); +} + +#[test] +fn private_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Private Messages")); +} + +#[test] +fn profile_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Profile")); +} + +#[test] +fn publish_post() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client + .post("/scuttlebutt/publish") + .header(ContentType::Form) + .body("text='golden ripples in the meshwork'") + .dispatch(); + assert_eq!(response.status(), Status::SeeOther); +} + +#[test] +fn unfollow() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client + .post("/scuttlebutt/unfollow") + .header(ContentType::Form) + .body("key=@HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519") + .dispatch(); + assert_eq!(response.status(), Status::SeeOther); +} + +// ADMIN SETTINGS ROUTES + +#[test] +fn admin_settings_menu_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Administrator Settings")); + assert!(body.contains("Change Password")); + assert!(body.contains("Configure Admin")); +} + +#[test] +fn add_admin_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Add Admin")); + assert!(body.contains("SSB ID")); + assert!(body.contains("Add")); + assert!(body.contains("Cancel")); +} + +#[test] +fn add_admin() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client + .post("/settings/admin/add") + .header(ContentType::Form) + .body("ssb_id=@HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519") + .dispatch(); + // check for redirect + assert_eq!(response.status(), Status::SeeOther); +} + +#[test] +fn change_password_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Change Password")); + assert!(body.contains("Old Password")); + assert!(body.contains("Enter New Password")); + assert!(body.contains("Re-Enter New Password")); + assert!(body.contains("Save")); +} + +#[test] +fn configure_admin_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Configure Admin")); + assert!(body.contains("Current Admins")); + assert!(body.contains("Add Admin")); +} + +#[test] +fn forgot_password_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Send Password Reset")); +} + +// NETWORK SETTINGS ROUTES + #[test] fn network_settings_menu_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); @@ -62,6 +316,29 @@ fn network_settings_menu_html() { assert!(body.contains("Network Configuration")); } +#[test] +fn deploy_ap() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/settings/network/ap/activate").dispatch(); + // check for 303 status (redirect) + assert_eq!(response.status(), Status::SeeOther); + assert_eq!(response.content_type(), None); +} + +#[test] +fn dns_settings_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Configure DNS")); + assert!(body.contains("External Domain (optional)")); + assert!(body.contains("Enable Dynamic DNS")); + assert!(body.contains("Dynamic DNS Domain")); + assert!(body.contains("Save")); +} + #[test] fn list_aps_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); @@ -84,6 +361,15 @@ fn ap_details_html() { //assert!(body.contains("Network not found")); } +#[test] +fn deploy_client() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/settings/network/wifi/activate").dispatch(); + // check for 303 status (redirect) + assert_eq!(response.status(), Status::SeeOther); + assert_eq!(response.content_type(), None); +} + #[test] fn add_ap_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); @@ -114,177 +400,6 @@ fn add_ap_ssid_html() { assert!(body.contains("Cancel")); } -#[test] -fn status_html() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client.get("/status").dispatch(); - assert_eq!(response.status(), Status::Ok); - assert_eq!(response.content_type(), Some(ContentType::HTML)); - let body = response.into_string().unwrap(); - assert!(body.contains("Device Status")); - assert!(body.contains("Networking")); - assert!(body.contains("Display")); - assert!(body.contains("Statistics")); -} - -#[test] -fn help_html() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client.get("/help").dispatch(); - assert_eq!(response.status(), Status::Ok); - assert_eq!(response.content_type(), Some(ContentType::HTML)); - let body = response.into_string().unwrap(); - assert!(body.contains("Help")); -} - -#[test] -fn login_html() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client.get("/login").dispatch(); - assert_eq!(response.status(), Status::Ok); - assert_eq!(response.content_type(), Some(ContentType::HTML)); - let body = response.into_string().unwrap(); - assert!(body.contains("Login")); -} - -#[test] -fn private_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Private Messages")); -} - -#[test] -fn peers_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Scuttlebutt Peers")); -} - -#[test] -fn friends_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Friends")); -} - -#[test] -fn follows_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Follows")); -} - -#[test] -fn followers_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Followers")); -} - -#[test] -fn block_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Blocks")); -} - -#[test] -fn follow() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client - .post("/scuttlebutt/follow") - .header(ContentType::Form) - .body("key=@HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519") - .dispatch(); - // ensure we redirect (303) - assert_eq!(response.status(), Status::SeeOther); -} - -#[test] -fn unfollow() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client - .post("/scuttlebutt/unfollow") - .header(ContentType::Form) - .body("key=@HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519") - .dispatch(); - assert_eq!(response.status(), Status::SeeOther); -} - -#[test] -fn block() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client - .post("/scuttlebutt/block") - .header(ContentType::Form) - .body("key=HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519") - .dispatch(); - assert_eq!(response.status(), Status::SeeOther); -} - -#[test] -fn publish_post() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client - .post("/scuttlebutt/publish") - .header(ContentType::Form) - .body("text='golden ripples in the meshwork'") - .dispatch(); - assert_eq!(response.status(), Status::SeeOther); -} - -#[test] -fn profile_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Profile")); -} - -#[test] -fn power_html() { - let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client.get("/power").dispatch(); - assert_eq!(response.status(), Status::Ok); - assert_eq!(response.content_type(), Some(ContentType::HTML)); - let body = response.into_string().unwrap(); - assert!(body.contains("Shutdown Device")); -} - -#[test] -fn data_usage_html() { - let client = Client::tracked(init_rocket()).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)); - let body = response.into_string().unwrap(); - assert!(body.contains("Network Data Usage")); - assert!(body.contains("WARNING THRESHOLD")); - assert!(body.contains("Update")); - assert!(body.contains("Cancel")); -} - #[test] fn add_credentials() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); @@ -322,21 +437,65 @@ fn modify_password() { } #[test] -fn deploy_ap() { +fn data_usage_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client.get("/settings/network/ap/activate").dispatch(); - // check for 303 status (redirect) - assert_eq!(response.status(), Status::SeeOther); - assert_eq!(response.content_type(), None); + let response = client.get("/settings/network/wifi/usage").dispatch(); + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::HTML)); + let body = response.into_string().unwrap(); + assert!(body.contains("Network Data Usage")); + assert!(body.contains("WARNING THRESHOLD")); + assert!(body.contains("Update")); + assert!(body.contains("Cancel")); +} + +// SCUTTLEBUTT SETTINGS HTML ROUTES + +#[test] +fn scuttlebutt_settings_menu_html() { + let client = Client::tracked(init_rocket()).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)); + let body = response.into_string().unwrap(); + assert!(body.contains("Scuttlebutt Settings")); + assert!(body.contains("Set Network Key")); + assert!(body.contains("Set Replication Hops")); + assert!(body.contains("Remove Blocked Feeds")); + assert!(body.contains("Set Database Directory")); + assert!(body.contains("Check Filesystem")); + assert!(body.contains("Repair Filesystem")); + assert!(body.contains("Restart Sbot")); +} + +// STATUS HTML ROUTES + +#[test] +fn status_html() { + let client = Client::tracked(init_rocket()).expect("valid rocket instance"); + let response = client.get("/status").dispatch(); + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::HTML)); + let body = response.into_string().unwrap(); + assert!(body.contains("Device Status")); + assert!(body.contains("Networking")); + assert!(body.contains("Display")); + assert!(body.contains("Statistics")); } #[test] -fn deploy_client() { +fn network_status_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let response = client.get("/settings/network/wifi/activate").dispatch(); - // check for 303 status (redirect) - assert_eq!(response.status(), Status::SeeOther); - assert_eq!(response.content_type(), None); + let response = client.get("/status/network").dispatch(); + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::HTML)); + let body = response.into_string().unwrap(); + assert!(body.contains("Network Status")); + assert!(body.contains("Mode")); + assert!(body.contains("SSID")); + assert!(body.contains("IP")); + assert!(body.contains("DOWNLOAD")); + assert!(body.contains("UPLOAD")); } // JSON API ROUTES