use faker_rand::en_us::internet; use uuid::Uuid; use crate::{ app::App, clock::RequestedAt, login::{self, Login, Password}, name::Name, }; pub async fn create_with_password(app: &App, created_at: &RequestedAt) -> (Name, Password) { let (name, password) = propose(); let login = app .logins() .create(&name, &password, created_at) .await .expect("should always succeed if the login is actually new"); (login.name, password) } pub async fn create(app: &App, created_at: &RequestedAt) -> Login { let (name, password) = propose(); app.logins() .create(&name, &password, created_at) .await .expect("should always succeed if the login is actually new") } pub fn fictitious() -> Login { Login { id: login::Id::generate(), name: propose_name(), } } pub fn propose() -> (Name, Password) { (propose_name(), propose_password()) } fn propose_name() -> Name { rand::random::().to_string().into() } pub fn propose_password() -> Password { Uuid::new_v4().to_string().into() }