use axum::body::Bytes; use axum_test::{TestServer, TestServerConfig}; use julid::Julid; use sqlx::SqlitePool; use crate::User; pub const FORM_CONTENT_TYPE: &str = "application/x-www-form-urlencoded"; pub const INVITE_ID_INT: u128 = 42; pub async fn server_with_pool(pool: &SqlitePool) -> TestServer { //User::omega().try_insert(pool).await.unwrap(); let user = get_test_user(); user.try_insert(pool).await.unwrap(); add_test_invite(pool).await; let r: i32 = sqlx::query_scalar("select count(*) from users") .fetch_one(pool) .await .unwrap_or_default(); assert!(r == 1); let app = crate::app(pool.clone()).await; let config = TestServerConfig { save_cookies: true, ..Default::default() }; TestServer::new_with_config(app, config).unwrap() } fn get_test_user() -> User { User { 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: Julid::omega(), displayname: Some("Test User".to_string()), invited_by: Julid::omega(), ..Default::default() } } async fn add_test_invite(pool: &SqlitePool) { let id: Julid = INVITE_ID_INT.into(); sqlx::query("insert into invites (id, owner, remaining) values (?, ?, ?)") .bind(id) .bind(Julid::omega()) .bind(2) .execute(pool) .await .unwrap(); } // https://www.youtube.com/watch?v=29MJySO7PGg pub fn massage(s: &str) -> Bytes { Bytes::from_iter(s.chars().map(|c| c as u8)) }