summaryrefslogtreecommitdiff
path: root/src/login/app.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-09-19 01:25:31 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-09-20 23:55:22 -0400
commite5f72711c5a17c5db24e209b14f82d426eceb86e (patch)
tree04865172284c86549dd08d700c21a29c36f54005 /src/login/app.rs
parent0079624488af334817f58e30dbc676d3adde8de6 (diff)
Write tests.
Diffstat (limited to 'src/login/app.rs')
-rw-r--r--src/login/app.rs19
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")]