wip: index page
This commit is contained in:
@@ -98,6 +98,7 @@ pub fn rocket() -> Rocket<rocket::Build> {
|
||||
.mount(
|
||||
"/",
|
||||
rocket::routes![
|
||||
page::index,
|
||||
auth::oidc_callback,
|
||||
auth::oidc_login,
|
||||
page::post_page
|
||||
|
||||
10
src/page.rs
10
src/page.rs
@@ -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(
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user