Skip to content
Permalink
Browse files

fix nested resource map registration #915

  • Loading branch information...
fafhrd91 committed Jun 15, 2019
1 parent d7ec241 commit d293ae2a691fb6f9b9981346643e56932114d2da
Showing with 26 additions and 1 deletion.
  1. +4 −0 CHANGES.md
  2. +2 −1 src/rmap.rs
  3. +20 −0 src/scope.rs
@@ -20,6 +20,10 @@

* Re-apply patch from #637 #894

### Fixed

* HttpRequest::url_for is broken with nested scopes #915


## [1.0.0] - 2019-06-05

@@ -38,7 +38,8 @@ impl ResourceMap {
pub(crate) fn finish(&self, current: Rc<ResourceMap>) {
for (_, nested) in &self.patterns {
if let Some(ref nested) = nested {
*nested.parent.borrow_mut() = Some(current.clone())
*nested.parent.borrow_mut() = Some(current.clone());
nested.finish(nested.clone());
}
}
}
@@ -1135,4 +1135,24 @@ mod tests {
let body = read_body(resp);
assert_eq!(body, &b"https://youtube.com/watch/xxxxxx"[..]);
}

#[test]
fn test_url_for_nested() {
let mut srv = init_service(App::new().service(web::scope("/a").service(
web::scope("/b").service(web::resource("/c/{stuff}").name("c").route(
web::get().to(|req: HttpRequest| {
HttpResponse::Ok()
.body(format!("{}", req.url_for("c", &["12345"]).unwrap()))
}),
)),
)));
let req = TestRequest::with_uri("/a/b/c/test").to_request();
let resp = call_service(&mut srv, req);
assert_eq!(resp.status(), StatusCode::OK);
let body = read_body(resp);
assert_eq!(
body,
Bytes::from_static(b"http://localhost:8080/a/b/c/12345")
);
}
}

0 comments on commit d293ae2

Please sign in to comment.
You can’t perform that action at this time.