From dda936d207174e772b16f6a2c0c29ee9e6a97f61 Mon Sep 17 00:00:00 2001
From: realaravinth <realaravinth@batsense.net>
Date: Sat, 17 Jul 2021 18:14:03 +0530
Subject: [PATCH] "duplicate email check"

---
 src/api/v1/account/test.rs | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/api/v1/account/test.rs b/src/api/v1/account/test.rs
index 10e32fe5..1eec5ecd 100644
--- a/src/api/v1/account/test.rs
+++ b/src/api/v1/account/test.rs
@@ -121,17 +121,22 @@ async fn email_udpate_password_validation_del_userworks() {
     const NAME: &str = "testuser2";
     const PASSWORD: &str = "longpassword2";
     const EMAIL: &str = "testuser1@a.com2";
+    const NAME2: &str = "eupdauser";
+    const EMAIL2: &str = "eupdauser@a.com";
 
     {
         let data = Data::new().await;
         delete_user(NAME, &data).await;
+        delete_user(NAME2, &data).await;
     }
 
+    let _ = register_and_signin(NAME2, EMAIL2, PASSWORD).await;
     let (data, creds, signin_resp) = register_and_signin(NAME, EMAIL, PASSWORD).await;
     let cookies = get_cookie!(signin_resp);
     let app = get_app!(data).await;
 
-    let email_payload = Email {
+    // update email
+    let mut email_payload = Email {
         email: EMAIL.into(),
     };
     let email_update_resp = test::call_service(
@@ -142,9 +147,21 @@ async fn email_udpate_password_validation_del_userworks() {
             .to_request(),
     )
     .await;
-
     assert_eq!(email_update_resp.status(), StatusCode::OK);
 
+    // check duplicate email while dupate email
+    email_payload.email = EMAIL2.into();
+    bad_post_req_test(
+        NAME,
+        PASSWORD,
+        ROUTES.account.update_email,
+        &email_payload,
+        ServiceError::EmailTaken,
+        StatusCode::BAD_REQUEST,
+    )
+    .await;
+
+    // wrong password while deleteing account
     let mut payload = Password {
         password: NAME.into(),
     };
@@ -158,6 +175,7 @@ async fn email_udpate_password_validation_del_userworks() {
     )
     .await;
 
+    // delete account
     payload.password = PASSWORD.into();
     let delete_user_resp = test::call_service(
         &app,
@@ -169,6 +187,7 @@ async fn email_udpate_password_validation_del_userworks() {
 
     assert_eq!(delete_user_resp.status(), StatusCode::OK);
 
+    // try to delete an account that doesn't exist
     let account_not_found_resp = test::call_service(
         &app,
         post_request!(&payload, ROUTES.account.delete)