@Override public Receiptable send(String destination, Object payload) { StompHeaders headers = new StompHeaders(); headers.setDestination(destination); return send(headers, payload); }
@Test public void sendWithExecutionException() { this.session.afterConnected(this.connection); assertTrue(this.session.isConnected()); IllegalStateException exception = new IllegalStateException("simulated exception"); SettableListenableFuture<Void> future = new SettableListenableFuture<>(); future.setException(exception); when(this.connection.send(any())).thenReturn(future); this.expected.expect(MessageDeliveryException.class); this.expected.expectCause(Matchers.sameInstance(exception)); this.session.send("/topic/foo", "sample payload".getBytes(StandardCharsets.UTF_8)); verifyNoMoreInteractions(this.connection); }
@Test @SuppressWarnings({ "unchecked", "rawtypes" }) public void receiptNotReceived() { TaskScheduler taskScheduler = mock(TaskScheduler.class); this.session.afterConnected(this.connection); this.session.setTaskScheduler(taskScheduler); AtomicReference<Boolean> notReceived = new AtomicReference<>(); ScheduledFuture future = mock(ScheduledFuture.class); when(taskScheduler.schedule(any(Runnable.class), any(Date.class))).thenReturn(future); StompHeaders headers = new StompHeaders(); headers.setDestination("/topic/foo"); headers.setReceipt("my-receipt"); Receiptable receiptable = this.session.send(headers, "payload"); receiptable.addReceiptLostTask(() -> notReceived.set(true)); ArgumentCaptor<Runnable> taskCaptor = ArgumentCaptor.forClass(Runnable.class); verify(taskScheduler).schedule(taskCaptor.capture(), (Date) notNull()); Runnable scheduledTask = taskCaptor.getValue(); assertNotNull(scheduledTask); assertNull(notReceived.get()); scheduledTask.run(); assertTrue(notReceived.get()); verify(future).cancel(true); verifyNoMoreInteractions(future); }
@Test public void sendWithConversionException() { this.session.afterConnected(this.connection); assertTrue(this.session.isConnected()); StompHeaders stompHeaders = new StompHeaders(); stompHeaders.setDestination("/topic/foo"); stompHeaders.setContentType(MimeTypeUtils.APPLICATION_JSON); String payload = "{'foo':'bar'}"; this.expected.expect(MessageConversionException.class); this.session.send(stompHeaders, payload); verifyNoMoreInteractions(this.connection); }
@Test public void sendWithReceipt() { this.session.afterConnected(this.connection); assertTrue(this.session.isConnected()); this.session.setTaskScheduler(mock(TaskScheduler.class)); this.session.setAutoReceipt(true); this.session.send("/topic/foo", "sample payload"); Message<byte[]> message = this.messageCaptor.getValue(); StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); assertNotNull(accessor.getReceipt()); StompHeaders stompHeaders = new StompHeaders(); stompHeaders.setDestination("/topic/foo"); stompHeaders.setReceipt("my-receipt"); this.session.send(stompHeaders, "sample payload"); message = this.messageCaptor.getValue(); accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); assertEquals("my-receipt", accessor.getReceipt()); }
@Test public void send() { this.session.afterConnected(this.connection); assertTrue(this.session.isConnected()); String destination = "/topic/foo"; String payload = "sample payload"; this.session.send(destination, payload); Message<byte[]> message = this.messageCaptor.getValue(); StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); assertEquals(StompCommand.SEND, accessor.getCommand()); StompHeaders stompHeaders = StompHeaders.readOnlyStompHeaders(accessor.getNativeHeaders()); assertEquals(stompHeaders.toString(), 2, stompHeaders.size()); assertEquals(destination, stompHeaders.getDestination()); assertEquals(new MimeType("text", "plain", StandardCharsets.UTF_8), stompHeaders.getContentType()); assertEquals(-1, stompHeaders.getContentLength()); // StompEncoder isn't involved assertEquals(payload, new String(message.getPayload(), StandardCharsets.UTF_8)); }
@Override public Receiptable send(String destination, Object payload) { StompHeaders headers = new StompHeaders(); headers.setDestination(destination); return send(headers, payload); }
@Override public Receiptable send(String destination, Object payload) { StompHeaders headers = new StompHeaders(); headers.setDestination(destination); return send(headers, payload); }
@Override public Receiptable send(String destination, Object payload) { StompHeaders headers = new StompHeaders(); headers.setDestination(destination); return send(headers, payload); }