forked from PeachCloud/peach-workspace
Merge pull request 'Add ENV VAR to allow disabling Rocket authentication' (#36) from disable_auth into main
Reviewed-on: PeachCloud/peach-workspace#36
This commit is contained in:
commit
c8d0a2ddf6
|
@ -204,15 +204,6 @@ dependencies = [
|
|||
"safemem",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.13.0"
|
||||
|
@ -473,22 +464,6 @@ dependencies = [
|
|||
"version_check 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.1"
|
||||
|
@ -1339,25 +1314,6 @@ version = "2.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.10.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273"
|
||||
dependencies = [
|
||||
"base64 0.9.3",
|
||||
"httparse",
|
||||
"language-tags",
|
||||
"log 0.3.9",
|
||||
"mime 0.2.6",
|
||||
"num_cpus",
|
||||
"time 0.1.44",
|
||||
"traitobject",
|
||||
"typeable",
|
||||
"unicase 1.4.2",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.11.27"
|
||||
|
@ -1372,7 +1328,7 @@ dependencies = [
|
|||
"iovec",
|
||||
"language-tags",
|
||||
"log 0.4.14",
|
||||
"mime 0.3.16",
|
||||
"mime",
|
||||
"net2",
|
||||
"percent-encoding 1.0.1",
|
||||
"relay",
|
||||
|
@ -1381,7 +1337,7 @@ dependencies = [
|
|||
"tokio-io",
|
||||
"tokio-proto",
|
||||
"tokio-service",
|
||||
"unicase 2.6.0",
|
||||
"unicase",
|
||||
"want 0.0.4",
|
||||
]
|
||||
|
||||
|
@ -1674,7 +1630,7 @@ dependencies = [
|
|||
"jsonrpc-server-utils 11.0.0",
|
||||
"log 0.4.14",
|
||||
"net2",
|
||||
"unicase 2.6.0",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1690,7 +1646,7 @@ dependencies = [
|
|||
"log 0.4.14",
|
||||
"net2",
|
||||
"parking_lot 0.11.2",
|
||||
"unicase 2.6.0",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1734,7 +1690,7 @@ dependencies = [
|
|||
"num_cpus",
|
||||
"tokio 0.1.22",
|
||||
"tokio-codec",
|
||||
"unicase 2.6.0",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1752,7 +1708,7 @@ dependencies = [
|
|||
"tokio 1.13.0",
|
||||
"tokio-stream",
|
||||
"tokio-util",
|
||||
"unicase 2.6.0",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1972,15 +1928,6 @@ dependencies = [
|
|||
"autocfg 1.0.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mime"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0"
|
||||
dependencies = [
|
||||
"log 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mime"
|
||||
version = "0.3.16"
|
||||
|
@ -2119,7 +2066,7 @@ dependencies = [
|
|||
"http 0.2.5",
|
||||
"httparse",
|
||||
"log 0.4.14",
|
||||
"mime 0.3.16",
|
||||
"mime",
|
||||
"spin",
|
||||
"tokio 1.13.0",
|
||||
"tokio-util",
|
||||
|
@ -2127,24 +2074,6 @@ dependencies = [
|
|||
"version_check 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "native-tls"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"libc",
|
||||
"log 0.4.14",
|
||||
"openssl",
|
||||
"openssl-probe",
|
||||
"openssl-sys",
|
||||
"schannel",
|
||||
"security-framework",
|
||||
"security-framework-sys",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nb"
|
||||
version = "0.1.3"
|
||||
|
@ -2409,12 +2338,6 @@ dependencies = [
|
|||
"openssl-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-probe"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-src"
|
||||
version = "300.0.2+3.0.0"
|
||||
|
@ -2691,7 +2614,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "peach-web"
|
||||
version = "0.4.11"
|
||||
version = "0.4.12"
|
||||
dependencies = [
|
||||
"env_logger 0.8.4",
|
||||
"log 0.4.14",
|
||||
|
@ -2706,7 +2629,6 @@ dependencies = [
|
|||
"serde_json",
|
||||
"snafu 0.6.10",
|
||||
"tera",
|
||||
"websocket",
|
||||
"xdg",
|
||||
]
|
||||
|
||||
|
@ -3364,7 +3286,7 @@ dependencies = [
|
|||
"indexmap",
|
||||
"log 0.4.14",
|
||||
"memchr",
|
||||
"mime 0.3.16",
|
||||
"mime",
|
||||
"parking_lot 0.11.2",
|
||||
"pear",
|
||||
"percent-encoding 2.1.0",
|
||||
|
@ -3467,16 +3389,6 @@ dependencies = [
|
|||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scoped-tls"
|
||||
version = "0.1.2"
|
||||
|
@ -3501,29 +3413,6 @@ version = "1.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "2.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"security-framework-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "2.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.1.20"
|
||||
|
@ -4431,17 +4320,6 @@ dependencies = [
|
|||
"tokio-executor",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-tls"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c"
|
||||
dependencies = [
|
||||
"futures 0.1.31",
|
||||
"native-tls",
|
||||
"tokio-io",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-udp"
|
||||
version = "0.1.6"
|
||||
|
@ -4580,12 +4458,6 @@ dependencies = [
|
|||
"tracing-serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "traitobject"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079"
|
||||
|
||||
[[package]]
|
||||
name = "try-lock"
|
||||
version = "0.1.0"
|
||||
|
@ -4608,12 +4480,6 @@ dependencies = [
|
|||
"unchecked-index",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typeable"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887"
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
version = "1.14.0"
|
||||
|
@ -4701,15 +4567,6 @@ dependencies = [
|
|||
"unic-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "1.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33"
|
||||
dependencies = [
|
||||
"version_check 0.1.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "2.6.0"
|
||||
|
@ -4918,47 +4775,6 @@ version = "0.2.78"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc"
|
||||
|
||||
[[package]]
|
||||
name = "websocket"
|
||||
version = "0.26.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "723abe6b75286edc51d8ecabb38a2353f62a9e9b0588998b59111474f1dcd637"
|
||||
dependencies = [
|
||||
"bytes 0.4.12",
|
||||
"futures 0.1.31",
|
||||
"hyper 0.10.16",
|
||||
"native-tls",
|
||||
"rand 0.6.5",
|
||||
"tokio-codec",
|
||||
"tokio-io",
|
||||
"tokio-reactor",
|
||||
"tokio-tcp",
|
||||
"tokio-tls",
|
||||
"unicase 1.4.2",
|
||||
"url",
|
||||
"websocket-base",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "websocket-base"
|
||||
version = "0.26.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "403f3fd505ff930da84156389639932955fb09705b3dccd1a3d60c8e7ff62776"
|
||||
dependencies = [
|
||||
"base64 0.10.1",
|
||||
"bitflags 1.3.2",
|
||||
"byteorder",
|
||||
"bytes 0.4.12",
|
||||
"futures 0.1.31",
|
||||
"native-tls",
|
||||
"rand 0.6.5",
|
||||
"sha-1",
|
||||
"tokio-codec",
|
||||
"tokio-io",
|
||||
"tokio-tcp",
|
||||
"tokio-tls",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.2.8"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "peach-web"
|
||||
version = "0.4.11"
|
||||
version = "0.4.12"
|
||||
authors = ["Andrew Reid <gnomad@cryptolab.net>"]
|
||||
edition = "2018"
|
||||
description = "peach-web is a web application which provides a web interface for monitoring and interacting with the PeachCloud device. This allows administration of the single-board computer (ie. Raspberry Pi) running PeachCloud, as well as the ssb-server and related plugins."
|
||||
|
@ -38,17 +38,16 @@ maintenance = { status = "actively-developed" }
|
|||
env_logger = "0.8"
|
||||
log = "0.4"
|
||||
nest = "1.0.0"
|
||||
openssl = { version = "0.10", features = ["vendored"] }
|
||||
peach-lib = { path = "../peach-lib" }
|
||||
percent-encoding = "2.1.0"
|
||||
regex = "1"
|
||||
rocket = { version = "0.5.0-rc.1", features = ["json", "secrets"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
snafu = "0.6"
|
||||
tera = { version = "1.12.1", features = ["builtins"] }
|
||||
websocket = "0.26"
|
||||
regex = "1"
|
||||
xdg = "2.2.0"
|
||||
openssl = { version = "0.10", features = ["vendored"] }
|
||||
|
||||
[dependencies.rocket_dyn_templates]
|
||||
version = "0.1.0-rc.1"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# peach-web
|
||||
|
||||
[![Build Status](https://travis-ci.com/peachcloud/peach-web.svg?branch=master)](https://travis-ci.com/peachcloud/peach-web) ![Generic badge](https://img.shields.io/badge/version-0.4.6-<COLOR>.svg)
|
||||
[![Build Status](https://travis-ci.com/peachcloud/peach-web.svg?branch=master)](https://travis-ci.com/peachcloud/peach-web) ![Generic badge](https://img.shields.io/badge/version-0.4.12-<COLOR>.svg)
|
||||
|
||||
## Web Interface for PeachCloud
|
||||
|
||||
|
@ -39,12 +39,22 @@ _Note: Networking functionality requires peach-network microservice to be runnin
|
|||
|
||||
### Environment
|
||||
|
||||
**Deployment Mode**
|
||||
|
||||
The web application deployment mode is configured with the `ROCKET_ENV` environment variable:
|
||||
|
||||
`export ROCKET_ENV=stage`
|
||||
|
||||
Other deployment modes are `dev` and `prod`. Read the [Rocket Environment Configurations docs](https://rocket.rs/v0.5-rc/guide/configuration/#environment-variables) for further information.
|
||||
|
||||
**Authentication**
|
||||
|
||||
Authentication is disabled in `development` mode and enabled by default when running the application in `production` mode. It can be disabled by setting the `ROCKET_DISABLE_AUTH` environment variable to `true`:
|
||||
|
||||
`export ROCKET_DISABLE_AUTH=true`
|
||||
|
||||
**Logging**
|
||||
|
||||
Logging is made available with `env_logger`:
|
||||
|
||||
`export RUST_LOG=info`
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
[development]
|
||||
template_dir = "templates/"
|
||||
disable_auth = true
|
||||
|
||||
[production]
|
||||
template_dir = "templates/"
|
||||
disable_auth = false
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
use log::info;
|
||||
use rocket::form::{Form, FromForm};
|
||||
use rocket::request::FlashMessage;
|
||||
use rocket::http::{Cookie, CookieJar, Status};
|
||||
use rocket::request::{self, FlashMessage, FromRequest, Request};
|
||||
use rocket::response::{Flash, Redirect};
|
||||
use rocket::serde::json::Json;
|
||||
use rocket::serde::{Deserialize, Serialize};
|
||||
use rocket::{get, post};
|
||||
use rocket::serde::{
|
||||
json::{Json, Value},
|
||||
Deserialize, Serialize,
|
||||
};
|
||||
use rocket::{get, post, Config};
|
||||
use rocket_dyn_templates::Template;
|
||||
|
||||
use peach_lib::error::PeachError;
|
||||
|
@ -12,9 +15,6 @@ use peach_lib::password_utils;
|
|||
|
||||
use crate::error::PeachWebError;
|
||||
use crate::utils::{build_json_response, TemplateOrRedirect};
|
||||
use rocket::http::{Cookie, CookieJar, Status};
|
||||
use rocket::request::{self, FromRequest, Request};
|
||||
use rocket::serde::json::Value;
|
||||
|
||||
// HELPERS AND STRUCTS FOR AUTHENTICATION WITH COOKIES
|
||||
|
||||
|
@ -42,6 +42,18 @@ impl<'r> FromRequest<'r> for Authenticated {
|
|||
type Error = LoginError;
|
||||
|
||||
async fn from_request(req: &'r Request<'_>) -> request::Outcome<Self, Self::Error> {
|
||||
// check for `disable_auth` config value; set to `false` if unset
|
||||
// can be set via the `ROCKET_DISABLE_AUTH` environment variable
|
||||
// - env var, if set, takes precedence over value defined in `Rocket.toml`
|
||||
let authentication_is_disabled: bool = match Config::figment().find_value("disable_auth") {
|
||||
// deserialize the boolean value; set to `false` if an error is encountered
|
||||
Ok(value) => value.deserialize().unwrap_or(false),
|
||||
Err(_) => false,
|
||||
};
|
||||
if authentication_is_disabled {
|
||||
let auth = Authenticated {};
|
||||
request::Outcome::Success(auth)
|
||||
} else {
|
||||
let authenticated = req
|
||||
.cookies()
|
||||
.get_private(AUTH_COOKIE_KEY)
|
||||
|
@ -52,6 +64,7 @@ impl<'r> FromRequest<'r> for Authenticated {
|
|||
None => request::Outcome::Failure((Status::Forbidden, LoginError::UserNotLoggedIn)),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// HELPERS AND ROUTES FOR /login
|
||||
|
|
|
@ -4,17 +4,29 @@ 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;
|
||||
|
||||
// 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
|
||||
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);
|
||||
|
||||
|
@ -39,7 +51,7 @@ fn read_file_content(path: &str) -> Vec<u8> {
|
|||
|
||||
#[test]
|
||||
fn index_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("/").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -54,7 +66,7 @@ fn index_html() {
|
|||
|
||||
#[test]
|
||||
fn help_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("/help").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -64,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));
|
||||
|
@ -74,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);
|
||||
|
@ -83,7 +95,7 @@ fn logout_html() {
|
|||
|
||||
#[test]
|
||||
fn power_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("/power").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -97,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);
|
||||
|
@ -105,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);
|
||||
|
@ -116,7 +128,7 @@ fn shutdown() {
|
|||
|
||||
#[test]
|
||||
fn block() {
|
||||
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)
|
||||
|
@ -127,7 +139,7 @@ fn block() {
|
|||
|
||||
#[test]
|
||||
fn blocks_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("/scuttlebutt/blocks").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -137,7 +149,7 @@ fn blocks_html() {
|
|||
|
||||
#[test]
|
||||
fn follow() {
|
||||
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)
|
||||
|
@ -149,7 +161,7 @@ fn follow() {
|
|||
|
||||
#[test]
|
||||
fn follows_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("/scuttlebutt/follows").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -159,7 +171,7 @@ fn follows_html() {
|
|||
|
||||
#[test]
|
||||
fn followers_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("/scuttlebutt/followers").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -169,7 +181,7 @@ fn followers_html() {
|
|||
|
||||
#[test]
|
||||
fn friends_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("/scuttlebutt/friends").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -179,7 +191,7 @@ fn friends_html() {
|
|||
|
||||
#[test]
|
||||
fn peers_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("/scuttlebutt/peers").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -189,7 +201,7 @@ fn peers_html() {
|
|||
|
||||
#[test]
|
||||
fn private_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("/scuttlebutt/private").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -199,7 +211,7 @@ fn private_html() {
|
|||
|
||||
#[test]
|
||||
fn profile_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("/scuttlebutt/profile").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -209,7 +221,7 @@ fn profile_html() {
|
|||
|
||||
#[test]
|
||||
fn publish_post() {
|
||||
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)
|
||||
|
@ -220,7 +232,7 @@ fn publish_post() {
|
|||
|
||||
#[test]
|
||||
fn unfollow() {
|
||||
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)
|
||||
|
@ -233,7 +245,7 @@ fn unfollow() {
|
|||
|
||||
#[test]
|
||||
fn admin_settings_menu_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").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -245,7 +257,7 @@ fn admin_settings_menu_html() {
|
|||
|
||||
#[test]
|
||||
fn add_admin_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/add").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -258,7 +270,7 @@ fn add_admin_html() {
|
|||
|
||||
#[test]
|
||||
fn add_admin() {
|
||||
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)
|
||||
|
@ -270,21 +282,21 @@ fn add_admin() {
|
|||
|
||||
#[test]
|
||||
fn change_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/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("Current password"));
|
||||
assert!(body.contains("New password"));
|
||||
assert!(body.contains("New password duplicate"));
|
||||
assert!(body.contains("Save"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn configure_admin_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/configure").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -296,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));
|
||||
|
@ -308,7 +320,7 @@ fn forgot_password_html() {
|
|||
|
||||
#[test]
|
||||
fn network_settings_menu_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/network").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -318,7 +330,7 @@ fn network_settings_menu_html() {
|
|||
|
||||
#[test]
|
||||
fn deploy_ap() {
|
||||
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);
|
||||
|
@ -327,7 +339,7 @@ fn deploy_ap() {
|
|||
|
||||
#[test]
|
||||
fn dns_settings_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/network/dns").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -341,7 +353,7 @@ fn dns_settings_html() {
|
|||
|
||||
#[test]
|
||||
fn list_aps_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/network/wifi").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -353,7 +365,7 @@ fn list_aps_html() {
|
|||
// TODO: needs further testing once template has been refactored
|
||||
#[test]
|
||||
fn ap_details_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/network/wifi?ssid=Home").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -363,7 +375,7 @@ fn ap_details_html() {
|
|||
|
||||
#[test]
|
||||
fn deploy_client() {
|
||||
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);
|
||||
|
@ -372,7 +384,7 @@ fn deploy_client() {
|
|||
|
||||
#[test]
|
||||
fn add_ap_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/network/wifi/add").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -386,7 +398,7 @@ fn add_ap_html() {
|
|||
|
||||
#[test]
|
||||
fn add_ap_ssid_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/network/wifi/add?ssid=Home")
|
||||
.dispatch();
|
||||
|
@ -402,7 +414,7 @@ fn add_ap_ssid_html() {
|
|||
|
||||
#[test]
|
||||
fn add_credentials() {
|
||||
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)
|
||||
|
@ -414,7 +426,7 @@ fn add_credentials() {
|
|||
|
||||
#[test]
|
||||
fn forget_wifi() {
|
||||
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)
|
||||
|
@ -426,7 +438,7 @@ fn forget_wifi() {
|
|||
|
||||
#[test]
|
||||
fn modify_password() {
|
||||
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)
|
||||
|
@ -438,7 +450,7 @@ fn modify_password() {
|
|||
|
||||
#[test]
|
||||
fn data_usage_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/network/wifi/usage").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -453,7 +465,7 @@ fn data_usage_html() {
|
|||
|
||||
#[test]
|
||||
fn scuttlebutt_settings_menu_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/scuttlebutt").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -472,7 +484,7 @@ fn scuttlebutt_settings_menu_html() {
|
|||
|
||||
#[test]
|
||||
fn status_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("/status").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -485,7 +497,7 @@ fn status_html() {
|
|||
|
||||
#[test]
|
||||
fn network_status_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("/status/network").dispatch();
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
assert_eq!(response.content_type(), Some(ContentType::HTML));
|
||||
|
@ -502,7 +514,7 @@ fn network_status_html() {
|
|||
|
||||
#[test]
|
||||
fn activate_ap() {
|
||||
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)
|
||||
|
@ -513,7 +525,7 @@ fn activate_ap() {
|
|||
|
||||
#[test]
|
||||
fn activate_client() {
|
||||
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)
|
||||
|
@ -524,7 +536,7 @@ fn activate_client() {
|
|||
|
||||
#[test]
|
||||
fn return_ip() {
|
||||
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)
|
||||
|
@ -538,7 +550,7 @@ fn return_ip() {
|
|||
|
||||
#[test]
|
||||
fn return_rssi() {
|
||||
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)
|
||||
|
@ -551,7 +563,7 @@ fn return_rssi() {
|
|||
|
||||
#[test]
|
||||
fn return_ssid() {
|
||||
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)
|
||||
|
@ -564,7 +576,7 @@ fn return_ssid() {
|
|||
|
||||
#[test]
|
||||
fn return_state() {
|
||||
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)
|
||||
|
@ -579,7 +591,7 @@ fn return_state() {
|
|||
|
||||
#[test]
|
||||
fn return_status() {
|
||||
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)
|
||||
|
@ -592,7 +604,7 @@ fn return_status() {
|
|||
|
||||
#[test]
|
||||
fn scan_networks() {
|
||||
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)
|
||||
|
@ -605,7 +617,7 @@ fn scan_networks() {
|
|||
|
||||
#[test]
|
||||
fn add_wifi() {
|
||||
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)
|
||||
|
@ -619,7 +631,7 @@ fn add_wifi() {
|
|||
|
||||
#[test]
|
||||
fn remove_wifi() {
|
||||
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)
|
||||
|
@ -633,7 +645,7 @@ fn remove_wifi() {
|
|||
|
||||
#[test]
|
||||
fn new_password() {
|
||||
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)
|
||||
|
@ -647,7 +659,7 @@ fn new_password() {
|
|||
|
||||
#[test]
|
||||
fn ping_pong() {
|
||||
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)
|
||||
|
@ -709,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
|
||||
|
|
Loading…
Reference in New Issue