diff options
| author | Kit La Touche <kit@transneptune.net> | 2024-09-30 21:41:36 -0400 |
|---|---|---|
| committer | Kit La Touche <kit@transneptune.net> | 2024-09-30 21:41:36 -0400 |
| commit | c0fead957c6433be1ddfbbe8a55276a4aa8fc4df (patch) | |
| tree | fb8a12519e86628349d8070a193d3ce75a82e1a8 /src/test/fixtures | |
| parent | a6a170ab5320d9ef0a2e007ac3ab75edee574fef (diff) | |
| parent | 6c054c5b8d43a818ccfa9087960dc19b286e6bb7 (diff) | |
Merge branch 'main' into feature-frontend
Diffstat (limited to 'src/test/fixtures')
| -rw-r--r-- | src/test/fixtures/identity.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/test/fixtures/identity.rs b/src/test/fixtures/identity.rs index 69b5f4c..633fb8a 100644 --- a/src/test/fixtures/identity.rs +++ b/src/test/fixtures/identity.rs @@ -3,7 +3,7 @@ use uuid::Uuid; use crate::{ app::App, clock::RequestedAt, - login::extract::{IdentitySecret, IdentityToken}, + login::extract::{Identity, IdentitySecret, IdentityToken}, password::Password, }; @@ -22,6 +22,22 @@ pub async fn logged_in(app: &App, login: &(String, Password), now: &RequestedAt) IdentityToken::new().set(token) } +pub async fn from_token(app: &App, token: &IdentityToken, issued_at: &RequestedAt) -> Identity { + let secret = token.secret().expect("identity token has a secret"); + let (token, login) = app + .logins() + .validate(&secret, issued_at) + .await + .expect("always validates newly-issued secret"); + + Identity { token, login } +} + +pub async fn identity(app: &App, login: &(String, Password), issued_at: &RequestedAt) -> Identity { + let secret = logged_in(app, login, issued_at).await; + from_token(app, &secret, issued_at).await +} + pub fn secret(identity: &IdentityToken) -> IdentitySecret { identity.secret().expect("identity contained a secret") } |
