prepare_data.rs
1 use microvisor::{models::users, views::auth::LoginResponse}; 2 use axum::http::{HeaderName, HeaderValue}; 3 use loco_rs::{app::AppContext, TestServer}; 4 5 const USER_EMAIL: &str = "test@loco.com"; 6 const USER_PASSWORD: &str = "1234"; 7 8 pub struct LoggedInUser { 9 pub user: users::Model, 10 pub token: String, 11 } 12 13 pub async fn init_user_login(request: &TestServer, ctx: &AppContext) -> LoggedInUser { 14 let register_payload = serde_json::json!({ 15 "name": "loco", 16 "email": USER_EMAIL, 17 "password": USER_PASSWORD 18 }); 19 20 //Creating a new user 21 request 22 .post("/api/auth/register") 23 .json(®ister_payload) 24 .await; 25 let user = users::Model::find_by_email(&ctx.db, USER_EMAIL) 26 .await 27 .unwrap(); 28 29 let verify_payload = serde_json::json!({ 30 "token": user.email_verification_token, 31 }); 32 33 request.post("/api/auth/verify").json(&verify_payload).await; 34 35 let response = request 36 .post("/api/auth/login") 37 .json(&serde_json::json!({ 38 "email": USER_EMAIL, 39 "password": USER_PASSWORD 40 })) 41 .await; 42 43 let login_response: LoginResponse = serde_json::from_str(&response.text()).unwrap(); 44 45 LoggedInUser { 46 user: users::Model::find_by_email(&ctx.db, USER_EMAIL) 47 .await 48 .unwrap(), 49 token: login_response.token, 50 } 51 } 52 53 pub fn auth_header(token: &str) -> (HeaderName, HeaderValue) { 54 let auth_header_value = HeaderValue::from_str(&format!("Bearer {}", &token)).unwrap(); 55 56 (HeaderName::from_static("authorization"), auth_header_value) 57 }