mirror of https://github.com/rwf2/Rocket.git
Add tests for ignored parameters '<_>'.
Co-authored-by: timokoesters <timo@koesters.xyz>
This commit is contained in:
parent
8e8fb4cae8
commit
a6f5a63535
|
@ -0,0 +1,54 @@
|
|||
#[macro_use]
|
||||
extern crate rocket;
|
||||
|
||||
#[get("/<_>", rank = 1)] fn ig_1() -> &'static str { "1" }
|
||||
|
||||
#[get("/static")] fn just_static() -> &'static str { "static" }
|
||||
|
||||
#[get("/<_>/<_>", rank = 1)] fn ig_2() -> &'static str { "2" }
|
||||
|
||||
#[get("/static/<_>")] fn ig_1_static() -> &'static str { "static_1" }
|
||||
|
||||
#[get("/<_>/<_>/<_>", rank = 1)] fn ig_3() -> &'static str { "3" }
|
||||
|
||||
#[get("/static/<_>/static")] fn ig_1_static_static() -> &'static str { "static_1_static" }
|
||||
|
||||
#[get("/<a>/<_>/<_>/<b>")] fn wrapped(a: String, b: String) -> String { a + &b }
|
||||
|
||||
#[test]
|
||||
fn test_ignored_segments() {
|
||||
use rocket::local::blocking::Client;
|
||||
|
||||
fn get_string(client: &Client, url: &str) -> String {
|
||||
client.get(url).dispatch().into_string().unwrap()
|
||||
}
|
||||
|
||||
let rocket = rocket::ignite().mount("/", routes![
|
||||
ig_1, just_static, ig_2, ig_3, ig_1_static, ig_1_static_static, wrapped
|
||||
]);
|
||||
|
||||
let client = match Client::untracked(rocket) {
|
||||
Ok(client) => client,
|
||||
Err(e) => { drop(e); panic!("whoops") },
|
||||
};
|
||||
|
||||
assert_eq!(get_string(&client, "/foo"), "1");
|
||||
assert_eq!(get_string(&client, "/bar"), "1");
|
||||
assert_eq!(get_string(&client, "/static"), "static");
|
||||
|
||||
assert_eq!(get_string(&client, "/foo/bar"), "2");
|
||||
assert_eq!(get_string(&client, "/bar/foo"), "2");
|
||||
assert_eq!(get_string(&client, "/a/b"), "2");
|
||||
assert_eq!(get_string(&client, "/foo/static"), "2");
|
||||
assert_eq!(get_string(&client, "/static/foo"), "static_1");
|
||||
|
||||
assert_eq!(get_string(&client, "/foo/bar/baz"), "3");
|
||||
assert_eq!(get_string(&client, "/bar/static/bam"), "3");
|
||||
assert_eq!(get_string(&client, "/static/static/static"), "static_1_static");
|
||||
assert_eq!(get_string(&client, "/static/foo/bam"), "3");
|
||||
|
||||
assert_eq!(get_string(&client, "/a/b/c/d"), "ad");
|
||||
assert_eq!(get_string(&client, "/static/b/c/static"), "staticstatic");
|
||||
assert_eq!(get_string(&client, "/a/b/c/static"), "astatic");
|
||||
assert_eq!(get_string(&client, "/ec/b/c/static"), "ecstatic");
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
../ui-fail/bad-ignored-segments.rs
|
|
@ -0,0 +1,15 @@
|
|||
error: parameter must be named
|
||||
--> $DIR/bad-ignored-segments.rs:6:11
|
||||
|
|
||||
6 | #[get("/c?<_>")]
|
||||
| ^^^
|
||||
|
|
||||
= help: use a name such as `_guard` or `_param`
|
||||
|
||||
error: parameter must be named
|
||||
--> $DIR/bad-ignored-segments.rs:9:22
|
||||
|
|
||||
9 | #[post("/d", data = "<_>")]
|
||||
| ^^^
|
||||
|
|
||||
= help: use a name such as `_guard` or `_param`
|
|
@ -0,0 +1 @@
|
|||
../ui-fail/bad-ignored-segments.rs
|
|
@ -0,0 +1,13 @@
|
|||
error: parameter must be named
|
||||
--- help: use a name such as `_guard` or `_param`
|
||||
--> $DIR/bad-ignored-segments.rs:6:7
|
||||
|
|
||||
6 | #[get("/c?<_>")]
|
||||
| ^^^^^^^^
|
||||
|
||||
error: parameter must be named
|
||||
--- help: use a name such as `_guard` or `_param`
|
||||
--> $DIR/bad-ignored-segments.rs:9:21
|
||||
|
|
||||
9 | #[post("/d", data = "<_>")]
|
||||
| ^^^^^
|
|
@ -0,0 +1,12 @@
|
|||
#[macro_use] extern crate rocket;
|
||||
|
||||
#[get("/<_>")]
|
||||
fn i0() {}
|
||||
|
||||
#[get("/c?<_>")]
|
||||
fn i1() {}
|
||||
|
||||
#[post("/d", data = "<_>")]
|
||||
fn i2() {}
|
||||
|
||||
fn main() { }
|
|
@ -159,6 +159,12 @@ mod test {
|
|||
assert!(unranked_route_collisions(&["/a/<a..>", "/a/<a..>"]));
|
||||
assert!(unranked_route_collisions(&["/a/b/<a..>", "/a/<a..>"]));
|
||||
assert!(unranked_route_collisions(&["/a/b/c/d", "/a/<a..>"]));
|
||||
assert!(unranked_route_collisions(&["/<_>", "/<_>"]));
|
||||
assert!(unranked_route_collisions(&["/a/<_>", "/a/b"]));
|
||||
assert!(unranked_route_collisions(&["/a/<_>", "/a/<b>"]));
|
||||
assert!(unranked_route_collisions(&["/<_..>", "/a/b"]));
|
||||
assert!(unranked_route_collisions(&["/<_..>", "/<_>"]));
|
||||
assert!(unranked_route_collisions(&["/<_>/b", "/a/b"]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -175,6 +181,11 @@ mod test {
|
|||
assert!(unranked_route_collisions(&["/a/<a..>/", "/a/bd/e/"]));
|
||||
assert!(unranked_route_collisions(&["/a/<a..>//", "/a/b//c//d/e/"]));
|
||||
assert!(unranked_route_collisions(&["/a//<a..>//", "/a/b//c//d/e/"]));
|
||||
assert!(unranked_route_collisions(&["///<_>", "/<_>"]));
|
||||
assert!(unranked_route_collisions(&["/a/<_>", "///a//b"]));
|
||||
assert!(unranked_route_collisions(&["//a///<_>", "/a//<b>"]));
|
||||
assert!(unranked_route_collisions(&["//<_..>", "/a/b"]));
|
||||
assert!(unranked_route_collisions(&["//<_..>", "/<_>"]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -197,6 +208,11 @@ mod test {
|
|||
assert!(!unranked_route_collisions(&["/a/b/c/d", "/a/b/c/<d>/e"]));
|
||||
assert!(!unranked_route_collisions(&["/a/d/<b..>", "/a/b/c"]));
|
||||
assert!(!unranked_route_collisions(&["/a/d/<b..>", "/a/d"]));
|
||||
assert!(!unranked_route_collisions(&["/<_>", "/"]));
|
||||
assert!(!unranked_route_collisions(&["/a/<_>", "/a"]));
|
||||
assert!(!unranked_route_collisions(&["/a/<_..>", "/a"]));
|
||||
assert!(!unranked_route_collisions(&["/a/<_..>", "/<_>"]));
|
||||
assert!(!unranked_route_collisions(&["/a/<_>", "/<_>"]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -207,6 +223,9 @@ mod test {
|
|||
assert!(!default_rank_route_collisions(&["/hi", "/<hi>"]));
|
||||
assert!(!default_rank_route_collisions(&["/hi", "/<hi>"]));
|
||||
assert!(!default_rank_route_collisions(&["/a/b", "/a/b/<c..>"]));
|
||||
assert!(!default_rank_route_collisions(&["/<_>", "/static"]));
|
||||
assert!(!default_rank_route_collisions(&["/<_>/<_>", "/foo/bar"]));
|
||||
assert!(!default_rank_route_collisions(&["/foo/<_>", "/foo/bar"]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Reference in New Issue