diff --git a/db/db-core/src/lib.rs b/db/db-core/src/lib.rs index fdb4e390..163f6445 100644 --- a/db/db-core/src/lib.rs +++ b/db/db-core/src/lib.rs @@ -122,6 +122,9 @@ pub trait MCDatabase: std::marker::Send + std::marker::Sync + CloneSPDatabase { /// get a user's password async fn get_password(&self, l: &Login) -> DBResult; + + /// update user's password + async fn update_password(&self, p: &NameHash) -> DBResult<()>; } /// Trait to clone MCDatabase diff --git a/db/db-core/src/tests.rs b/db/db-core/src/tests.rs index d46c2a46..e2ef2098 100644 --- a/db/db-core/src/tests.rs +++ b/db/db-core/src/tests.rs @@ -38,7 +38,7 @@ pub async fn database_works<'a, T: MCDatabase>(db: &T, p: &Register<'a>) { assert_eq!(name_hash.username, p.username, "username matches"); // with email - let name_hash = db + let mut name_hash = db .get_password(&Login::Email(p.email.as_ref().unwrap())) .await .unwrap(); @@ -54,6 +54,19 @@ pub async fn database_works<'a, T: MCDatabase>(db: &T, p: &Register<'a>) { db.username_exists(p.username).await.unwrap(), "user is registered so username should exsit" ); + + // update password test. setting password = username + name_hash.hash = name_hash.username.clone(); + db.update_password(&name_hash).await.unwrap(); + + let name_hash = db.get_password(&Login::Username(p.username)).await.unwrap(); + assert_eq!( + name_hash.hash, p.username, + "user password matches with changed value" + ); + assert_eq!(name_hash.username, p.username, "username matches"); + + // deleting user for re-registration with email = None db.delete_user(p.username).await.unwrap(); assert!( !db.username_exists(p.username).await.unwrap(),