rojo/server/tests/web.rs
2018-06-05 00:55:46 -07:00

54 lines
No EOL
1.4 KiB
Rust

extern crate rouille;
extern crate serde_json;
extern crate serde;
extern crate librojo;
use std::collections::HashMap;
use std::path::PathBuf;
use rouille::Request;
use librojo::{
session::Session,
project::Project,
web::{Server, WebConfig, ServerInfoResponse},
};
fn get(server: &Server, url: &str) -> String {
let info_request = Request::fake_http("GET", url, vec![], vec![]);
let response = server.handle_request(&info_request);
assert_eq!(response.status_code, 200);
let (mut reader, _) = response.data.into_reader_and_size();
let mut body = String::new();
reader.read_to_string(&mut body).unwrap();
body
}
#[test]
fn empty() {
let project_path = {
let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
path.push("test-projects/empty");
path
};
let project = Project::load(&project_path).unwrap();
let mut session = Session::new(project.clone());
session.start();
let web_config = WebConfig::from_session(0, project.serve_port, &session);
let server = Server::new(web_config);
{
let body = get(&server, "/api/rojo");
let response = serde_json::from_str::<ServerInfoResponse>(&body).unwrap();
assert_eq!(response.server_id, "0");
assert_eq!(response.protocol_version, 2);
assert_eq!(response.partitions, HashMap::new());
}
}