mirror of
https://github.com/rwf2/Rocket.git
synced 2024-12-31 23:02:37 +00:00
9b955747e4
This commit includes two major changes to core: 1. Configuration state is no longer global. The `config::active()` function has been removed. The active configuration can be retrieved via the `config` method on a `Rocket` instance. 2. The `Responder` trait has changed. `Responder::respond(self)` has been removed in favor of `Responder::respond_to(self, &Request)`. This allows responders to dynamically adjust their response based on the incoming request. Additionally, it includes the following changes to core and codegen: * The `Request::guard` method was added to allow for simple retrivial of request guards. * The `Request::limits` method was added to retrieve configured limits. * The `File` `Responder` implementation now uses a fixed size body instead of a chunked body. * The `Outcome::of<R: Responder>(R)` method was removed while `Outcome::from<R: Responder(&Request, R)` was added. * The unmounted and unmanaged limits are more cautious: they will only emit warnings when the `Rocket` receiver is known. This commit includes one major change to contrib: 1. To use contrib's templating, the fairing returned by `Template::fairing()` must be attached to the running Rocket instance. Additionally, the `Display` implementation of `Template` was removed. To directly render a template to a `String`, the new `Template::show` method can be used.
60 lines
1.8 KiB
Rust
60 lines
1.8 KiB
Rust
extern crate rocket;
|
|
extern crate rocket_contrib;
|
|
|
|
use std::env;
|
|
use std::path::PathBuf;
|
|
|
|
fn template_root() -> PathBuf {
|
|
let cwd = env::current_dir().expect("current working directory");
|
|
cwd.join("tests").join("templates")
|
|
}
|
|
|
|
#[cfg(feature = "tera_templates")]
|
|
mod tera_tests {
|
|
use super::*;
|
|
use rocket_contrib::Template;
|
|
use std::collections::HashMap;
|
|
|
|
const UNESCAPED_EXPECTED: &'static str
|
|
= "\nh_start\ntitle: _test_\nh_end\n\n\n<script />\n\nfoot\n";
|
|
const ESCAPED_EXPECTED: &'static str
|
|
= "\nh_start\ntitle: _test_\nh_end\n\n\n<script />\n\nfoot\n";
|
|
|
|
#[test]
|
|
fn test_tera_templates() {
|
|
let mut map = HashMap::new();
|
|
map.insert("title", "_test_");
|
|
map.insert("content", "<script />");
|
|
|
|
// Test with a txt file, which shouldn't escape.
|
|
let template = Template::show(template_root(), "tera/txt_test", &map);
|
|
assert_eq!(template, Some(UNESCAPED_EXPECTED.into()));
|
|
|
|
// Now with an HTML file, which should.
|
|
let template = Template::show(template_root(), "tera/html_test", &map);
|
|
assert_eq!(template, Some(ESCAPED_EXPECTED.into()));
|
|
}
|
|
}
|
|
|
|
#[cfg(feature = "handlebars_templates")]
|
|
mod handlebars_tests {
|
|
use super::*;
|
|
use rocket_contrib::Template;
|
|
use std::collections::HashMap;
|
|
|
|
const EXPECTED: &'static str
|
|
= "Hello _test_!\n\n<main> <script /> hi </main>\nDone.\n\n";
|
|
|
|
#[test]
|
|
fn test_handlebars_templates() {
|
|
let mut map = HashMap::new();
|
|
map.insert("title", "_test_");
|
|
map.insert("content", "<script /> hi");
|
|
|
|
// Test with a txt file, which shouldn't escape.
|
|
let template = Template::show(template_root(), "hbs/test", &map);
|
|
assert_eq!(template, Some(EXPECTED.into()));
|
|
}
|
|
}
|
|
|