diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-10-27 18:23:34 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-10-28 02:08:11 -0400 |
| commit | be21b088f0d1b591cbd8dcfed1e06f2742a524d0 (patch) | |
| tree | 7b4b006d485c921def8d1f4605257763d218feb6 /src/test/verify | |
| parent | d66728889105f6f1ef5113d9ceb223e362df0008 (diff) | |
Convert the `Tokens` component into a freestanding struct.
As with the `Setup` component, I've generalized the associated middleware across anything that can provide a `Tokens`, where possible.
Diffstat (limited to 'src/test/verify')
| -rw-r--r-- | src/test/verify/identity.rs | 26 | ||||
| -rw-r--r-- | src/test/verify/token.rs | 29 |
2 files changed, 37 insertions, 18 deletions
diff --git a/src/test/verify/identity.rs b/src/test/verify/identity.rs index 8e2d36e..fba2a4d 100644 --- a/src/test/verify/identity.rs +++ b/src/test/verify/identity.rs @@ -1,31 +1,43 @@ +use axum::extract::FromRef; + use crate::{ - app::App, login::Login, name::Name, test::{fixtures, verify}, - token::{app::ValidateError, extract::IdentityCookie}, + token::{ + app::{Tokens, ValidateError}, + extract::IdentityCookie, + }, }; -pub async fn valid_for_name(app: &App, identity: &IdentityCookie, name: &Name) { +pub async fn valid_for_name<App>(app: &App, identity: &IdentityCookie, name: &Name) +where + Tokens: FromRef<App>, +{ let secret = identity .secret() .expect("identity cookie must be set to be valid"); verify::token::valid_for_name(app, &secret, name).await; } -pub async fn valid_for_login(app: &App, identity: &IdentityCookie, login: &Login) { +pub async fn valid_for_login<App>(app: &App, identity: &IdentityCookie, login: &Login) +where + Tokens: FromRef<App>, +{ let secret = identity .secret() .expect("identity cookie must be set to be valid"); verify::token::valid_for_login(app, &secret, login).await; } -pub async fn invalid(app: &App, identity: &IdentityCookie) { +pub async fn invalid<App>(app: &App, identity: &IdentityCookie) +where + Tokens: FromRef<App>, +{ let secret = identity .secret() .expect("identity cookie must be set to be invalid"); - let validate_err = app - .tokens() + let validate_err = Tokens::from_ref(app) .validate(&secret, &fixtures::now()) .await .expect_err("identity cookie secret must be invalid"); diff --git a/src/test/verify/token.rs b/src/test/verify/token.rs index adc4397..1b61a19 100644 --- a/src/test/verify/token.rs +++ b/src/test/verify/token.rs @@ -1,32 +1,39 @@ +use axum::extract::FromRef; + use crate::{ - app::App, login::Login, name::Name, test::fixtures, - token::{Secret, app}, + token::{Secret, app, app::Tokens}, }; -pub async fn valid_for_name(app: &App, secret: &Secret, name: &Name) { - let identity = app - .tokens() +pub async fn valid_for_name<App>(app: &App, secret: &Secret, name: &Name) +where + Tokens: FromRef<App>, +{ + let identity = Tokens::from_ref(app) .validate(secret, &fixtures::now()) .await .expect("provided secret is valid"); assert_eq!(name, &identity.login.name); } -pub async fn valid_for_login(app: &App, secret: &Secret, login: &Login) { - let identity = app - .tokens() +pub async fn valid_for_login<App>(app: &App, secret: &Secret, login: &Login) +where + Tokens: FromRef<App>, +{ + let identity = Tokens::from_ref(app) .validate(secret, &fixtures::now()) .await .expect("provided secret is valid"); assert_eq!(login, &identity.login); } -pub async fn invalid(app: &App, secret: &Secret) { - let error = app - .tokens() +pub async fn invalid<App>(app: &App, secret: &Secret) +where + Tokens: FromRef<App>, +{ + let error = Tokens::from_ref(app) .validate(secret, &fixtures::now()) .await .expect_err("provided secret is invalid"); |
