feat: define interface to change password

This commit is contained in:
realaravinth 2022-05-11 19:51:06 +05:30
parent f398c4b61c
commit f55a383eb5
No known key found for this signature in database
GPG key ID: AD9F0F08E855ED88
2 changed files with 17 additions and 1 deletions

View file

@ -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<NameHash>;
/// update user's password
async fn update_password(&self, p: &NameHash) -> DBResult<()>;
}
/// Trait to clone MCDatabase

View file

@ -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(),