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