mirror of https://github.com/rwf2/Rocket.git
Re-enable the entire test suite:
* Disable compression tests * Finish migrating all other examples and tests
This commit is contained in:
parent
047b1620f9
commit
facc00454c
|
@ -51,6 +51,7 @@
|
||||||
#[cfg(feature="uuid")] pub mod uuid;
|
#[cfg(feature="uuid")] pub mod uuid;
|
||||||
#[cfg(feature="databases")] pub mod databases;
|
#[cfg(feature="databases")] pub mod databases;
|
||||||
#[cfg(feature = "helmet")] pub mod helmet;
|
#[cfg(feature = "helmet")] pub mod helmet;
|
||||||
#[cfg(any(feature="brotli_compression", feature="gzip_compression"))] pub mod compression;
|
// TODO.async: Migrate compression, reenable this and tests
|
||||||
|
//#[cfg(any(feature="brotli_compression", feature="gzip_compression"))] pub mod compression;
|
||||||
|
|
||||||
#[cfg(feature="databases")] #[doc(hidden)] pub use rocket_contrib_codegen::*;
|
#[cfg(feature="databases")] #[doc(hidden)] pub use rocket_contrib_codegen::*;
|
||||||
|
|
|
@ -72,7 +72,7 @@ mod static_tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
fn test_static_no_index() {
|
async fn test_static_no_index() {
|
||||||
let client = Client::new(rocket()).expect("valid rocket");
|
let client = Client::new(rocket()).expect("valid rocket");
|
||||||
assert_all(&client, "no_index", REGULAR_FILES, true).await;
|
assert_all(&client, "no_index", REGULAR_FILES, true).await;
|
||||||
assert_all(&client, "no_index", HIDDEN_FILES, false).await;
|
assert_all(&client, "no_index", HIDDEN_FILES, false).await;
|
||||||
|
@ -80,7 +80,7 @@ mod static_tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
fn test_static_hidden() {
|
async fn test_static_hidden() {
|
||||||
let client = Client::new(rocket()).expect("valid rocket");
|
let client = Client::new(rocket()).expect("valid rocket");
|
||||||
assert_all(&client, "dots", REGULAR_FILES, true).await;
|
assert_all(&client, "dots", REGULAR_FILES, true).await;
|
||||||
assert_all(&client, "dots", HIDDEN_FILES, true).await;
|
assert_all(&client, "dots", HIDDEN_FILES, true).await;
|
||||||
|
@ -88,7 +88,7 @@ mod static_tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
fn test_static_index() {
|
async fn test_static_index() {
|
||||||
let client = Client::new(rocket()).expect("valid rocket");
|
let client = Client::new(rocket()).expect("valid rocket");
|
||||||
assert_all(&client, "index", REGULAR_FILES, true).await;
|
assert_all(&client, "index", REGULAR_FILES, true).await;
|
||||||
assert_all(&client, "index", HIDDEN_FILES, false).await;
|
assert_all(&client, "index", HIDDEN_FILES, false).await;
|
||||||
|
@ -100,7 +100,7 @@ mod static_tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
fn test_static_all() {
|
async fn test_static_all() {
|
||||||
let client = Client::new(rocket()).expect("valid rocket");
|
let client = Client::new(rocket()).expect("valid rocket");
|
||||||
assert_all(&client, "both", REGULAR_FILES, true).await;
|
assert_all(&client, "both", REGULAR_FILES, true).await;
|
||||||
assert_all(&client, "both", HIDDEN_FILES, true).await;
|
assert_all(&client, "both", HIDDEN_FILES, true).await;
|
||||||
|
@ -122,7 +122,7 @@ mod static_tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
fn test_forwarding() {
|
async fn test_forwarding() {
|
||||||
use rocket::http::RawStr;
|
use rocket::http::RawStr;
|
||||||
use rocket::{get, routes};
|
use rocket::{get, routes};
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
use super::{rocket, TemplateContext};
|
use super::{rocket, TemplateContext};
|
||||||
|
|
||||||
use rocket::local::{Client, LocalResponse};
|
use rocket::local::Client;
|
||||||
use rocket::http::Method::*;
|
use rocket::http::Method::*;
|
||||||
use rocket::http::Status;
|
use rocket::http::Status;
|
||||||
use rocket_contrib::templates::Template;
|
use rocket_contrib::templates::Template;
|
||||||
|
|
||||||
macro_rules! dispatch {
|
macro_rules! dispatch {
|
||||||
($method:expr, $path:expr, $test_fn:expr) => ({
|
($method:expr, $path:expr, |$client:ident, $response:ident| $body:expr) => ({
|
||||||
let client = Client::new(rocket()).unwrap();
|
let $client = Client::new(rocket()).unwrap();
|
||||||
$test_fn(&client, client.req($method, $path).dispatch().await);
|
let mut $response = $client.req($method, $path).dispatch().await;
|
||||||
|
$body
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +17,7 @@ macro_rules! dispatch {
|
||||||
async fn test_root() {
|
async fn test_root() {
|
||||||
// Check that the redirect works.
|
// Check that the redirect works.
|
||||||
for method in &[Get, Head] {
|
for method in &[Get, Head] {
|
||||||
dispatch!(*method, "/", |_: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(*method, "/", |client, response| {
|
||||||
assert_eq!(response.status(), Status::SeeOther);
|
assert_eq!(response.status(), Status::SeeOther);
|
||||||
assert!(response.body().is_none());
|
assert!(response.body().is_none());
|
||||||
|
|
||||||
|
@ -27,7 +28,7 @@ async fn test_root() {
|
||||||
|
|
||||||
// Check that other request methods are not accepted (and instead caught).
|
// Check that other request methods are not accepted (and instead caught).
|
||||||
for method in &[Post, Put, Delete, Options, Trace, Connect, Patch] {
|
for method in &[Post, Put, Delete, Options, Trace, Connect, Patch] {
|
||||||
dispatch!(*method, "/", |client: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(*method, "/", |client, response| {
|
||||||
let mut map = std::collections::HashMap::new();
|
let mut map = std::collections::HashMap::new();
|
||||||
map.insert("path", "/");
|
map.insert("path", "/");
|
||||||
let expected = Template::show(client.rocket(), "error/404", &map).unwrap();
|
let expected = Template::show(client.rocket(), "error/404", &map).unwrap();
|
||||||
|
@ -41,7 +42,7 @@ async fn test_root() {
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
async fn test_name() {
|
async fn test_name() {
|
||||||
// Check that the /hello/<name> route works.
|
// Check that the /hello/<name> route works.
|
||||||
dispatch!(Get, "/hello/Jack%20Daniels", |client: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(Get, "/hello/Jack%20Daniels", |client, response| {
|
||||||
let context = TemplateContext {
|
let context = TemplateContext {
|
||||||
title: "Hello",
|
title: "Hello",
|
||||||
name: Some("Jack Daniels".into()),
|
name: Some("Jack Daniels".into()),
|
||||||
|
@ -58,7 +59,7 @@ async fn test_name() {
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
async fn test_404() {
|
async fn test_404() {
|
||||||
// Check that the error catcher works.
|
// Check that the error catcher works.
|
||||||
dispatch!(Get, "/hello/", |client: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(Get, "/hello/", |client, response| {
|
||||||
let mut map = std::collections::HashMap::new();
|
let mut map = std::collections::HashMap::new();
|
||||||
map.insert("path", "/hello/");
|
map.insert("path", "/hello/");
|
||||||
|
|
||||||
|
|
|
@ -1,76 +1,78 @@
|
||||||
use super::rocket;
|
use super::rocket;
|
||||||
use rocket::local::{Client, LocalResponse as Response};
|
use rocket::local::Client;
|
||||||
use rocket::http::Status;
|
use rocket::http::Status;
|
||||||
|
|
||||||
macro_rules! run_test {
|
macro_rules! run_test {
|
||||||
($query:expr, $test_fn:expr) => ({
|
($query:expr, |$response:ident| $body:expr) => ({
|
||||||
let client = Client::new(rocket()).unwrap();
|
let client = Client::new(rocket()).unwrap();
|
||||||
$test_fn(client.get(format!("/hello{}", $query)).dispatch().await);
|
#[allow(unused_mut)]
|
||||||
|
let mut $response = client.get(format!("/hello{}", $query)).dispatch().await;
|
||||||
|
$body
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[rocket::async_test]
|
||||||
fn age_and_name_params() {
|
async fn age_and_name_params() {
|
||||||
run_test!("?age=10&first-name=john", |mut response: Response<'_>| {
|
run_test!("?age=10&first-name=john", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("Hello, 10 year old named john!".into()));
|
Some("Hello, 10 year old named john!".into()));
|
||||||
});
|
});
|
||||||
|
|
||||||
run_test!("?age=20&first-name=john", |mut response: Response<'_>| {
|
run_test!("?age=20&first-name=john", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("20 years old? Hi, john!".into()));
|
Some("20 years old? Hi, john!".into()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[rocket::async_test]
|
||||||
fn age_param_only() {
|
async fn age_param_only() {
|
||||||
run_test!("?age=10", |mut response: Response<'_>| {
|
run_test!("?age=10", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("We're gonna need a name, and only a name.".into()));
|
Some("We're gonna need a name, and only a name.".into()));
|
||||||
});
|
});
|
||||||
|
|
||||||
run_test!("?age=20", |mut response: Response<'_>| {
|
run_test!("?age=20", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("We're gonna need a name, and only a name.".into()));
|
Some("We're gonna need a name, and only a name.".into()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[rocket::async_test]
|
||||||
fn name_param_only() {
|
async fn name_param_only() {
|
||||||
run_test!("?first-name=John", |mut response: Response<'_>| {
|
run_test!("?first-name=John", |response| {
|
||||||
assert_eq!(response.body_string().await, Some("Hello John!".into()));
|
assert_eq!(response.body_string().await, Some("Hello John!".into()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[rocket::async_test]
|
||||||
fn no_params() {
|
async fn no_params() {
|
||||||
run_test!("", |mut response: Response<'_>| {
|
run_test!("", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("We're gonna need a name, and only a name.".into()));
|
Some("We're gonna need a name, and only a name.".into()));
|
||||||
});
|
});
|
||||||
|
|
||||||
run_test!("?", |mut response: Response<'_>| {
|
run_test!("?", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("We're gonna need a name, and only a name.".into()));
|
Some("We're gonna need a name, and only a name.".into()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[rocket::async_test]
|
||||||
fn extra_params() {
|
async fn extra_params() {
|
||||||
run_test!("?age=20&first-name=Bob&extra", |mut response: Response<'_>| {
|
run_test!("?age=20&first-name=Bob&extra", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("20 years old? Hi, Bob!".into()));
|
Some("20 years old? Hi, Bob!".into()));
|
||||||
});
|
});
|
||||||
|
|
||||||
run_test!("?age=30&first-name=Bob&extra", |mut response: Response<'_>| {
|
run_test!("?age=30&first-name=Bob&extra", |response| {
|
||||||
assert_eq!(response.body_string().await,
|
assert_eq!(response.body_string().await,
|
||||||
Some("We're gonna need a name, and only a name.".into()));
|
Some("We're gonna need a name, and only a name.".into()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[rocket::async_test]
|
||||||
fn wrong_path() {
|
async fn wrong_path() {
|
||||||
run_test!("/other?age=20&first-name=Bob", |response: Response<'_>| {
|
run_test!("/other?age=20&first-name=Bob", |response| {
|
||||||
assert_eq!(response.status(), Status::NotFound);
|
assert_eq!(response.status(), Status::NotFound);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
use super::rocket;
|
use super::rocket;
|
||||||
use rocket::local::{Client, LocalResponse};
|
use rocket::local::Client;
|
||||||
use rocket::http::Method::*;
|
use rocket::http::Method::*;
|
||||||
use rocket::http::Status;
|
use rocket::http::Status;
|
||||||
use rocket_contrib::templates::Template;
|
use rocket_contrib::templates::Template;
|
||||||
|
|
||||||
macro_rules! dispatch {
|
macro_rules! dispatch {
|
||||||
($method:expr, $path:expr, $test_fn:expr) => ({
|
($method:expr, $path:expr, |$client:ident, $response:ident| $body:expr) => ({
|
||||||
let client = Client::new(rocket()).unwrap();
|
let $client = Client::new(rocket()).unwrap();
|
||||||
$test_fn(&client, client.req($method, $path).dispatch().await);
|
let mut $response = $client.req($method, $path).dispatch().await;
|
||||||
|
$body
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +16,7 @@ macro_rules! dispatch {
|
||||||
async fn test_root() {
|
async fn test_root() {
|
||||||
// Check that the redirect works.
|
// Check that the redirect works.
|
||||||
for method in &[Get, Head] {
|
for method in &[Get, Head] {
|
||||||
dispatch!(*method, "/", |_: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(*method, "/", |client, response| {
|
||||||
assert_eq!(response.status(), Status::SeeOther);
|
assert_eq!(response.status(), Status::SeeOther);
|
||||||
assert!(response.body().is_none());
|
assert!(response.body().is_none());
|
||||||
|
|
||||||
|
@ -26,7 +27,7 @@ async fn test_root() {
|
||||||
|
|
||||||
// Check that other request methods are not accepted (and instead caught).
|
// Check that other request methods are not accepted (and instead caught).
|
||||||
for method in &[Post, Put, Delete, Options, Trace, Connect, Patch] {
|
for method in &[Post, Put, Delete, Options, Trace, Connect, Patch] {
|
||||||
dispatch!(*method, "/", |client: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(*method, "/", |client, response| {
|
||||||
let mut map = std::collections::HashMap::new();
|
let mut map = std::collections::HashMap::new();
|
||||||
map.insert("path", "/");
|
map.insert("path", "/");
|
||||||
let expected = Template::show(client.rocket(), "error/404", &map).unwrap();
|
let expected = Template::show(client.rocket(), "error/404", &map).unwrap();
|
||||||
|
@ -40,7 +41,7 @@ async fn test_root() {
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
async fn test_name() {
|
async fn test_name() {
|
||||||
// Check that the /hello/<name> route works.
|
// Check that the /hello/<name> route works.
|
||||||
dispatch!(Get, "/hello/Jack", |client: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(Get, "/hello/Jack", |client, response| {
|
||||||
let context = super::TemplateContext {
|
let context = super::TemplateContext {
|
||||||
name: "Jack".into(),
|
name: "Jack".into(),
|
||||||
items: vec!["One", "Two", "Three"]
|
items: vec!["One", "Two", "Three"]
|
||||||
|
@ -55,7 +56,7 @@ async fn test_name() {
|
||||||
#[rocket::async_test]
|
#[rocket::async_test]
|
||||||
async fn test_404() {
|
async fn test_404() {
|
||||||
// Check that the error catcher works.
|
// Check that the error catcher works.
|
||||||
dispatch!(Get, "/hello/", |client: &Client, mut response: LocalResponse<'_>| {
|
dispatch!(Get, "/hello/", |client, response| {
|
||||||
let mut map = std::collections::HashMap::new();
|
let mut map = std::collections::HashMap::new();
|
||||||
map.insert("path", "/hello/");
|
map.insert("path", "/hello/");
|
||||||
|
|
||||||
|
|
|
@ -67,8 +67,7 @@ if [ "$1" = "--contrib" ]; then
|
||||||
msgpack
|
msgpack
|
||||||
tera_templates
|
tera_templates
|
||||||
handlebars_templates
|
handlebars_templates
|
||||||
# TODO.async: tokio-rs/tokio#1356
|
serve
|
||||||
# serve
|
|
||||||
helmet
|
helmet
|
||||||
diesel_postgres_pool
|
diesel_postgres_pool
|
||||||
diesel_sqlite_pool
|
diesel_sqlite_pool
|
||||||
|
@ -80,16 +79,14 @@ if [ "$1" = "--contrib" ]; then
|
||||||
redis_pool
|
redis_pool
|
||||||
mongodb_pool
|
mongodb_pool
|
||||||
memcache_pool
|
memcache_pool
|
||||||
# TODO.async: compression not yet ported to async
|
brotli_compression
|
||||||
# brotli_compression
|
gzip_compression
|
||||||
# gzip_compression
|
|
||||||
)
|
)
|
||||||
|
|
||||||
pushd "${CONTRIB_LIB_ROOT}" > /dev/null 2>&1
|
pushd "${CONTRIB_LIB_ROOT}" > /dev/null 2>&1
|
||||||
|
|
||||||
# TODO.async: 'serve' (broken) is a default feature
|
echo ":: Building and testing contrib [default]..."
|
||||||
# echo ":: Building and testing contrib [default]..."
|
CARGO_INCREMENTAL=0 cargo test
|
||||||
# CARGO_INCREMENTAL=0 cargo test
|
|
||||||
|
|
||||||
for feature in "${FEATURES[@]}"; do
|
for feature in "${FEATURES[@]}"; do
|
||||||
echo ":: Building and testing contrib [${feature}]..."
|
echo ":: Building and testing contrib [${feature}]..."
|
||||||
|
@ -117,6 +114,5 @@ elif [ "$1" = "--core" ]; then
|
||||||
popd > /dev/null 2>&1
|
popd > /dev/null 2>&1
|
||||||
else
|
else
|
||||||
echo ":: Building and testing libraries..."
|
echo ":: Building and testing libraries..."
|
||||||
# TODO.async: see other failures above
|
CARGO_INCREMENTAL=0 cargo test --all-features --all $@
|
||||||
# CARGO_INCREMENTAL=0 cargo test --all-features --all $@
|
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue