import unittest from test_room import server class FeedbackTests(unittest.TestCase): def test_authenticated_poll_feedback_dedup_and_stale(self): now=[100] room=server.Room(':memory:',lambda:now[0]) packet=dict(cabinet='cabinet_01',protocol=2,boot='test',gpio='real',reports=[],feedback=dict(fresh=True,devices=[dict(id='reader',kind='rfid',port='J1',value='12345678',age_ms=0)],events=[dict(id='boot:1',device='reader',value='12345678')])) room.poll(packet);room.poll(packet) self.assertTrue(room.snapshot()['feedback']['fresh']) self.assertEqual(sum('Device reader' in x['message'] for x in room.state['history']),1) now[0]+=5 self.assertFalse(room.snapshot()['feedback']['fresh']) packet['feedback']['fresh']=False room.poll(packet) self.assertFalse(room.snapshot()['feedback']['fresh']) room.db.close() def test_invalid_feedback_is_bounded(self): room=server.Room(':memory:',lambda:100) room.receive_feedback(dict(devices=[{}]*33,events=[])) self.assertEqual(room.feedback,{}) room.receive_feedback(dict(devices=[dict(id='bad',kind='input',value=[],age_ms=0)],fresh=True)) self.assertEqual(room.feedback['devices'],[]) self.assertFalse(room.feedback['fresh']) room.db.close()