43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from database import DatabaseBackend
|
|
|
|
|
|
class DatabaseTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.temp = tempfile.TemporaryDirectory()
|
|
self.db = DatabaseBackend(Path(self.temp.name) / "test.sqlite3")
|
|
|
|
def tearDown(self):
|
|
self.db.close()
|
|
self.temp.cleanup()
|
|
|
|
def test_default_admin(self):
|
|
account = self.db.verify_account("reximemo", "alpine")
|
|
self.assertIsNotNone(account)
|
|
self.assertEqual(account["is_admin"], 1)
|
|
|
|
def test_ip_login_and_logout(self):
|
|
aid = self.db.create_account("tester", "pass")
|
|
self.db.login_ip("192.0.2.10", aid)
|
|
self.assertEqual(self.db.account_for_ip("192.0.2.10")["username"], "tester")
|
|
self.db.logout_ip("192.0.2.10")
|
|
self.assertIsNone(self.db.account_for_ip("192.0.2.10"))
|
|
|
|
def test_guest_room_is_stable_per_ip(self):
|
|
first = self.db.get_or_create_creator("192.0.2.20", fsid="A000000000000010", display_name="Guest")
|
|
second = self.db.get_or_create_creator("192.0.2.20", fsid="A000000000000011", display_name="Other")
|
|
self.assertEqual(first["id"], second["id"])
|
|
|
|
def test_ip_ban(self):
|
|
self.db.ban_ip("192.0.2.30", "test")
|
|
self.assertTrue(self.db.is_ip_banned("192.0.2.30"))
|
|
self.db.unban_ip("192.0.2.30")
|
|
self.assertFalse(self.db.is_ip_banned("192.0.2.30"))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|
