test: speed up admin auth hashing in tests

This commit is contained in:
a.tolmachev
2026-04-01 00:00:25 +03:00
parent 94ca6b20d9
commit c26e1ac258
+22 -4
View File
@@ -2,6 +2,8 @@ use argon2::{
Argon2,
password_hash::{PasswordHash, PasswordHasher, PasswordVerifier, SaltString, rand_core::OsRng},
};
#[cfg(test)]
use argon2::{Algorithm, Params, Version};
use axum::{
extract::{OriginalUri, Request, State},
middleware::Next,
@@ -54,7 +56,7 @@ pub struct SessionCookie {
pub fn hash_password(password: &str, pepper: &str) -> Result<String, ApiError> {
let salt = SaltString::generate(&mut OsRng);
let password = format!("{password}{pepper}");
Argon2::default()
password_hasher()?
.hash_password(password.as_bytes(), &salt)
.map(|hash| hash.to_string())
.map_err(|error| ApiError::internal(format!("failed to hash password: {error}")))
@@ -65,9 +67,25 @@ pub fn verify_password(password: &str, pepper: &str, password_hash: &str) -> boo
return false;
};
let password = format!("{password}{pepper}");
Argon2::default()
.verify_password(password.as_bytes(), &parsed)
.is_ok()
match password_hasher() {
Ok(argon2) => argon2.verify_password(password.as_bytes(), &parsed).is_ok(),
Err(_) => false,
}
}
fn password_hasher() -> Result<Argon2<'static>, ApiError> {
#[cfg(test)]
{
let params = Params::new(8 * 1024, 1, 1, None).map_err(|error| {
ApiError::internal(format!("failed to initialize test argon2 params: {error}"))
})?;
Ok(Argon2::new(Algorithm::Argon2id, Version::V0x13, params))
}
#[cfg(not(test))]
{
Ok(Argon2::default())
}
}
pub fn create_session_cookie(settings: &AuthSettings) -> Result<SessionCookie, ApiError> {