You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2019/11/25 02:19:29 UTC
[james-project] 01/10: [BugFix] port out of range issue in
HeadersToHttpTest class
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit d33b22cab9b9969b2f9a598b12437f5fbb375eec
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Nov 22 17:56:44 2019 +0700
[BugFix] port out of range issue in HeadersToHttpTest class
When running this test locally, I was getting a "java.lang.IllegalArgumentException: port out of range:123456" exception.
The port is indeed out of range...
---
.../james/transport/mailets/HeadersToHTTPTest.java | 452 ++++++++++-----------
1 file changed, 226 insertions(+), 226 deletions(-)
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java
index 9eda16b..c0860fc 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java
@@ -1,226 +1,226 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.transport.mailets;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import javax.mail.MessagingException;
-
-import org.apache.http.ExceptionLogger;
-import org.apache.http.HttpStatus;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URLEncodedUtils;
-import org.apache.http.config.SocketConfig;
-import org.apache.http.entity.BasicHttpEntity;
-import org.apache.http.impl.bootstrap.HttpServer;
-import org.apache.http.impl.bootstrap.ServerBootstrap;
-import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.apache.http.protocol.UriHttpRequestHandlerMapper;
-import org.apache.http.util.EntityUtils;
-import org.apache.james.util.MimeMessageUtil;
-import org.apache.mailet.Mail;
-import org.apache.mailet.Mailet;
-import org.apache.mailet.base.test.FakeMailetConfig;
-import org.apache.mailet.base.test.MailUtil;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-class HeadersToHTTPTest {
-
- private static HttpServer server;
- private static UriHttpRequestHandlerMapper mapper;
- private Mail mail;
-
- private String urlTestPattern;
-
- @BeforeAll
- static void setupServer() throws Exception {
- mapper = new UriHttpRequestHandlerMapper();
-
- SocketConfig socketConfig = SocketConfig.custom().setSoTimeout(50000).build();
- server = ServerBootstrap.bootstrap().setListenerPort(0).setSocketConfig(socketConfig)
- .setExceptionLogger(ExceptionLogger.NO_OP).setHandlerMapper(mapper).create();
-
- server.start();
- }
-
- @AfterAll
- static void shutdown() {
- server.shutdown(5L, TimeUnit.SECONDS);
- }
-
- @BeforeEach
- void setup() throws Exception {
- mail = MailUtil.createMockMail2Recipients(MimeMessageUtil.mimeMessageFromStream(
- ClassLoader.getSystemResourceAsStream("mime/sendToRemoteHttp.mime")));
- }
-
- @AfterEach
- void cleanMapper() {
- mapper.unregister(urlTestPattern);
- }
-
- @Test
- void shouldBeFailedWhenServiceNotExists() throws Exception {
- urlTestPattern = "/path/to/service/failed";
-
- FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
- .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
- .setProperty("url", "http://qwerty.localhost:123456" + urlTestPattern).build();
-
- Mailet mailet = new HeadersToHTTP();
- mailet.init(mailetConfig);
-
- mailet.service(mail);
-
- assertThat(mail.getMessage().getHeader("X-headerToHTTP"))
- .hasSize(1)
- .allSatisfy((header) -> assertThat(header).isEqualTo("Failed"));
- assertThat(mail.getMessage().getHeader("X-headerToHTTPFailure"))
- .hasSize(1)
- .allSatisfy((header) -> assertThat(header).isNotBlank());
- }
-
- @Test
- void shouldBeSucceededWhenServiceResponseIsOk() throws Exception {
- urlTestPattern = "/path/to/service/succeeded";
-
- FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
- .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
- .setProperty("url", "http://" + server.getInetAddress().getHostAddress() + ":"
- + server.getLocalPort() + urlTestPattern)
- .build();
-
- mapper.register(urlTestPattern, (request, response, context) -> response.setStatusCode(HttpStatus.SC_OK));
-
- Mailet mailet = new HeadersToHTTP();
- mailet.init(mailetConfig);
-
- mailet.service(mail);
-
- assertThat(mail.getMessage().getHeader("X-headerToHTTP"))
- .hasSize(1)
- .allSatisfy((header) -> assertThat(header).isEqualTo("Succeeded"));
- }
-
- @Test
- void serviceShouldNotModifyHeadersContent() throws Exception {
- urlTestPattern = "/path/to/service/succeeded";
-
- FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
- .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
- .setProperty("url", "http://" + server.getInetAddress().getHostAddress() + ":"
- + server.getLocalPort() + urlTestPattern)
- .build();
-
- mapper.register(urlTestPattern, (request, response, context) -> {
-
- assertThat(request.getRequestLine().getMethod()).isEqualTo("POST");
-
- BasicHttpEntityEnclosingRequest basicRequest = (BasicHttpEntityEnclosingRequest) request;
- BasicHttpEntity entity = (BasicHttpEntity) basicRequest.getEntity();
-
- try {
- List<NameValuePair> params = URLEncodedUtils.parse(entity);
- assertThat(params).hasSize(5).anySatisfy((param) -> {
- assertThat(param.getName()).isEqualTo("pKey");
- assertThat(param.getValue()).isEqualTo("pValue");
- }).anySatisfy((param) -> {
- assertThat(param.getName()).isEqualTo("subject");
- assertThat(param.getValue()).isEqualTo("Fwd: Invitation: (Aucun objet) - "
- + "ven. 20 janv. 2017 14:00 - 15:00 (CET) (aduprat@linagora.com)");
- }).anySatisfy((param) -> {
- assertThat(param.getName()).isEqualTo("message_id");
- assertThat(param.getValue())
- .isEqualTo("<f1...@linagora.com>");
- }).anySatisfy((param) -> {
- assertThat(param.getName()).isEqualTo("reply_to");
- assertThat(param.getValue()).isEqualTo("[aduprat <du...@linagora.com>]");
- }).anySatisfy((param) -> {
- assertThat(param.getName()).isEqualTo("size");
- assertThat(param.getValue()).isEqualTo("5242");
- });
-
- } finally {
- EntityUtils.consume(basicRequest.getEntity());
- }
- response.setStatusCode(HttpStatus.SC_OK);
- });
-
- Mailet mailet = new HeadersToHTTP();
- mailet.init(mailetConfig);
-
- mailet.service(mail);
-
- }
-
- @Test
- void shouldSetTheMailStateWhenPassThroughIsFalse() throws Exception {
- urlTestPattern = "/path/to/service/PassThroughIsFalse";
-
- FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
- .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
- .setProperty("url",
- "http://" + server.getInetAddress().getHostAddress() + ":"
- + server.getLocalPort() + urlTestPattern)
- .setProperty("passThrough", "false").build();
-
- mapper.register(urlTestPattern, (request, response, context) -> response.setStatusCode(HttpStatus.SC_OK));
-
- Mailet mailet = new HeadersToHTTP();
- mailet.init(mailetConfig);
-
- mailet.service(mail);
-
- assertThat(mail.getMessage().getHeader("X-headerToHTTP")).isNull();
-
- assertThat(mail.getState()).isEqualTo(Mail.GHOST);
- }
-
- @Test
- void shouldThrowMessagingExceptionWhenInvalidUrl() {
- FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
- .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
- .setProperty("url", "qwerty://invalid.url").build();
-
- assertThatThrownBy(() -> new HeadersToHTTP().init(mailetConfig))
- .isExactlyInstanceOf(MessagingException.class)
- .hasMessageContaining("Unable to contruct URL object from url");
- }
-
- @Test
- void shouldThrowMessagingExceptionWhenUrlIsNull() {
- FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
- .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
- .build();
-
- assertThatThrownBy(() -> new HeadersToHTTP().init(mailetConfig))
- .isExactlyInstanceOf(MessagingException.class)
- .hasMessageContaining("Please configure a targetUrl (\"url\")");
- }
-
-}
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.transport.mailets;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import javax.mail.MessagingException;
+
+import org.apache.http.ExceptionLogger;
+import org.apache.http.HttpStatus;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.utils.URLEncodedUtils;
+import org.apache.http.config.SocketConfig;
+import org.apache.http.entity.BasicHttpEntity;
+import org.apache.http.impl.bootstrap.HttpServer;
+import org.apache.http.impl.bootstrap.ServerBootstrap;
+import org.apache.http.message.BasicHttpEntityEnclosingRequest;
+import org.apache.http.protocol.UriHttpRequestHandlerMapper;
+import org.apache.http.util.EntityUtils;
+import org.apache.james.util.MimeMessageUtil;
+import org.apache.mailet.Mail;
+import org.apache.mailet.Mailet;
+import org.apache.mailet.base.test.FakeMailetConfig;
+import org.apache.mailet.base.test.MailUtil;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class HeadersToHTTPTest {
+
+ private static HttpServer server;
+ private static UriHttpRequestHandlerMapper mapper;
+ private Mail mail;
+
+ private String urlTestPattern;
+
+ @BeforeAll
+ static void setupServer() throws Exception {
+ mapper = new UriHttpRequestHandlerMapper();
+
+ SocketConfig socketConfig = SocketConfig.custom().setSoTimeout(50000).build();
+ server = ServerBootstrap.bootstrap().setListenerPort(0).setSocketConfig(socketConfig)
+ .setExceptionLogger(ExceptionLogger.NO_OP).setHandlerMapper(mapper).create();
+
+ server.start();
+ }
+
+ @AfterAll
+ static void shutdown() {
+ server.shutdown(5L, TimeUnit.SECONDS);
+ }
+
+ @BeforeEach
+ void setup() throws Exception {
+ mail = MailUtil.createMockMail2Recipients(MimeMessageUtil.mimeMessageFromStream(
+ ClassLoader.getSystemResourceAsStream("mime/sendToRemoteHttp.mime")));
+ }
+
+ @AfterEach
+ void cleanMapper() {
+ mapper.unregister(urlTestPattern);
+ }
+
+ @Test
+ void shouldBeFailedWhenServiceNotExists() throws Exception {
+ urlTestPattern = "/path/to/service/failed";
+
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
+ .setProperty("url", "http://qwerty.localhost:12345" + urlTestPattern).build();
+
+ Mailet mailet = new HeadersToHTTP();
+ mailet.init(mailetConfig);
+
+ mailet.service(mail);
+
+ assertThat(mail.getMessage().getHeader("X-headerToHTTP"))
+ .hasSize(1)
+ .allSatisfy((header) -> assertThat(header).isEqualTo("Failed"));
+ assertThat(mail.getMessage().getHeader("X-headerToHTTPFailure"))
+ .hasSize(1)
+ .allSatisfy((header) -> assertThat(header).isNotBlank());
+ }
+
+ @Test
+ void shouldBeSucceededWhenServiceResponseIsOk() throws Exception {
+ urlTestPattern = "/path/to/service/succeeded";
+
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
+ .setProperty("url", "http://" + server.getInetAddress().getHostAddress() + ":"
+ + server.getLocalPort() + urlTestPattern)
+ .build();
+
+ mapper.register(urlTestPattern, (request, response, context) -> response.setStatusCode(HttpStatus.SC_OK));
+
+ Mailet mailet = new HeadersToHTTP();
+ mailet.init(mailetConfig);
+
+ mailet.service(mail);
+
+ assertThat(mail.getMessage().getHeader("X-headerToHTTP"))
+ .hasSize(1)
+ .allSatisfy((header) -> assertThat(header).isEqualTo("Succeeded"));
+ }
+
+ @Test
+ void serviceShouldNotModifyHeadersContent() throws Exception {
+ urlTestPattern = "/path/to/service/succeeded";
+
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
+ .setProperty("url", "http://" + server.getInetAddress().getHostAddress() + ":"
+ + server.getLocalPort() + urlTestPattern)
+ .build();
+
+ mapper.register(urlTestPattern, (request, response, context) -> {
+
+ assertThat(request.getRequestLine().getMethod()).isEqualTo("POST");
+
+ BasicHttpEntityEnclosingRequest basicRequest = (BasicHttpEntityEnclosingRequest) request;
+ BasicHttpEntity entity = (BasicHttpEntity) basicRequest.getEntity();
+
+ try {
+ List<NameValuePair> params = URLEncodedUtils.parse(entity);
+ assertThat(params).hasSize(5).anySatisfy((param) -> {
+ assertThat(param.getName()).isEqualTo("pKey");
+ assertThat(param.getValue()).isEqualTo("pValue");
+ }).anySatisfy((param) -> {
+ assertThat(param.getName()).isEqualTo("subject");
+ assertThat(param.getValue()).isEqualTo("Fwd: Invitation: (Aucun objet) - "
+ + "ven. 20 janv. 2017 14:00 - 15:00 (CET) (aduprat@linagora.com)");
+ }).anySatisfy((param) -> {
+ assertThat(param.getName()).isEqualTo("message_id");
+ assertThat(param.getValue())
+ .isEqualTo("<f1...@linagora.com>");
+ }).anySatisfy((param) -> {
+ assertThat(param.getName()).isEqualTo("reply_to");
+ assertThat(param.getValue()).isEqualTo("[aduprat <du...@linagora.com>]");
+ }).anySatisfy((param) -> {
+ assertThat(param.getName()).isEqualTo("size");
+ assertThat(param.getValue()).isEqualTo("5242");
+ });
+
+ } finally {
+ EntityUtils.consume(basicRequest.getEntity());
+ }
+ response.setStatusCode(HttpStatus.SC_OK);
+ });
+
+ Mailet mailet = new HeadersToHTTP();
+ mailet.init(mailetConfig);
+
+ mailet.service(mail);
+
+ }
+
+ @Test
+ void shouldSetTheMailStateWhenPassThroughIsFalse() throws Exception {
+ urlTestPattern = "/path/to/service/PassThroughIsFalse";
+
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
+ .setProperty("url",
+ "http://" + server.getInetAddress().getHostAddress() + ":"
+ + server.getLocalPort() + urlTestPattern)
+ .setProperty("passThrough", "false").build();
+
+ mapper.register(urlTestPattern, (request, response, context) -> response.setStatusCode(HttpStatus.SC_OK));
+
+ Mailet mailet = new HeadersToHTTP();
+ mailet.init(mailetConfig);
+
+ mailet.service(mail);
+
+ assertThat(mail.getMessage().getHeader("X-headerToHTTP")).isNull();
+
+ assertThat(mail.getState()).isEqualTo(Mail.GHOST);
+ }
+
+ @Test
+ void shouldThrowMessagingExceptionWhenInvalidUrl() {
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
+ .setProperty("url", "qwerty://invalid.url").build();
+
+ assertThatThrownBy(() -> new HeadersToHTTP().init(mailetConfig))
+ .isExactlyInstanceOf(MessagingException.class)
+ .hasMessageContaining("Unable to contruct URL object from url");
+ }
+
+ @Test
+ void shouldThrowMessagingExceptionWhenUrlIsNull() {
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
+ .build();
+
+ assertThatThrownBy(() -> new HeadersToHTTP().init(mailetConfig))
+ .isExactlyInstanceOf(MessagingException.class)
+ .hasMessageContaining("Please configure a targetUrl (\"url\")");
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org