@@ -531,129 +531,7 @@ public boolean send(Message<?> message, long timeout) {
531
531
verify (runnable , times (1 )).run ();
532
532
}
533
533
534
- @ Test
535
- void handleMessageFromClientWithBinaryStompFrame () {
536
- StompHeaderAccessor headers = StompHeaderAccessor .create (StompCommand .CONNECT );
537
- byte [] payload = new StompEncoder ().encode (headers .getMessageHeaders (), EMPTY_PAYLOAD );
538
- BinaryMessage binaryMessage = new BinaryMessage (payload );
539
-
540
- this .protocolHandler .afterSessionStarted (this .session , this .channel );
541
- this .protocolHandler .handleMessageFromClient (this .session , binaryMessage , this .channel );
542
-
543
- verify (this .channel ).send (this .messageCaptor .capture ());
544
- Message <?> actual = this .messageCaptor .getValue ();
545
- assertThat (actual ).isNotNull ();
546
- assertThat (StompHeaderAccessor .wrap (actual ).getCommand ()).isEqualTo (StompCommand .CONNECT );
547
- }
548
-
549
- @ Test
550
- void handleMessageFromClientWithPartialStompFrame () {
551
- TextMessage partialMessage = new TextMessage ("CONNECT\n accept-version:1.2\n \n " );
552
-
553
- this .protocolHandler .afterSessionStarted (this .session , this .channel );
554
- this .protocolHandler .handleMessageFromClient (this .session , partialMessage , this .channel );
555
-
556
- verifyNoInteractions (this .channel );
557
- assertThat (this .session .getSentMessages ()).isEmpty ();
558
- }
559
-
560
- @ Test
561
- void handleMessageFromClientWithInvalidStompFrame () {
562
- TextMessage invalidMessage = new TextMessage ("INVALID_COMMAND\n \n \0 " );
563
-
564
- this .protocolHandler .afterSessionStarted (this .session , this .channel );
565
- this .protocolHandler .handleMessageFromClient (this .session , invalidMessage , this .channel );
566
-
567
- verifyNoInteractions (this .channel );
568
- assertThat (this .session .getSentMessages ()).hasSize (1 );
569
- TextMessage actual = (TextMessage ) this .session .getSentMessages ().get (0 );
570
- assertThat (actual .getPayload ()).startsWith ("ERROR" );
571
- }
572
-
573
- @ Test
574
- void handleMessageToClientWithEmptyPayload () {
575
- StompHeaderAccessor headers = StompHeaderAccessor .create (StompCommand .MESSAGE );
576
- headers .setDestination ("/topic/foo" );
577
- Message <byte []> message = MessageBuilder .createMessage (EMPTY_PAYLOAD , headers .getMessageHeaders ());
578
-
579
- this .protocolHandler .handleMessageToClient (this .session , message );
580
-
581
- assertThat (this .session .getSentMessages ()).hasSize (1 );
582
- WebSocketMessage <?> textMessage = this .session .getSentMessages ().get (0 );
583
- assertThat (textMessage .getPayload ()).isEqualTo ("MESSAGE\n destination:/topic/foo\n content-length:0\n \n \u0000 " );
584
- }
585
-
586
- @ Test
587
- void handleMessageToClientWithLargePayload () {
588
- byte [] largePayload = new byte [1024 * 64 ]; // 64KB
589
- Arrays .fill (largePayload , (byte ) 'A' );
590
-
591
- StompHeaderAccessor headers = StompHeaderAccessor .create (StompCommand .MESSAGE );
592
- headers .setDestination ("/topic/foo" );
593
- headers .setContentType (MimeTypeUtils .APPLICATION_OCTET_STREAM );
594
- Message <byte []> message = MessageBuilder .createMessage (largePayload , headers .getMessageHeaders ());
595
-
596
- this .protocolHandler .handleMessageToClient (this .session , message );
597
-
598
- assertThat (this .session .getSentMessages ()).hasSize (1 );
599
- WebSocketMessage <?> webSocketMessage = this .session .getSentMessages ().get (0 );
600
- assertThat (webSocketMessage ).isInstanceOf (BinaryMessage .class );
601
- }
602
-
603
- @ Test
604
- void handleMessageToClientWithErrorFrame () {
605
- StompHeaderAccessor headers = StompHeaderAccessor .create (StompCommand .ERROR );
606
- headers .setMessage ("Test error" );
607
- Message <byte []> message = MessageBuilder .createMessage (EMPTY_PAYLOAD , headers .getMessageHeaders ());
608
-
609
- this .protocolHandler .handleMessageToClient (this .session , message );
610
-
611
- assertThat (this .session .getSentMessages ()).hasSize (1 );
612
- TextMessage actual = (TextMessage ) this .session .getSentMessages ().get (0 );
613
- assertThat (actual .getPayload ()).startsWith ("ERROR\n message:Test error" );
614
-
615
- // Verify session was closed
616
- assertThat (this .session .isOpen ()).isFalse ();
617
- assertThat (this .session .getCloseStatus ()).isEqualTo (CloseStatus .PROTOCOL_ERROR );
618
- }
619
-
620
- @ Test
621
- void handleMessageToClientWithHeartbeat () {
622
- StompHeaderAccessor headers = StompHeaderAccessor .createForHeartbeat ();
623
- Message <byte []> message = MessageBuilder .createMessage (EMPTY_PAYLOAD , headers .getMessageHeaders ());
624
534
625
- this .protocolHandler .handleMessageToClient (this .session , message );
626
-
627
- assertThat (this .session .getSentMessages ()).hasSize (1 );
628
- TextMessage actual = (TextMessage ) this .session .getSentMessages ().get (0 );
629
- assertThat (actual .getPayload ()).isEqualTo ("\n " );
630
- }@ Test
631
- void sessionAttributesArePreserved () {
632
- this .session .getAttributes ().put ("key" , "value" );
633
-
634
- TextMessage textMessage = StompTextMessageBuilder .create (StompCommand .CONNECT ).build ();
635
- this .protocolHandler .afterSessionStarted (this .session , this .channel );
636
- this .protocolHandler .handleMessageFromClient (this .session , textMessage , this .channel );
637
-
638
- verify (this .channel ).send (this .messageCaptor .capture ());
639
- Message <?> actual = this .messageCaptor .getValue ();
640
- assertThat (SimpMessageHeaderAccessor .getSessionAttributes (actual .getHeaders ()))
641
- .containsEntry ("key" , "value" );
642
- }
643
-
644
- @ Test
645
- void immutableMessageHandling () {
646
- // Create immutable message
647
- StompHeaderAccessor headers = StompHeaderAccessor .create (StompCommand .SEND );
648
- headers .setImmutable ();
649
- Message <byte []> message = MessageBuilder .createMessage (EMPTY_PAYLOAD , headers .getMessageHeaders ());
650
-
651
- this .protocolHandler .handleMessageToClient (this .session , message );
652
-
653
- assertThat (this .session .getSentMessages ()).hasSize (1 );
654
- TextMessage actual = (TextMessage ) this .session .getSentMessages ().get (0 );
655
- assertThat (actual .getPayload ()).contains ("SEND" );
656
- }
657
535
private static class UniqueUser extends TestPrincipal implements DestinationUserNameProvider {
658
536
659
537
private UniqueUser (String name ) {
0 commit comments