|
73 | 73 | * @author Artem Bilan
|
74 | 74 | * @author Gary Russell
|
75 | 75 | * @author Gunnar Hillert
|
| 76 | + * @author Florian Schöffl |
76 | 77 | */
|
77 | 78 | public class HttpRequestExecutingMessageHandlerTests {
|
78 | 79 |
|
@@ -746,6 +747,54 @@ public void testUriExpression() {
|
746 | 747 | assertThat(restTemplate.actualUrl.get()).isEqualTo(theURL);
|
747 | 748 | }
|
748 | 749 |
|
| 750 | + @Test |
| 751 | + public void testUriEncoded() { |
| 752 | + SpelExpressionParser parser = new SpelExpressionParser(); |
| 753 | + MockRestTemplate restTemplate = new MockRestTemplate(); |
| 754 | + |
| 755 | + HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler( |
| 756 | + "http://example.com?query={query}", |
| 757 | + restTemplate |
| 758 | + ); |
| 759 | + |
| 760 | + // This flag is set by default to true, but for sake of clarity for the reader we explicitly set it here again |
| 761 | + handler.setEncodeUri(true); |
| 762 | + |
| 763 | + handler.setUriVariableExpressions(Collections.singletonMap("query", parser.parseExpression("payload"))); |
| 764 | + setBeanFactory(handler); |
| 765 | + handler.afterPropertiesSet(); |
| 766 | + Message<?> message = new GenericMessage<>("test-äöü&%"); |
| 767 | + try { |
| 768 | + handler.handleMessage(message); |
| 769 | + } |
| 770 | + catch (Exception ignored) { |
| 771 | + } |
| 772 | + assertThat(restTemplate.actualUrl.get()).isEqualTo("http://example.com?query=test-%C3%A4%C3%B6%C3%BC%26%25"); |
| 773 | + } |
| 774 | + |
| 775 | + @Test |
| 776 | + public void testUriEncodedDisabled() { |
| 777 | + SpelExpressionParser parser = new SpelExpressionParser(); |
| 778 | + MockRestTemplate restTemplate = new MockRestTemplate(); |
| 779 | + |
| 780 | + HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler( |
| 781 | + "http://example.com?query={query}", |
| 782 | + restTemplate |
| 783 | + ); |
| 784 | + |
| 785 | + handler.setEncodeUri(false); |
| 786 | + handler.setUriVariableExpressions(Collections.singletonMap("query", parser.parseExpression("payload"))); |
| 787 | + setBeanFactory(handler); |
| 788 | + handler.afterPropertiesSet(); |
| 789 | + Message<?> message = new GenericMessage<>("test-äöü"); |
| 790 | + try { |
| 791 | + handler.handleMessage(message); |
| 792 | + } |
| 793 | + catch (Exception ignored) { |
| 794 | + } |
| 795 | + assertThat(restTemplate.actualUrl.get()).isEqualTo("http://example.com?query=test-äöü"); |
| 796 | + } |
| 797 | + |
749 | 798 | @Test
|
750 | 799 | public void testInt2455UriNotEncoded() {
|
751 | 800 | MockRestTemplate restTemplate = new MockRestTemplate();
|
|
0 commit comments