|
|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2002-2024 the original author or authors. |
|
|
|
* Copyright 2002-2025 the original author or authors. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
@ -17,6 +17,7 @@ |
|
|
|
package org.springframework.messaging.simp.user; |
|
|
|
package org.springframework.messaging.simp.user; |
|
|
|
|
|
|
|
|
|
|
|
import java.nio.charset.StandardCharsets; |
|
|
|
import java.nio.charset.StandardCharsets; |
|
|
|
|
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Test; |
|
|
|
import org.junit.jupiter.api.Test; |
|
|
|
import org.mockito.ArgumentCaptor; |
|
|
|
import org.mockito.ArgumentCaptor; |
|
|
|
@ -98,6 +99,26 @@ class UserDestinationMessageHandlerTests { |
|
|
|
assertThat(accessor.getFirstNativeHeader(ORIGINAL_DESTINATION)).isEqualTo("/user/queue/foo"); |
|
|
|
assertThat(accessor.getFirstNativeHeader(ORIGINAL_DESTINATION)).isEqualTo("/user/queue/foo"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
@SuppressWarnings("rawtypes") |
|
|
|
|
|
|
|
void handleMessageWithoutSessionIds() { |
|
|
|
|
|
|
|
UserDestinationResolver resolver = mock(); |
|
|
|
|
|
|
|
Message message = createWith(SimpMessageType.MESSAGE, "joe", null, "/user/joe/queue/foo"); |
|
|
|
|
|
|
|
UserDestinationResult result = new UserDestinationResult("/queue/foo-user123", Set.of("/queue/foo-user123"), "/user/queue/foo", "joe"); |
|
|
|
|
|
|
|
given(resolver.resolveDestination(message)).willReturn(result); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
given(this.brokerChannel.send(Mockito.any(Message.class))).willReturn(true); |
|
|
|
|
|
|
|
UserDestinationMessageHandler handler = new UserDestinationMessageHandler(new StubMessageChannel(), this.brokerChannel, resolver); |
|
|
|
|
|
|
|
handler.handleMessage(message); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ArgumentCaptor<Message> captor = ArgumentCaptor.forClass(Message.class); |
|
|
|
|
|
|
|
Mockito.verify(this.brokerChannel).send(captor.capture()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.wrap(captor.getValue()); |
|
|
|
|
|
|
|
assertThat(accessor.getDestination()).isEqualTo("/queue/foo-user123"); |
|
|
|
|
|
|
|
assertThat(accessor.getFirstNativeHeader(ORIGINAL_DESTINATION)).isEqualTo("/user/queue/foo"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
@SuppressWarnings("rawtypes") |
|
|
|
@SuppressWarnings("rawtypes") |
|
|
|
void handleMessageWithoutActiveSession() { |
|
|
|
void handleMessageWithoutActiveSession() { |
|
|
|
|