|
16 | 16 |
|
17 | 17 | package org.springframework.web.socket.messaging;
|
18 | 18 |
|
| 19 | +import static org.hamcrest.Matchers.is; |
| 20 | +import static org.junit.Assert.assertArrayEquals; |
| 21 | +import static org.junit.Assert.assertEquals; |
| 22 | +import static org.junit.Assert.assertFalse; |
| 23 | +import static org.junit.Assert.assertNotNull; |
| 24 | +import static org.junit.Assert.assertThat; |
| 25 | +import static org.junit.Assert.assertTrue; |
| 26 | +import static org.mockito.Mockito.mock; |
| 27 | +import static org.mockito.Mockito.reset; |
| 28 | +import static org.mockito.Mockito.times; |
| 29 | +import static org.mockito.Mockito.verify; |
| 30 | +import static org.mockito.Mockito.verifyNoMoreInteractions; |
| 31 | +import static org.mockito.Mockito.verifyZeroInteractions; |
| 32 | + |
19 | 33 | import java.nio.ByteBuffer;
|
20 | 34 | import java.util.ArrayList;
|
21 | 35 | import java.util.Arrays;
|
|
28 | 42 | import org.junit.Test;
|
29 | 43 | import org.mockito.ArgumentCaptor;
|
30 | 44 | import org.mockito.Mockito;
|
31 |
| - |
32 | 45 | import org.springframework.context.ApplicationEvent;
|
33 | 46 | import org.springframework.context.ApplicationEventPublisher;
|
34 | 47 | import org.springframework.messaging.Message;
|
|
50 | 63 | import org.springframework.messaging.support.ImmutableMessageChannelInterceptor;
|
51 | 64 | import org.springframework.messaging.support.MessageBuilder;
|
52 | 65 | import org.springframework.messaging.support.MessageHeaderAccessor;
|
| 66 | +import org.springframework.util.MimeTypeUtils; |
| 67 | +import org.springframework.web.socket.BinaryMessage; |
53 | 68 | import org.springframework.web.socket.CloseStatus;
|
54 | 69 | import org.springframework.web.socket.TextMessage;
|
55 | 70 | import org.springframework.web.socket.WebSocketMessage;
|
56 | 71 | import org.springframework.web.socket.handler.TestWebSocketSession;
|
57 | 72 | import org.springframework.web.socket.sockjs.transport.SockJsSession;
|
58 | 73 |
|
59 |
| -import static org.hamcrest.Matchers.*; |
60 |
| -import static org.junit.Assert.*; |
61 |
| -import static org.mockito.Mockito.*; |
62 |
| - |
63 | 74 | /**
|
64 | 75 | * Test fixture for {@link StompSubProtocolHandler} tests.
|
65 | 76 | *
|
@@ -267,6 +278,38 @@ public void handleMessageToClientUserDestination() {
|
267 | 278 | assertFalse(((String) textMessage.getPayload()).contains(SimpMessageHeaderAccessor.ORIGINAL_DESTINATION));
|
268 | 279 | }
|
269 | 280 |
|
| 281 | + // SPR-12475 |
| 282 | + |
| 283 | + @Test |
| 284 | + public void handleMessageToClientBinaryWebSocketMessage() { |
| 285 | + |
| 286 | + StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.MESSAGE); |
| 287 | + headers.setMessageId("mess0"); |
| 288 | + headers.setSubscriptionId("sub0"); |
| 289 | + headers.setContentType(MimeTypeUtils.APPLICATION_OCTET_STREAM); |
| 290 | + headers.setDestination("/queue/foo"); |
| 291 | + |
| 292 | + // Non-empty payload |
| 293 | + |
| 294 | + byte[] payload = new byte[1]; |
| 295 | + Message<byte[]> message = MessageBuilder.createMessage(payload, headers.getMessageHeaders()); |
| 296 | + this.protocolHandler.handleMessageToClient(this.session, message); |
| 297 | + |
| 298 | + assertEquals(1, this.session.getSentMessages().size()); |
| 299 | + WebSocketMessage<?> webSocketMessage = this.session.getSentMessages().get(0); |
| 300 | + assertTrue(webSocketMessage instanceof BinaryMessage); |
| 301 | + |
| 302 | + // Empty payload |
| 303 | + |
| 304 | + payload = EMPTY_PAYLOAD; |
| 305 | + message = MessageBuilder.createMessage(payload, headers.getMessageHeaders()); |
| 306 | + this.protocolHandler.handleMessageToClient(this.session, message); |
| 307 | + |
| 308 | + assertEquals(2, this.session.getSentMessages().size()); |
| 309 | + webSocketMessage = this.session.getSentMessages().get(1); |
| 310 | + assertTrue(webSocketMessage instanceof TextMessage); |
| 311 | + } |
| 312 | + |
270 | 313 | @Test
|
271 | 314 | public void handleMessageFromClient() {
|
272 | 315 |
|
|
0 commit comments