diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-09-19 01:25:31 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-09-20 23:55:22 -0400 |
| commit | e5f72711c5a17c5db24e209b14f82d426eceb86e (patch) | |
| tree | 04865172284c86549dd08d700c21a29c36f54005 /src/login/app.rs | |
| parent | 0079624488af334817f58e30dbc676d3adde8de6 (diff) | |
Write tests.
Diffstat (limited to 'src/login/app.rs')
| -rw-r--r-- | src/login/app.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/login/app.rs b/src/login/app.rs index 292a564..10609c6 100644 --- a/src/login/app.rs +++ b/src/login/app.rs @@ -48,6 +48,17 @@ impl<'a> Logins<'a> { Ok(token) } + #[cfg(test)] + pub async fn create(&self, name: &str, password: &str) -> Result<Login, CreateError> { + let password_hash = StoredHash::new(password)?; + + let mut tx = self.db.begin().await?; + let login = tx.logins().create(name, &password_hash).await?; + tx.commit().await?; + + Ok(login) + } + pub async fn validate(&self, secret: &str, used_at: &DateTime) -> Result<Login, ValidateError> { // Somewhat arbitrarily, expire after 7 days. let expire_at = used_at.to_owned() - TimeDelta::days(7); @@ -87,6 +98,14 @@ pub enum LoginError { PasswordHashError(#[from] password_hash::Error), } +#[cfg(test)] +#[derive(Debug, thiserror::Error)] +#[error(transparent)] +pub enum CreateError { + DatabaseError(#[from] sqlx::Error), + PasswordHashError(#[from] password_hash::Error), +} + #[derive(Debug, thiserror::Error)] pub enum ValidateError { #[error("invalid token")] |
