From 0f0d7f488f3a63157c40809a94e98cb223cad413 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Sat, 3 Jun 2023 10:11:07 -0700 Subject: [PATCH] Add more test utils. --- src/login.rs | 16 ++++++++-------- src/test_utils.rs | 38 +++++++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/src/login.rs b/src/login.rs index 98aae5b..64c0328 100644 --- a/src/login.rs +++ b/src/login.rs @@ -107,14 +107,14 @@ mod test { use crate::{ templates::{Index, LoginGet, LogoutGet, LogoutPost}, - test_utils::{get_user, tserver}, + test_utils::{get_user, server}, }; const LOGIN_FORM: &str = "username=test_user&password=a"; #[tokio::test] async fn get_login() { - let s = tserver().await; + let s = server().await; let resp = s.get("/login").await; let body = std::str::from_utf8(resp.bytes()).unwrap().to_string(); assert_eq!(body, LoginGet::default().to_string()); @@ -122,7 +122,7 @@ mod test { #[tokio::test] async fn post_login_success() { - let s = tserver().await; + let s = server().await; let form = LOGIN_FORM.to_string(); let bytes = form.as_bytes(); @@ -139,7 +139,7 @@ mod test { #[tokio::test] async fn post_login_bad_user() { - let s = tserver().await; + let s = server().await; let form = "username=test_LOSER&password=aaaa".to_string(); let bytes = form.as_bytes(); @@ -156,7 +156,7 @@ mod test { #[tokio::test] async fn post_login_bad_password() { - let s = tserver().await; + let s = server().await; let form = "username=test_user&password=bbbb".to_string(); let bytes = form.as_bytes(); @@ -173,7 +173,7 @@ mod test { #[tokio::test] async fn get_logout() { - let s = tserver().await; + let s = server().await; let resp = s.get("/logout").await; let body = std::str::from_utf8(resp.bytes()).unwrap().to_string(); assert_eq!(body, LogoutGet.to_string()); @@ -181,7 +181,7 @@ mod test { #[tokio::test] async fn post_logout_not_logged_in() { - let s = tserver().await; + let s = server().await; let resp = s.post("/logout").await; resp.assert_status_ok(); let body = std::str::from_utf8(resp.bytes()).unwrap(); @@ -191,7 +191,7 @@ mod test { #[tokio::test] async fn post_logout_logged_in() { - let s = tserver().await; + let s = server().await; // log in and prove it { diff --git a/src/test_utils.rs b/src/test_utils.rs index fc103ec..f6714f1 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -1,18 +1,21 @@ use axum_test::{TestServer, TestServerConfig}; +use sqlx::SqlitePool; use uuid::Uuid; use crate::User; pub fn get_user() -> User { User { - username: "test_user".to_string(), - pwhash: "$argon2id$v=19$m=19456,t=2,p=1$GWsCH1w5RYaP9WWmq+xw0g$hmOEqC+MU+vnEk3bOdkoE+z01mOmmOeX08XyPyjqua8".to_string(), + username: "test_user".to_string(), + // corresponding to a password of "a": + pwhash: "$argon2id$v=19$m=19456,t=2,p=1$GWsCH1w5RYaP9WWmq+xw0g$hmOEqC+MU+vnEk3bOdkoE+z01mOmmOeX08XyPyjqua8".to_string(), id: Uuid::nil(), + displayname: Some("Test User".to_string()), ..Default::default() } } -pub async fn tserver() -> TestServer { +pub async fn server() -> TestServer { let pool = crate::db::get_pool().await; let secret = [0u8; 64]; @@ -40,3 +43,32 @@ pub async fn tserver() -> TestServer { }; TestServer::new_with_config(app, config).unwrap() } + +pub async fn server_with_pool(pool: &SqlitePool) -> TestServer { + let secret = [0u8; 64]; + + let r = sqlx::query("select count(*) from witches") + .fetch_one(pool) + .await; + assert!(r.is_ok()); + + let app = crate::app(pool.clone(), &secret).await.into_make_service(); + + let config = TestServerConfig { + save_cookies: true, + ..Default::default() + }; + TestServer::new_with_config(app, config).unwrap() +} + +pub async fn insert_user(user: &User, pool: &SqlitePool) { + sqlx::query(crate::signup::CREATE_QUERY) + .bind(user.id) + .bind(&user.username) + .bind(&user.displayname) + .bind(&user.email) + .bind(&user.pwhash) + .execute(pool) + .await + .unwrap(); +}