def test_dataReceived_multiple_messages(self): hdrs = {'foo': '1'} body = 'blah' frame = {'cmd': 'MESSAGE', 'headers': hdrs, 'body': body} frameBytes = createFrame(frame).pack() + createFrame(frame).pack() stomp = StompClient() stomp.cmdMap[frame['cmd']] = mock.Mock() stomp.dataReceived(frameBytes) self.assertEquals(2, stomp.cmdMap[frame['cmd']].call_count) stomp.cmdMap[frame['cmd']].assert_called_with({'cmd': frame['cmd'], 'headers': hdrs, 'body': body})
def test_dataReceived_binary(self): body = binascii.a2b_hex('f0000a09') hdrs = {'foo': '1', 'content-length': str(len(body))} frame = {'cmd': 'MESSAGE', 'headers': hdrs, 'body': body} frameBytes = createFrame(frame).pack() stomp = StompClient() stomp.cmdMap[frame['cmd']] = mock.Mock() stomp.dataReceived(frameBytes) self.assertEquals(1, stomp.cmdMap[frame['cmd']].call_count) stomp.cmdMap[frame['cmd']].assert_called_with({'cmd': frame['cmd'], 'headers': hdrs, 'body': body})
def test_dataReceived_partial_message(self): hdrs = {'foo': '1'} body = 'blah' frame = {'cmd': 'MESSAGE', 'headers': hdrs, 'body': body} frameBytes = createFrame(frame).pack() split = 8 stomp = StompClient() stomp.cmdMap[frame['cmd']] = mock.Mock() stomp.dataReceived(frameBytes[:split]) stomp.dataReceived(frameBytes[split:]) self.assertEquals(1, stomp.cmdMap[frame['cmd']].call_count) stomp.cmdMap[frame['cmd']].assert_called_with({'cmd': frame['cmd'], 'headers': hdrs, 'body': body})
def test_frameParse_succeeds(self): message = { 'cmd': 'SEND', 'headers': {'foo': 'bar', 'hello ': 'there-world with space ', 'empty-value':'', '':'empty-header', 'destination': '/queue/blah'}, 'body': 'some stuff\nand more' } frame = createFrame(message) parser = StompParser() parser.add(frame.pack()) self.assertEqual(parser.getMessage(), {'cmd': frame.cmd, 'headers': frame.headers, 'body': frame.body}) self.assertEqual(parser.getMessage(), None) #This time remove optional trailing newline which stomper adds to frames parser.add(frame.pack()[:-1]) self.assertEqual(parser.getMessage(), {'cmd': frame.cmd, 'headers': frame.headers, 'body': frame.body}) self.assertEqual(parser.getMessage(), None)
def packFrame(self, message): return createFrame(message).pack()