diff --git a/server/src/auth.rs b/server/src/auth.rs index 886cfb9..d02a10c 100644 --- a/server/src/auth.rs +++ b/server/src/auth.rs @@ -213,7 +213,7 @@ mod auth_tests { } #[test] - fn feed_n_leave() { + fn join_and_leave() { // Create an invite in our db manually // Use that invite to join // Then leave using our neato /auth/leave route @@ -279,4 +279,44 @@ mod auth_tests { assert_eq!(response.status(), Status::Ok); } + + fn bogus_user_insertion(test_name: String, conn: &MysqlConnection) -> User { + use crate::models::{USER_OFFLINE, InsertableUser}; + use schema::users::{self, dsl::*}; + + let insertable_user = InsertableUser { + name: test_name, + secret: encode_param(&utils::new_key()), + date: Utc::now().timestamp() as u64, + status: USER_OFFLINE + }; + + let _insertion_result = diesel::insert_into(users::table) + .values(&insertable_user) + .execute(conn); + + users.filter(date.eq(insertable_user.date)).first::(conn).unwrap() + } + #[test] + fn login() { + setup_dotenv().unwrap(); + let app = rocket::ignite() + .mount("/auth", routes![login]) + .attach(DBConn::fairing()); + let conn = mysql_conn(); + + // We need a valid user to login so we'll make one up + let bogus_user = bogus_user_insertion("test::auth::login".to_string(), &conn); + + // Finaly we can test our route with the boilerplate ootw + let rocket_client = Client::new(app).expect("test::auth::login => client creation failed"); + let params = format!("id={}&secret={}", bogus_user.id, bogus_user.secret); + let response = rocket_client.post("/auth/login") + .body(params) + .header(ContentType::Form) + .dispatch(); + + assert_eq!(response.status(), Status::Ok); + } + }