freechat/server/src/main.rs
2019-11-27 21:28:04 -08:00

70 lines
1.9 KiB
Rust

// This client code really just serves as the url router for the main website where we describe what the project is about
#![feature(proc_macro_hygiene, decl_macro, plugin)]
//#[macro_use] extern crate serde_derive;
#[macro_use] extern crate serde_derive;
#[macro_use] extern crate rocket;
extern crate rocket_contrib;
use rocket_contrib::serve::StaticFiles;
use rocket_contrib::templates::Template;
mod website;
use website::*;
// Purely for backend purposes
#[derive(Serialize)]
struct PageAttrs {
og_title: &'static str,
og_type: &'static str,
og_desc: &'static str,
og_url: &'static str,
og_image: &'static str,
// General settings
favicon: &'static str, // path to the favicon
// Branding things
brand_url: &'static str, // default is freechat.io - clean url of domain
brand_motto: &'static str,
brand_quip: &'static str
}
fn rocket() -> rocket::Rocket {
rocket::ignite()
.mount("/static", StaticFiles::from("/static"))
.mount("/", routes![
homepage, login_page, about_page, server_info,
static_css,
])
.attach(Template::fairing())
}
fn main() {
rocket().launch();
}
// Integrating some basic tests just for this module
#[cfg(test)]
mod test {
use super::rocket;
use rocket::local::Client;
use rocket::http::Status;
#[test]
fn test_homepage() {
// Just make sure that when request the home page we actually get the html back
let client = Client::new(rocket()).expect("Valid rocket instance");
let response = client.get("/").dispatch();
assert_eq!(response.status(), Status::Ok);
}
// Next we test the static resource routes
#[test]
fn static_css() {
let client = Client::new(rocket()).expect("Valid rocket instance");
let response = client.get("/static/css/index.css").dispatch();
assert_eq!(response.status(), Status::Ok);
}
}