def create_event_from_string(response_from_server): pr = event_parser.EventParser() event_from_server = pr.parse_string_to_event(response_from_server) if event_from_server.event_type == event_types.LOGIN_RESPONSE: if event_from_server.code == event_types.CODE_ACCEPT: logging.info("LOGIN ACCEPTED") module_var.isLogged = True # When username exists elif event_from_server.code == event_types.CODE_REJECT: logging.info("LOGIN REJECT") elif event_from_server.event_type == event_types.MESSAGE_REQUEST: event_from_server_object = { 'user': event_from_server.login, 'messageText': event_from_server.message, 'created': event_from_server.timestamp } module_var.all_messages.append(event_from_server_object) elif event_from_server.event_type == event_types.ONLINE_REQUEST: module_var.online_list.clear() module_var.online_list = eval(event_from_server.online_users)
async def handle_connection(reader, writer): addr = writer.get_extra_info('peername') logging.info(str(addr) + " connected") while True: try: data = await get_data_from_client(reader) event = event_parser.EventParser().parse_string_to_event(data) except (IndexError, ValueError) as e: removed_username = online_store.remove_by_writer(writer) if not removed_username == None: logging.info("REMOVING: " + str(removed_username)) writer.close() message = event_types.MessageRequest( "SERVER", removed_username + " disconnected") await pass_massage(message.convert_to_string()) break if event.event_type == event_types.MESSAGE_REQUEST: await pass_massage(data) elif event.event_type == event_types.LOGIN_REQUEST: code = '' if not online_store.check_if_online(event.login): code = event_types.CODE_ACCEPT else: code = event_types.CODE_REJECT login_response = event_types.LoginResponse(code) if login_response.code == event_types.CODE_ACCEPT: online_store.add_new_user(event.login, writer) message = event_types.MessageRequest( "SERVER", event.login + " connected") await pass_massage(message.convert_to_string()) await send_data_to_client(writer, login_response.convert_to_string()) elif event.event_type == event_types.LOGOUT_REQUEST: removed_username = online_store.remove_by_writer(writer) if not removed_username == None: logging.info("LOGGING OUT: " + str(removed_username)) message = event_types.MessageRequest( "SERVER", removed_username + " disconnected") await pass_massage(message.convert_to_string()) else: await send_data_to_client(writer, "mordo ja nie wiem") await writer.drain()
class TestParserMethods(unittest.TestCase): x = event_types.BaseRequest('test') y = event_types.LoginRequest('test2') pr = event_parser.EventParser() def test_if_object_is_base_type(self): parsed_object = self.pr.parse_string_to_event( self.x.convert_to_string()) self.assertEqual(parsed_object.event_type, event_types.BASE, msg=None) def test_if_object_is_login_request(self): parsed_object = self.pr.parse_string_to_event( self.y.convert_to_string()) self.assertEqual(parsed_object.event_type, event_types.LOGIN_REQUEST, msg=None) def test_if_get_full_length_is_valid_login(self): self.assertEqual(21, event_parser.get_full_length("length:10$$login:user")) def test_if_get_full_length_is_valid_msg(self): self.assertEqual( 113, event_parser.get_full_length( "length:101$$event_type:msg$$login:user$")) def test_if_colon_message(self): event = event_parser.EventParser().parse_string_to_event( event_types.MessageRequest("login", ":co:tam:").convert_to_string()) self.assertEqual(":co:tam:", event.message) def test_if_colon(self): event = event_parser.EventParser().parse_string_to_event( event_types.MessageRequest("login", ":").convert_to_string()) self.assertEqual(":", event.message) def test_two_dollars(self): event = event_parser.EventParser().parse_string_to_event( event_types.MessageRequest("login", "$$").convert_to_string()) self.assertEqual("$$", event.message)
def test_two_dollars(self): event = event_parser.EventParser().parse_string_to_event( event_types.MessageRequest("login", "$$").convert_to_string()) self.assertEqual("$$", event.message)
def test_if_colon(self): event = event_parser.EventParser().parse_string_to_event( event_types.MessageRequest("login", ":").convert_to_string()) self.assertEqual(":", event.message)
import event_types import event_parser import unittest ''' Use examples ''' x = event_types.BaseRequest('test') y = event_types.LoginRequest('test2') messageRequest = event_types.MessageRequest('test3', "Hello, it's a test") onlineRequest = event_types.OnlineRequest() onlineRequest.add_user("test") pr = event_parser.EventParser() lr = event_types.LoginResponse(event_types.CODE_ACCEPT) lr_error = event_types.LoginResponse(event_types.CODE_ERROR) ret_obj = pr.parse_string_to_event(y.convert_to_string()) message_obj = pr.parse_string_to_event(messageRequest.convert_to_string()) class TestStringMethods(unittest.TestCase): x = event_types.BaseRequest('test') y = event_types.LoginRequest('test2')