rowt/src/tera/misc.rs

65 lines
1.8 KiB
Rust
Raw Normal View History

2023-06-05 14:15:17 +02:00
use rocket::{get, http::ContentType, routes, Route, State};
2023-05-24 15:36:38 +02:00
use rocket_dyn_templates::{context, Template};
use sqlx::SqlitePool;
use crate::model::{planned_event::PlannedEvent, user::User};
#[get("/cal")]
2023-06-05 14:15:17 +02:00
async fn cal(db: &State<SqlitePool>) -> (ContentType, String) {
2023-07-22 12:24:29 +02:00
//TODO: add unit test once proper functionality is there
2023-06-05 14:15:17 +02:00
(ContentType::Calendar, PlannedEvent::get_ics_feed(db).await)
2023-05-24 15:36:38 +02:00
}
pub fn routes() -> Vec<Route> {
routes![faq, cal]
}
2023-07-22 12:24:29 +02:00
#[cfg(test)]
mod test {
use rocket::{
http::{ContentType, Status},
local::asynchronous::Client,
};
use sqlx::SqlitePool;
use crate::testdb;
#[sqlx::test]
fn test_faq() {
let db = testdb!();
let rocket = rocket::build().manage(db.clone());
let rocket = crate::tera::config(rocket);
let client = Client::tracked(rocket).await.unwrap();
let login = client
.post("/auth")
.header(ContentType::Form) // Set the content type to form
.body("name=cox&password=cox"); // Add the form data to the request body;
login.dispatch().await;
let req = client.get("/faq");
let response = req.dispatch().await;
assert_eq!(response.status(), Status::Ok);
assert!(response.into_string().await.unwrap().contains("FAQs"));
}
#[sqlx::test]
fn test_without_login() {
let db = testdb!();
let rocket = rocket::build().manage(db.clone());
let rocket = crate::tera::config(rocket);
let client = Client::tracked(rocket).await.unwrap();
let req = client.get("/");
let response = req.dispatch().await;
assert_eq!(response.status(), Status::SeeOther);
assert_eq!(response.headers().get("Location").next(), Some("/auth"));
}
}