@Test public void handleMessageFromClient() { TextMessage textMessage = StompTextMessageBuilder.create(StompCommand.CONNECT) .headers( "login:guest", "passcode:guest", "accept-version:1.1,1.0", "heart-beat:10000,10000") .build(); this.protocolHandler.handleMessageFromClient(this.session, textMessage, this.channel); verify(this.channel).send(this.messageCaptor.capture()); Message<?> actual = this.messageCaptor.getValue(); assertNotNull(actual); StompHeaderAccessor headers = StompHeaderAccessor.wrap(actual); assertEquals(StompCommand.CONNECT, headers.getCommand()); assertEquals("s1", headers.getSessionId()); assertEquals("joe", headers.getUser().getName()); assertEquals("guest", headers.getLogin()); assertEquals("PROTECTED", headers.getPasscode()); assertArrayEquals(new long[] {10000, 10000}, headers.getHeartbeat()); assertEquals(new HashSet<>(Arrays.asList("1.1", "1.0")), headers.getAcceptVersion()); assertEquals(0, this.session.getSentMessages().size()); }
@Test public void handleMessageToClientConnectAck() { StompHeaderAccessor connectHeaders = StompHeaderAccessor.create(StompCommand.CONNECT); connectHeaders.setHeartbeat(10000, 10000); connectHeaders.setNativeHeader(StompHeaderAccessor.STOMP_ACCEPT_VERSION_HEADER, "1.0,1.1"); Message<?> connectMessage = MessageBuilder.withPayload(new byte[0]).setHeaders(connectHeaders).build(); SimpMessageHeaderAccessor connectAckHeaders = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT_ACK); connectAckHeaders.setHeader(SimpMessageHeaderAccessor.CONNECT_MESSAGE_HEADER, connectMessage); Message<byte[]> connectAckMessage = MessageBuilder.withPayload(new byte[0]).setHeaders(connectAckHeaders).build(); this.protocolHandler.handleMessageToClient(this.session, connectAckMessage); verifyNoMoreInteractions(this.channel); // Check CONNECTED reply assertEquals(1, this.session.getSentMessages().size()); TextMessage textMessage = (TextMessage) this.session.getSentMessages().get(0); Message<?> message = new StompDecoder().decode(ByteBuffer.wrap(textMessage.getPayload().getBytes())); StompHeaderAccessor replyHeaders = StompHeaderAccessor.wrap(message); assertEquals(StompCommand.CONNECTED, replyHeaders.getCommand()); assertEquals("1.1", replyHeaders.getVersion()); assertArrayEquals(new long[] {0, 0}, replyHeaders.getHeartbeat()); assertEquals("joe", replyHeaders.getNativeHeader("user-name").get(0)); }