def test_receive_valid_json_invalid_message(self): """ If a message is received that consists of valid json but a malformed message then log the incident for later analysis. """ patcher = mock.patch('drogulus.net.netstring.log.error') nc = NetstringConnector(self.event_loop) ping = { 'uuid': str(uuid.uuid4()), 'recipient': PUBLIC_KEY, 'sender': BAD_PUBLIC_KEY, 'reply_port': 1908, 'version': self.version, } seal = get_seal(ping, PRIVATE_KEY) ping['seal'] = seal ping['message'] = 'ping' raw = json.dumps(ping) sender = '192.168.0.1' handler = Node(PUBLIC_KEY, PRIVATE_KEY, self.event_loop, nc, 1908) protocol = mock.MagicMock() mock_log = patcher.start() nc.receive(raw, sender, handler, protocol) self.assertEqual(3, mock_log.call_count) patcher.stop()
def test_receive_valid_json_valid_message_from_old_peer(self): """ A good message is received then the node handles the message as expected. The cached protocol object for the peer node is expired since a new protocol object is used in this instance. """ nc = NetstringConnector(self.event_loop) old_protocol = mock.MagicMock() network_id = sha512(PUBLIC_KEY.encode('ascii')).hexdigest() nc._connections[network_id] = old_protocol ok = { 'uuid': str(uuid.uuid4()), 'recipient': PUBLIC_KEY, 'sender': PUBLIC_KEY, 'reply_port': 1908, 'version': self.version, } seal = get_seal(ok, PRIVATE_KEY) ok['seal'] = seal ok['message'] = 'ok' raw = json.dumps(ok) sender = '192.168.0.1' handler = Node(PUBLIC_KEY, PRIVATE_KEY, self.event_loop, nc, 1908) handler.message_received = mock.MagicMock() protocol = mock.MagicMock() nc.receive(raw, sender, handler, protocol) self.assertIn(network_id, nc._connections) self.assertEqual(nc._connections[network_id], protocol) msg = from_dict(ok) handler.message_received.assert_called_once_with(msg, 'netstring', sender, msg.reply_port)
def test_receive_invalid_json(self): """ If a message is received that contains bad json then log the incident for later analysis. """ patcher = mock.patch('drogulus.net.netstring.log.error') nc = NetstringConnector(self.event_loop) sender = '192.168.0.1' handler = Node(PUBLIC_KEY, PRIVATE_KEY, self.event_loop, nc, 1908) protocol = mock.MagicMock() raw = 'invalid JSON' mock_log = patcher.start() nc.receive(raw, sender, handler, protocol) self.assertEqual(3, mock_log.call_count) patcher.stop()