From 713d41e81cd656b78a70099dc5fc43119bd0a3d9 Mon Sep 17 00:00:00 2001 From: ahtlon Date: Sat, 23 May 2026 19:49:02 +0200 Subject: [PATCH] Add door.py tests --- test/test_services/test_door.py | 61 +++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 test/test_services/test_door.py diff --git a/test/test_services/test_door.py b/test/test_services/test_door.py new file mode 100644 index 0000000..b90e9ef --- /dev/null +++ b/test/test_services/test_door.py @@ -0,0 +1,61 @@ +import pytest +import datetime +from app.services.door import checkAccess +from app.model.models import Card, GroupDB, AccessAuthorizationDB, Timetable + +def test_check_access_with_valid_timetable(db_session): + # Setup: create card with valid access + group = GroupDB(name="Test Group") + db_session.add(group) + db_session.commit() + + card = Card(uuid="test-uuid-123", group_id=group.id) + db_session.add(card) + + timetable = Timetable( + weekday=datetime.datetime.weekday(datetime.date.today()), + starttime=datetime.datetime.now().time(), + duration=120 # 2 hours + ) + db_session.add(timetable) + + aa = AccessAuthorizationDB(name="Test AA", is_active=True) + db_session.add(aa) + aa.timetables = [timetable] + group.accessauths = [aa] + + db_session.commit() + + # Test: access should be granted within time window + result = checkAccess("test-uuid-123", db_session) + assert result == True + +def test_check_access_outside_hours(db_session): + # Test when current time is outside valid hours + group = GroupDB(name="Test Group") + db_session.add(group) + db_session.commit() + + card = Card(uuid="test-uuid-123", group_id=group.id) + db_session.add(card) + + timetable = Timetable( + weekday=datetime.datetime.weekday(datetime.date.today()), + starttime=datetime.time(1, 0), + duration=1 # 2 hours + ) + db_session.add(timetable) + + aa = AccessAuthorizationDB(name="Test AA", is_active=True) + db_session.add(aa) + aa.timetables = [timetable] + group.accessauths = [aa] + + db_session.commit() + result = checkAccess("test-uuid-123", db_session) + assert result == False + +def test_check_access_invalid_card(db_session): + # Should raise exception for non-existent card + with pytest.raises(Exception): + checkAccess("non-existent-uuid", db_session)