def test_Event__init__(): e = Event('rfid_id', {'context': True}, EventType.NONE) assert e.id == 'rfid_id' assert e.ctx == {'context': True} assert e.type == EventType.NONE assert e.__repr__( ) == "Event('rfid_id', {'context': True}, EventType.NONE)" assert e.__str__() == e.__repr__()
def main(**config): ctx = SimpleNamespace(**config) logging.basicConfig( level=getattr(logging, ctx.log_level.upper()), format= '%(asctime)s %(levelname)s %(pathname)s (line: %(lineno)d): %(message)s' ) ctx.handlers = register_handlers(ctx) logging.debug(f'Handlers: {ctx.handlers}') reader = rfidreader.RFIDReader( ctx.reader_type, parse_reader_args(ctx.reader_type, config['reader_args'])) router = Router(ctx) logging.info('Waiting for MagicBand...') ctx.led_controller = LedController(brightness=ctx.brightness_level, outer_pixels=ctx.outer_pixel_count, inner_pixels=ctx.inner_pixel_count) while True: rfid_id = reader.read() # There are times when the reader does not return a value. I believe this has to do with not being able to fully # power up the tag, probably due to an older tag, make sure we don't attempt to handle this event if rfid_id: logging.debug(f'Read "{rfid_id}" from the reader') # Need to create the event once, handlers may update attributes event = Event(rfid_id, ctx) router.route(event)
def test_AbstractHandler_handle_none_event(): # Call the real one, it's an empty method so it should never throw and exception # and this ensures coverage AbstractHandler().handle_none_event(None) h = FakeHandler() e = Event(None, {}, type=EventType.NONE) h.handle_event(e) assert h.handle_none_event_called == (e,)
@patch('magicbandreader.handlers.event_type.RfidSecuritySvcAuthorizer') def test_Handler___init__(RfidSecuritySvcAuthorizer, context): authorizer = RfidSecuritySvcAuthorizer.return_value assert not hasattr(context, 'authorizer') h = Handler(context, authorizer) assert h.priority == 10 assert hasattr(context, 'authorizer') assert context.authorizer == authorizer @pytest.mark.parametrize( ('event', 'authorized', 'event_type'), [ (Event('test_id', None), True, EventType.AUTHORIZED), (Event('test_id', None), False, EventType.UNAUTHORIZED), (Event(None, None), None, EventType.NONE), ] ) @patch('magicbandreader.handlers.event_type.RfidSecuritySvcAuthorizer') def test_Handler_handle_event(RfidSecuritySvcAuthorizer, event, authorized, event_type, context): assert event.type is None authorizer = RfidSecuritySvcAuthorizer.return_value h = Handler(context, authorizer) authorizer.authorized.return_value = authorized h.handle_event(event) if event.id: authorizer.authorized.assert_called_once_with(event.id) assert event.type == event_type
def auth_event(context): return Event('test_id', context, EventType.AUTHORIZED)
def none_event(context): return Event(None, context, EventType.NONE)
def test_AbstractHandler_handle_event_notype(logging): h = FakeHandler(priority=1) e = Event(None, {}, type=None) h.handle_event(e) logging.warn.assert_called_once_with(('handle_event called on FakeHandler (priority: 1) but the event has no type. ', 'Please check the priority order of the handlers.'))