114 lines
4.1 KiB
Python
114 lines
4.1 KiB
Python
import unittest
|
|
import os
|
|
import shutil
|
|
|
|
from simple_chat_api.db_handler.db_handler import DbConnector
|
|
from simple_chat_api.db_handler.user_manager import UserManager
|
|
|
|
DB_PATH = "./data/TEST.sqlite"
|
|
|
|
EXISTING_USER = ("admin", "admin")
|
|
|
|
class TestUserManagmentWrapper(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
shutil.copyfile("docs/unittest_sample.sqlite", DB_PATH)
|
|
db = DbConnector(f"sqlite:///{DB_PATH}")
|
|
self.user_mgr = UserManager(db)
|
|
|
|
def tearDown(self):
|
|
self.user_mgr.db_con.close()
|
|
os.remove(DB_PATH)
|
|
|
|
def test_create_user(self):
|
|
users = [("someone", "pass"), ("someone", "fail")]
|
|
for user in users:
|
|
with self.subTest(user):
|
|
ret = self.user_mgr.create_user(*user)
|
|
if user[1] == "fail":
|
|
self.assertFalse(ret, f"user {user} was created but should not")
|
|
else:
|
|
self.assertTrue(ret, f"user {user} faild to be created")
|
|
|
|
def test_authenticate(self):
|
|
test_cases = [
|
|
{
|
|
"username": EXISTING_USER[0],
|
|
"password": EXISTING_USER[1],
|
|
"expected": True,
|
|
"msg": f"Existing user {EXISTING_USER} could not be authenticated"
|
|
},
|
|
{
|
|
"username": EXISTING_USER[0],
|
|
"password": "unknown_pass",
|
|
"expected": False,
|
|
"msg": f"Existing user {EXISTING_USER[0]} could be authenticated with wrong password"
|
|
},
|
|
{
|
|
"username": "unknown_user",
|
|
"password": "unknown_pass",
|
|
"expected": False,
|
|
"msg": "An unknown user was authenticated"
|
|
},
|
|
]
|
|
|
|
for case in test_cases:
|
|
with self.subTest(username=case["username"], password=case["password"]):
|
|
result = self.user_mgr.authenticate(case["username"], case["password"])
|
|
self.assertEqual(result, case["expected"], case["msg"])
|
|
|
|
def test_delete_user(self):
|
|
test_cases = [
|
|
{
|
|
"username": EXISTING_USER[0],
|
|
"expected": True,
|
|
"msg": f"The existing user {EXISTING_USER[0]} could not be removed"
|
|
},
|
|
{
|
|
"username": "unknown_user",
|
|
"expected": False,
|
|
"msg": "an unknown user could be deleted"
|
|
},
|
|
]
|
|
for case in test_cases:
|
|
with self.subTest(username=case["username"]):
|
|
result = self.user_mgr.delete_user(case["username"])
|
|
self.assertEqual(result, case["expected"], case["msg"])
|
|
|
|
def test_change_password(self):
|
|
test_cases = [
|
|
{
|
|
"username": EXISTING_USER[0],
|
|
"new_password": "new_pass",
|
|
"expected": True,
|
|
"msg": f"Could not change password for existing user {EXISTING_USER[0]}"
|
|
},
|
|
{
|
|
"username": "unknown_user",
|
|
"new_password": "new_pass",
|
|
"expected": False,
|
|
"msg": "The password for an unknown user was changed"
|
|
},
|
|
]
|
|
for case in test_cases:
|
|
with self.subTest(username=case["username"]):
|
|
result = self.user_mgr.change_user_password(case["username"], case["new_password"])
|
|
self.assertEqual(result, case["expected"], case["msg"])
|
|
|
|
def test_check_user_exists(self):
|
|
test_cases = [
|
|
{
|
|
"username": EXISTING_USER[0],
|
|
"expected": True,
|
|
"msg": f"The existing user {EXISTING_USER[0]} could not be found"
|
|
},
|
|
{
|
|
"username": "unknown_user",
|
|
"expected": False,
|
|
"msg": "An unknown user was found"
|
|
},
|
|
]
|
|
for case in test_cases:
|
|
with self.subTest(username=case["username"]):
|
|
result = self.user_mgr.check_user_exists(case["username"])
|
|
self.assertEqual(result, case["expected"], case["msg"]) |