diff --git a/backend/src/neo_neo_todo/models/member.py b/backend/src/neo_neo_todo/models/member.py index 907bf24..78754f9 100644 --- a/backend/src/neo_neo_todo/models/member.py +++ b/backend/src/neo_neo_todo/models/member.py @@ -86,3 +86,44 @@ async def insert_member( member = await curr.fetchone() return None if member is None else member + + +async def update_member_password( + db: AsyncConnectionPool, id: int, password_hash: str +) -> bool: + async with db.connection() as conn: + async with conn.cursor(row_factory=class_row(Member)) as curr: + query = sql.SQL( + """ + UPDATE members + SET password_hash = (%s) + WHERE id = (%s) + """ + ) + + await curr.execute( + query, + ( + password_hash, + id, + ), + ) + + return curr.rowcount > 0 + + +async def update_member_email_verified(db: AsyncConnectionPool, id: int) -> bool: + async with db.connection() as conn: + async with conn.cursor(row_factory=class_row(Member)) as curr: + query = sql.SQL( + """ + UPDATE members SET email_verified = now() WHERE id = (%s) + """ + ) + + await curr.execute( + query, + (id,), + ) + + return curr.rowcount > 0 diff --git a/backend/tests/test_model_member.py b/backend/tests/test_model_member.py index 1df1fc0..d9f1c7e 100644 --- a/backend/tests/test_model_member.py +++ b/backend/tests/test_model_member.py @@ -5,6 +5,8 @@ from src.neo_neo_todo.models.member import ( insert_member, select_member_by_email, select_member_by_id, + update_member_email_verified, + update_member_password, ) @@ -33,3 +35,31 @@ async def test_model_member_insert(db_pool): await insert_member( db_pool, "Member_inserted@todo.test", "alkasdjfhasldkfjh12341238989" ) + + +async def test_model_member_update_password(db_pool): + update_password_success = await update_member_password( + db_pool, 1, "1234l1k2j34h97qsdhfasdjfh1923h4" + ) + + assert update_password_success is True + + update_password_fail = await update_member_password( + db_pool, 91203491234, "1234l1k2j34h97qsdhfasdjfh1923h4" + ) + + assert update_password_fail is False + + +async def test_model_member_email_verified(db_pool): + update_member_email_verified_success = await update_member_email_verified( + db_pool, 1 + ) + + assert update_member_email_verified_success is True + + update_member_email_verified_fail = await update_member_email_verified( + db_pool, 12341234918 + ) + + assert update_member_email_verified_fail is False