feat: define interface for updating username

This commit is contained in:
realaravinth 2022-05-11 20:01:32 +05:30
parent 748f48e0d2
commit 83f6456a59
No known key found for this signature in database
GPG key ID: AD9F0F08E855ED88
2 changed files with 19 additions and 3 deletions

View file

@ -125,6 +125,9 @@ pub trait MCDatabase: std::marker::Send + std::marker::Sync + CloneSPDatabase {
/// update user's password
async fn update_password(&self, p: &NameHash) -> DBResult<()>;
/// update username
async fn update_username(&self, current: &str, new: &str) -> DBResult<()>;
}
/// Trait to clone MCDatabase

View file

@ -66,10 +66,23 @@ pub async fn database_works<'a, T: MCDatabase>(db: &T, p: &Register<'a>) {
);
assert_eq!(name_hash.username, p.username, "username matches");
// deleting user for re-registration with email = None
db.delete_user(p.username).await.unwrap();
// update username to p.email
assert!(
!db.username_exists(p.username).await.unwrap(),
!db.username_exists(p.email.as_ref().unwrap()).await.unwrap(),
"user with p.email doesn't exist. pre-check to update username to p.email"
);
db.update_username(p.username, p.email.as_ref().unwrap())
.await
.unwrap();
assert!(
db.username_exists(p.email.as_ref().unwrap()).await.unwrap(),
"user with p.email exist post-update"
);
// deleting user for re-registration with email = None
db.delete_user(p.email.as_ref().unwrap()).await.unwrap();
assert!(
!db.username_exists(p.email.as_ref().unwrap()).await.unwrap(),
"user is deleted so username shouldn't exsit"
);