use crate::{ app::App, clock::RequestedAt, name::Name, password::Password, test::fixtures, token::{ Token, extract::{Identity, IdentityCookie}, }, }; pub async fn create(app: &App, created_at: &RequestedAt) -> Identity { let credentials = fixtures::user::create_with_password(app, created_at).await; logged_in(app, &credentials, created_at).await } pub async fn from_cookie( app: &App, cookie: &IdentityCookie, validated_at: &RequestedAt, ) -> Identity { let secret = cookie.secret().expect("identity token has a secret"); app.tokens() .validate(&secret, validated_at) .await .expect("always validates newly-issued secret") } pub async fn logged_in( app: &App, credentials: &(Name, Password), issued_at: &RequestedAt, ) -> Identity { let secret = fixtures::cookie::logged_in(app, credentials, issued_at).await; from_cookie(app, &secret, issued_at).await } pub fn fictitious() -> Identity { let user = fixtures::user::fictitious(); let (token, _) = Token::generate(&user, &fixtures::now()); Identity { token, user } }