Browse Source

Integration test status quo for SpEL 'selector' support in messaging

See gh-30550
pull/30619/head
Sam Brannen 3 years ago
parent
commit
2f35e7756b
  1. 45
      spring-websocket/src/test/java/org/springframework/web/socket/config/annotation/WebSocketMessageBrokerConfigurationSupportTests.java
  2. 9
      spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompWebSocketIntegrationTests.java

45
spring-websocket/src/test/java/org/springframework/web/socket/config/annotation/WebSocketMessageBrokerConfigurationSupportTests.java

@ -35,6 +35,7 @@ import org.springframework.messaging.handler.annotation.MessageMapping; @@ -35,6 +35,7 @@ import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessageType;
import org.springframework.messaging.simp.annotation.SubscribeMapping;
import org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry;
import org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.messaging.simp.stomp.StompCommand;
@ -60,6 +61,7 @@ import org.springframework.web.socket.server.support.WebSocketHttpRequestHandler @@ -60,6 +61,7 @@ import org.springframework.web.socket.server.support.WebSocketHttpRequestHandler
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.InstanceOfAssertFactories.BOOLEAN;
import static org.assertj.core.api.InstanceOfAssertFactories.type;
import static org.mockito.Mockito.mock;
/**
@ -67,6 +69,7 @@ import static org.mockito.Mockito.mock; @@ -67,6 +69,7 @@ import static org.mockito.Mockito.mock;
*
* @author Rossen Stoyanchev
* @author Sebastien Deleuze
* @author Sam Brannen
*/
class WebSocketMessageBrokerConfigurationSupportTests {
@ -161,6 +164,32 @@ class WebSocketMessageBrokerConfigurationSupportTests { @@ -161,6 +164,32 @@ class WebSocketMessageBrokerConfigurationSupportTests {
assertThat(handler.getHeartbeatValue()).containsExactly(15000, 15000);
}
@Test
void selectorHeaderEnabledByDefault() {
ApplicationContext context = createContext(TestChannelConfig.class, TestConfigurer.class);
SimpleBrokerMessageHandler simpleBrokerMessageHandler = simpleBrokerMessageHandler(context);
assertThat(simpleBrokerMessageHandler.getSubscriptionRegistry())
.asInstanceOf(type(DefaultSubscriptionRegistry.class))
.extracting(DefaultSubscriptionRegistry::getSelectorHeaderName)
.isEqualTo("selector");
}
@Test
void selectorHeaderDisabled() {
ApplicationContext context = createContext(TestChannelConfig.class, SelectorHeaderConfigurer.class);
SimpleBrokerMessageHandler simpleBrokerMessageHandler = simpleBrokerMessageHandler(context);
assertThat(simpleBrokerMessageHandler.getSubscriptionRegistry())
.asInstanceOf(type(DefaultSubscriptionRegistry.class))
.extracting(DefaultSubscriptionRegistry::getSelectorHeaderName)
.isNull();
}
private static SimpleBrokerMessageHandler simpleBrokerMessageHandler(ApplicationContext context) {
return context.getBean("simpleBrokerMessageHandler", SimpleBrokerMessageHandler.class);
}
@Test
void webSocketMessageBrokerStats() {
ApplicationContext context = createContext(TestChannelConfig.class, TestConfigurer.class);
@ -243,6 +272,22 @@ class WebSocketMessageBrokerConfigurationSupportTests { @@ -243,6 +272,22 @@ class WebSocketMessageBrokerConfigurationSupportTests {
}
}
@Configuration
static class SelectorHeaderConfigurer implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/simpleBroker");
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
// Explicitly disable selector header support
registry.enableSimpleBroker().setSelectorHeaderName(null);
}
}
@Configuration
static class TestChannelConfig extends DelegatingWebSocketMessageBrokerConfiguration {

9
spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompWebSocketIntegrationTests.java

@ -105,12 +105,15 @@ class StompWebSocketIntegrationTests extends AbstractWebSocketIntegrationTests { @@ -105,12 +105,15 @@ class StompWebSocketIntegrationTests extends AbstractWebSocketIntegrationTests {
}
@ParameterizedWebSocketTest // SPR-10930
void sendMessageToBrokerAndReceiveReplyViaTopic(WebSocketTestServer server, WebSocketClient webSocketClient, TestInfo testInfo) throws Exception {
void sendMessageToBrokerAndReceiveReplyViaTopicWithSelectorHeader(WebSocketTestServer server, WebSocketClient webSocketClient, TestInfo testInfo) throws Exception {
super.setup(server, webSocketClient, testInfo);
String destination = "destination:/topic/foo";
String selector = "selector:headers.foo == 'bar'";
TextMessage m0 = create(StompCommand.CONNECT).headers("accept-version:1.1").build();
TextMessage m1 = create(StompCommand.SUBSCRIBE).headers("id:subs1", "destination:/topic/foo").build();
TextMessage m2 = create(StompCommand.SEND).headers("destination:/topic/foo").body("5").build();
TextMessage m1 = create(StompCommand.SUBSCRIBE).headers("id:subs1", destination, selector).build();
TextMessage m2 = create(StompCommand.SEND).headers(destination, "foo:bar").body("5").build();
TestClientWebSocketHandler clientHandler = new TestClientWebSocketHandler(2, m0, m1, m2);

Loading…
Cancel
Save