|
17 | 17 | package org.springframework.messaging.simp.stomp;
|
18 | 18 |
|
19 | 19 | import java.nio.charset.StandardCharsets;
|
| 20 | +import java.util.Arrays; |
20 | 21 | import java.util.Date;
|
21 | 22 | import java.util.Map;
|
22 | 23 | import java.util.concurrent.ScheduledFuture;
|
|
32 | 33 |
|
33 | 34 | import org.springframework.messaging.Message;
|
34 | 35 | import org.springframework.messaging.MessageDeliveryException;
|
| 36 | +import org.springframework.messaging.converter.ByteArrayMessageConverter; |
| 37 | +import org.springframework.messaging.converter.CompositeMessageConverter; |
35 | 38 | import org.springframework.messaging.converter.MessageConversionException;
|
36 | 39 | import org.springframework.messaging.converter.StringMessageConverter;
|
37 | 40 | import org.springframework.messaging.simp.stomp.StompSession.Receiptable;
|
@@ -83,7 +86,9 @@ public class DefaultStompSessionTests {
|
83 | 86 | public void setUp() {
|
84 | 87 | this.connectHeaders = new StompHeaders();
|
85 | 88 | this.session = new DefaultStompSession(this.sessionHandler, this.connectHeaders);
|
86 |
| - this.session.setMessageConverter(new StringMessageConverter()); |
| 89 | + this.session.setMessageConverter( |
| 90 | + new CompositeMessageConverter( |
| 91 | + Arrays.asList(new StringMessageConverter(), new ByteArrayMessageConverter()))); |
87 | 92 |
|
88 | 93 | SettableListenableFuture<Void> future = new SettableListenableFuture<>();
|
89 | 94 | future.set(null);
|
@@ -111,7 +116,7 @@ public void afterConnected() {
|
111 | 116 | @Test // SPR-16844
|
112 | 117 | public void afterConnectedWithSpecificVersion() {
|
113 | 118 | assertThat(this.session.isConnected()).isFalse();
|
114 |
| - this.connectHeaders.setAcceptVersion(new String[] {"1.1"}); |
| 119 | + this.connectHeaders.setAcceptVersion("1.1"); |
115 | 120 |
|
116 | 121 | this.session.afterConnected(this.connection);
|
117 | 122 |
|
@@ -390,6 +395,26 @@ public void sendWithReceipt() {
|
390 | 395 | assertThat(accessor.getReceipt()).isEqualTo("my-receipt");
|
391 | 396 | }
|
392 | 397 |
|
| 398 | + @Test // gh-23358 |
| 399 | + public void sendByteArray() { |
| 400 | + this.session.afterConnected(this.connection); |
| 401 | + assertThat(this.session.isConnected()); |
| 402 | + |
| 403 | + String destination = "/topic/foo"; |
| 404 | + String payload = "sample payload"; |
| 405 | + this.session.send(destination, payload.getBytes(StandardCharsets.UTF_8)); |
| 406 | + |
| 407 | + Message<byte[]> message = this.messageCaptor.getValue(); |
| 408 | + StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); |
| 409 | + |
| 410 | + StompHeaders stompHeaders = StompHeaders.readOnlyStompHeaders(accessor.getNativeHeaders()); |
| 411 | + assertThat(stompHeaders.size()).as(stompHeaders.toString()).isEqualTo(2); |
| 412 | + |
| 413 | + assertThat(stompHeaders.getDestination()).isEqualTo(destination); |
| 414 | + assertThat(stompHeaders.getContentType()).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM); |
| 415 | + assertThat(new String(message.getPayload(), StandardCharsets.UTF_8)).isEqualTo(payload); |
| 416 | + } |
| 417 | + |
393 | 418 | @Test
|
394 | 419 | public void sendWithConversionException() {
|
395 | 420 | this.session.afterConnected(this.connection);
|
|
0 commit comments