|
35 | 35 | import org.springframework.messaging.handler.annotation.SendTo;
|
36 | 36 | import org.springframework.messaging.simp.SimpMessageType;
|
37 | 37 | import org.springframework.messaging.simp.annotation.SubscribeMapping;
|
| 38 | +import org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry; |
38 | 39 | import org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler;
|
39 | 40 | import org.springframework.messaging.simp.config.MessageBrokerRegistry;
|
40 | 41 | import org.springframework.messaging.simp.stomp.StompCommand;
|
|
60 | 61 |
|
61 | 62 | import static org.assertj.core.api.Assertions.assertThat;
|
62 | 63 | import static org.assertj.core.api.InstanceOfAssertFactories.BOOLEAN;
|
| 64 | +import static org.assertj.core.api.InstanceOfAssertFactories.type; |
63 | 65 | import static org.mockito.Mockito.mock;
|
64 | 66 |
|
65 | 67 | /**
|
66 | 68 | * Tests for {@link WebSocketMessageBrokerConfigurationSupport}.
|
67 | 69 | *
|
68 | 70 | * @author Rossen Stoyanchev
|
69 | 71 | * @author Sebastien Deleuze
|
| 72 | + * @author Sam Brannen |
70 | 73 | */
|
71 | 74 | class WebSocketMessageBrokerConfigurationSupportTests {
|
72 | 75 |
|
@@ -161,6 +164,32 @@ void taskScheduler() {
|
161 | 164 | assertThat(handler.getHeartbeatValue()).containsExactly(15000, 15000);
|
162 | 165 | }
|
163 | 166 |
|
| 167 | + @Test |
| 168 | + void selectorHeaderEnabledByDefault() { |
| 169 | + ApplicationContext context = createContext(TestChannelConfig.class, TestConfigurer.class); |
| 170 | + SimpleBrokerMessageHandler simpleBrokerMessageHandler = simpleBrokerMessageHandler(context); |
| 171 | + |
| 172 | + assertThat(simpleBrokerMessageHandler.getSubscriptionRegistry()) |
| 173 | + .asInstanceOf(type(DefaultSubscriptionRegistry.class)) |
| 174 | + .extracting(DefaultSubscriptionRegistry::getSelectorHeaderName) |
| 175 | + .isEqualTo("selector"); |
| 176 | + } |
| 177 | + |
| 178 | + @Test |
| 179 | + void selectorHeaderDisabled() { |
| 180 | + ApplicationContext context = createContext(TestChannelConfig.class, SelectorHeaderConfigurer.class); |
| 181 | + SimpleBrokerMessageHandler simpleBrokerMessageHandler = simpleBrokerMessageHandler(context); |
| 182 | + |
| 183 | + assertThat(simpleBrokerMessageHandler.getSubscriptionRegistry()) |
| 184 | + .asInstanceOf(type(DefaultSubscriptionRegistry.class)) |
| 185 | + .extracting(DefaultSubscriptionRegistry::getSelectorHeaderName) |
| 186 | + .isNull(); |
| 187 | + } |
| 188 | + |
| 189 | + private static SimpleBrokerMessageHandler simpleBrokerMessageHandler(ApplicationContext context) { |
| 190 | + return context.getBean("simpleBrokerMessageHandler", SimpleBrokerMessageHandler.class); |
| 191 | + } |
| 192 | + |
164 | 193 | @Test
|
165 | 194 | void webSocketMessageBrokerStats() {
|
166 | 195 | ApplicationContext context = createContext(TestChannelConfig.class, TestConfigurer.class);
|
@@ -243,6 +272,22 @@ public void configureMessageBroker(MessageBrokerRegistry registry) {
|
243 | 272 | }
|
244 | 273 | }
|
245 | 274 |
|
| 275 | + @Configuration |
| 276 | + static class SelectorHeaderConfigurer implements WebSocketMessageBrokerConfigurer { |
| 277 | + |
| 278 | + @Override |
| 279 | + public void registerStompEndpoints(StompEndpointRegistry registry) { |
| 280 | + registry.addEndpoint("/simpleBroker"); |
| 281 | + } |
| 282 | + |
| 283 | + @Override |
| 284 | + public void configureMessageBroker(MessageBrokerRegistry registry) { |
| 285 | + // Explicitly disable selector header support |
| 286 | + registry.enableSimpleBroker().setSelectorHeaderName(null); |
| 287 | + } |
| 288 | + |
| 289 | + } |
| 290 | + |
246 | 291 | @Configuration
|
247 | 292 | static class TestChannelConfig extends DelegatingWebSocketMessageBrokerConfiguration {
|
248 | 293 |
|
|
0 commit comments