Newer
Older

Louis
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#![feature(plugin)]
#![plugin(interpolate_idents)]
extern crate rocket;
extern crate swerve;
use swerve::cli::{Args, SwerveConfig};
use swerve::server::create_server;
use rocket::local::Client;
use rocket::http::ContentType;
macro_rules! test_type {
($name:ident, $path:expr, $content_path:expr) => (interpolate_idents! {
#[test]
fn [returns_some_type_for_ $name]() {
let args = Args {
flag_dir: Some(String::from("example")),
flag_quiet: true,
..Args::default()
};
let config = SwerveConfig::default();
let server = create_server(args, config);
let client = Client::new(server).expect("valid server instance");
let response = client.get($path).dispatch();
assert_eq!(response.content_type(), Some($content_path));
}
});
($name:ident, $path:expr) => (interpolate_idents! {
#[test]
fn [returns_no_type_for_ $name]() {
let args = Args {
flag_dir: Some(String::from("example")),
flag_quiet: true,
..Args::default()
};
let config = SwerveConfig::default();
let server = create_server(args, config);
let client = Client::new(server).expect("valid server instance");
let response = client.get($path).dispatch();
assert_eq!(response.content_type(), None);
}
});
}
test_type!(html, "/index.html", ContentType::HTML);
test_type!(css, "/css/styles.css", ContentType::CSS);
test_type!(javascript, "/js/say_hello.js", ContentType::JavaScript);
test_type!(csv, "/files/attribution.csv", ContentType::CSV);
test_type!(image_jpeg, "/files/adorable-puppy.jpg", ContentType::JPEG);
test_type!(web_assembly, "/files/math.wasm", ContentType::new("application", "wasm"));