From 68d864710ac226a1ceb8aa5b3ad3f72831b9f578 Mon Sep 17 00:00:00 2001 From: shockrah Date: Sun, 10 May 2020 12:56:38 -0700 Subject: [PATCH] Finished a test for using an invite via the /invite/join/ route --- server/src/auth.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/server/src/auth.rs b/server/src/auth.rs index 4459385..401262a 100644 --- a/server/src/auth.rs +++ b/server/src/auth.rs @@ -14,13 +14,14 @@ use rocket_contrib::json::Json; use diesel::{self, prelude::*}; use std::{error, fmt}; +#[allow(dead_code)] // added because these fields are read through rocket, not directly; and rls keeps complainin #[derive(FromForm)] pub struct JoinParams { code: u64, name: String, } -#[derive(FromForm)] +#[derive(FromForm, Deserialize)] pub struct AuthKey { id: u64, secret: String, @@ -122,6 +123,7 @@ mod auth_tests { use rand::random; use std::env; use dotenv::dotenv; + use serde_json::Value; fn setup_dotenv() -> Result<(), i32> { match dotenv() { @@ -140,6 +142,7 @@ mod auth_tests { let app = rocket::ignite() .mount("/invite", routes![use_invite]) .attach(DBConn::fairing()); + // First we create a new invite let conn = MysqlConnection::establish(&env::var("DATABASE_URL").unwrap()).unwrap(); let dt = Utc::now() + Duration::minutes(30); let invite = Invite { @@ -155,6 +158,15 @@ mod auth_tests { let rocket_c = Client::new(app).expect("Invalid rocket instance"); let mut response = rocket_c.get(format!("/invite/join/{}/{}", invite.id, "billybob")).dispatch(); let body: String = response.body_string().unwrap(); - println!("{}", body) + let api_key: Value = serde_json::from_str(&body).unwrap(); + + let body_params = format!("id={}&secret={}", api_key["id"], api_key["secret"]); + println!("Parameters being sent {}", body_params); + let leave_response = rocket_c.get("/auth/leave") + .body(body_params) + .dispatch(); + + assert_eq!(leave_response.status(), Status::Ok); + println!("{}", body); } -} \ No newline at end of file +}