summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-10-27 18:23:34 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-10-28 02:08:11 -0400
commitbe21b088f0d1b591cbd8dcfed1e06f2742a524d0 (patch)
tree7b4b006d485c921def8d1f4605257763d218feb6 /src/test
parentd66728889105f6f1ef5113d9ceb223e362df0008 (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')
-rw-r--r--src/test/verify/identity.rs26
-rw-r--r--src/test/verify/token.rs29
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");