wip: index page

This commit is contained in:
2025-04-08 21:50:14 -05:00
parent dbd9165626
commit 9375c5d991
3 changed files with 36 additions and 0 deletions

View File

@@ -98,6 +98,7 @@ pub fn rocket() -> Rocket<rocket::Build> {
.mount(
"/",
rocket::routes![
page::index,
auth::oidc_callback,
auth::oidc_login,
page::post_page

View File

@@ -5,6 +5,7 @@ use markup5ever_rcdom::{Handle, NodeData, RcDom};
use meilisearch_sdk::errors::Error;
use rand::Rng;
use rocket::form::Form;
use rocket::response::Redirect;
use rocket::serde::json::Json;
use rocket::State;
use serde::Serialize;
@@ -42,6 +43,15 @@ pub struct SavePageForm {
data: String,
}
#[rocket::get("/")]
pub async fn index(user: Option<User>) -> Result<String, Redirect> {
if let Some(user) = user {
Ok(format!("Hello, {}", user.id()))
} else {
Err(Redirect::to(rocket::uri![crate::auth::oidc_login]))
}
}
/// Save a visited page in SingleFile format
#[rocket::post("/save", data = "<form>")]
pub async fn post_page(

View File

@@ -63,3 +63,28 @@ fn test_post_page_unauth() {
let res = req.dispatch();
assert_eq!(res.status(), Status::Unauthorized);
}
#[test]
fn test_index_unauth() {
super::setup();
let client = Client::tracked(seensite::rocket()).unwrap();
let req = client.get(uri![index]);
let res = req.dispatch();
assert_eq!(res.status(), Status::SeeOther);
let location = res.headers().get_one("Location").unwrap();
assert_eq!(location, "/login");
}
#[test]
fn test_index_auth() {
super::setup();
let client = Client::tracked(seensite::rocket()).unwrap();
let ctx: &Context = client.rocket().state().unwrap();
let user = User::new("test1");
let token = ctx.make_jwt(&user, 60).unwrap();
let req = client
.get(uri![index])
.header(Header::new("Authorization", format!("Bearer {}", token)));
let res = req.dispatch();
assert_eq!(res.status(), Status::Ok);
}