Skip to content

Commit

Permalink
fix nested resource map registration #915
Browse files Browse the repository at this point in the history
  • Loading branch information
fafhrd91 committed Jun 15, 2019
1 parent d7ec241 commit d293ae2
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
3 changes: 2 additions & 1 deletion src/rmap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}
}
Expand Down
20 changes: 20 additions & 0 deletions src/scope.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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.