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 bt...@apache.org on 2019/08/27 07:41:58 UTC
[james-project] 10/17: JAMES-2866 Manage MockSmtp configuration
over Http (Jetty)
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit c882f4a7da4ae3a97a2f027d7078ad6a7e9177cf
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Aug 23 14:36:48 2019 +0700
JAMES-2866 Manage MockSmtp configuration over Http (Jetty)
Includes a Fixture for MockSMTPServer tests
---
server/mailet/mock-smtp-server/pom.xml | 17 +++
.../mock/smtp/server/HTTPConfigurationServer.java | 110 +++++++++++++++++
.../james/mock/smtp/server/ConditionTest.java | 4 +-
.../org/apache/james/mock/smtp/server/Fixture.java | 66 +++++++++++
.../smtp/server/HTTPConfigurationServerTest.java | 130 +++++++++++++++++++++
.../mock/smtp/server/MockSMTPBehaviorTest.java | 53 +++------
.../mock/smtp/server/MockSmtpBehaviorsTest.java | 30 ++---
.../james/mock/smtp/server/ResponseTest.java | 4 +-
.../smtp/server/SMTPBehaviorRepositoryTest.java | 12 +-
.../james/mock/smtp/server/SMTPCommandTest.java | 5 +-
10 files changed, 354 insertions(+), 77 deletions(-)
diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index f7ea8c8..2ea427f 100644
--- a/server/mailet/mock-smtp-server/pom.xml
+++ b/server/mailet/mock-smtp-server/pom.xml
@@ -42,6 +42,10 @@
<artifactId>james-core</artifactId>
</dependency>
<dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-jetty</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
@@ -58,6 +62,11 @@
<artifactId>guava</artifactId>
</dependency>
<dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>net.javacrumbs.json-unit</groupId>
<artifactId>json-unit-assertj</artifactId>
<scope>test</scope>
@@ -77,5 +86,13 @@
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
new file mode 100644
index 0000000..2f04ec9
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
@@ -0,0 +1,110 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
+import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
+import static javax.servlet.http.HttpServletResponse.SC_OK;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.james.http.jetty.Configuration;
+import org.apache.james.http.jetty.JettyHttpServer;
+import org.apache.james.util.Port;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.guava.GuavaModule;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.google.common.collect.ImmutableList;
+
+public class HTTPConfigurationServer {
+ static class HTTPConfigurationServlet extends HttpServlet {
+ private final ObjectMapper objectMapper;
+ private final SMTPBehaviorRepository smtpBehaviorRepository;
+
+ HTTPConfigurationServlet(SMTPBehaviorRepository smtpBehaviorRepository) {
+ this.objectMapper = new ObjectMapper()
+ .registerModule(new Jdk8Module())
+ .registerModule(new GuavaModule());
+ this.smtpBehaviorRepository = smtpBehaviorRepository;
+ }
+
+ @Override
+ protected void doPut(HttpServletRequest req, HttpServletResponse resp) {
+ try {
+ MockSmtpBehaviors behaviors = objectMapper.readValue(req.getInputStream(), MockSmtpBehaviors.class);
+ smtpBehaviorRepository.setBehaviors(behaviors);
+ resp.setStatus(SC_NO_CONTENT);
+ } catch (IOException e) {
+ resp.setStatus(SC_BAD_REQUEST);
+ }
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ MockSmtpBehaviors mockSmtpBehaviors = smtpBehaviorRepository.getBehaviors().orElse(new MockSmtpBehaviors(ImmutableList.of()));
+ resp.setStatus(SC_OK);
+ resp.setContentType("application/json");
+ objectMapper.writeValue(resp.getOutputStream(), mockSmtpBehaviors);
+ }
+
+ @Override
+ protected void doDelete(HttpServletRequest req, HttpServletResponse resp) {
+ smtpBehaviorRepository.clearBehaviors();
+ resp.setStatus(SC_NO_CONTENT);
+ }
+ }
+
+ private static final String SMTP_BEHAVIORS = "/smtpBehaviors";
+
+ public static HTTPConfigurationServer onRandomPort(SMTPBehaviorRepository smtpBehaviorRepository) {
+ return new HTTPConfigurationServer(smtpBehaviorRepository,
+ Configuration.builder().randomPort());
+ }
+
+ public static HTTPConfigurationServer onPort(SMTPBehaviorRepository smtpBehaviorRepository, Port port) {
+ return new HTTPConfigurationServer(smtpBehaviorRepository,
+ Configuration.builder().port(port.getValue()));
+ }
+
+ private final JettyHttpServer jettyHttpServer;
+
+ private HTTPConfigurationServer(SMTPBehaviorRepository smtpBehaviorRepository, Configuration.Builder configurationBuilder) {
+ jettyHttpServer = JettyHttpServer.create(configurationBuilder.serve(SMTP_BEHAVIORS)
+ .with(new HTTPConfigurationServlet(smtpBehaviorRepository))
+ .build());
+ }
+
+ public void start() throws Exception {
+ jettyHttpServer.start();
+ }
+
+ public Port getPort() {
+ return new Port(jettyHttpServer.getPort());
+ }
+
+ public void stop() throws Exception {
+ jettyHttpServer.stop();
+ }
+}
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConditionTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConditionTest.java
index eefbe1c..c16c299 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConditionTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConditionTest.java
@@ -20,20 +20,18 @@
package org.apache.james.mock.smtp.server;
import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
import nl.jqno.equalsverifier.EqualsVerifier;
class ConditionTest {
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
@Test
void operatorConditionShouldMatchBeanContract() {
EqualsVerifier.forClass(Condition.OperatorCondition.class)
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
new file mode 100644
index 0000000..3178766
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
@@ -0,0 +1,66 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import java.util.Optional;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.guava.GuavaModule;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.google.common.collect.ImmutableList;
+
+public interface Fixture {
+ ObjectMapper OBJECT_MAPPER = new ObjectMapper()
+ .registerModule(new Jdk8Module())
+ .registerModule(new GuavaModule());
+
+ Response RESPONSE = Response.serverAccept(Response.SMTPStatusCode.of(250), "message");
+
+ String JSON_BEHAVIOR_COMPULSORY_FIELDS = "{" +
+ " \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
+ " \"command\": \"EHLO\"" +
+ "}";
+
+ MockSMTPBehavior BEHAVIOR_COMPULSORY_FIELDS = new MockSMTPBehavior(
+ SMTPCommand.EHLO,
+ Optional.empty(),
+ Response.serverAccept(Response.SMTPStatusCode.ACTION_COMPLETE_250, "OK"),
+ MockSMTPBehavior.NumberOfAnswersPolicy.anytime());
+
+ String JSON_BEHAVIOR_ALL_FIELDS = "{" +
+ " \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
+ " \"condition\": {\"operator\":\"contains\", \"matchingValue\":\"matchme\"}," +
+ " \"command\": \"EHLO\"," +
+ " \"numberOfAnswer\": 7" +
+ "}";
+
+ MockSMTPBehavior BEHAVIOR_ALL_FIELDS = new MockSMTPBehavior(
+ SMTPCommand.EHLO,
+ Optional.of(new Condition.OperatorCondition(Operator.CONTAINS, "matchme")),
+ Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"),
+ MockSMTPBehavior.NumberOfAnswersPolicy.times(7));
+
+ String JSON_BEHAVIORS = "[" + JSON_BEHAVIOR_ALL_FIELDS + ", "
+ + JSON_BEHAVIOR_COMPULSORY_FIELDS + "]";
+
+ MockSmtpBehaviors BEHAVIORS = new MockSmtpBehaviors(ImmutableList.of(
+ BEHAVIOR_ALL_FIELDS,
+ BEHAVIOR_COMPULSORY_FIELDS));
+}
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
new file mode 100644
index 0000000..64f422a
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
@@ -0,0 +1,130 @@
+/****************************************************************
+ * 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.mock.smtp.server;
+
+import static io.restassured.RestAssured.given;
+import static io.restassured.RestAssured.when;
+import static io.restassured.RestAssured.with;
+import static io.restassured.config.EncoderConfig.encoderConfig;
+import static io.restassured.config.RestAssuredConfig.newConfig;
+import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+import static org.apache.james.mock.smtp.server.Fixture.JSON_BEHAVIORS;
+import static org.hamcrest.Matchers.hasSize;
+
+import java.nio.charset.StandardCharsets;
+
+import org.eclipse.jetty.http.HttpStatus;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import io.restassured.RestAssured;
+import io.restassured.builder.RequestSpecBuilder;
+import io.restassured.http.ContentType;
+import net.javacrumbs.jsonunit.core.Option;
+import net.javacrumbs.jsonunit.core.internal.Options;
+
+class HTTPConfigurationServerTest {
+ private HTTPConfigurationServer server;
+
+ @BeforeEach
+ void setUp() throws Exception {
+ server = HTTPConfigurationServer.onRandomPort(new SMTPBehaviorRepository());
+ server.start();
+
+ RestAssured.requestSpecification = new RequestSpecBuilder()
+ .setContentType(ContentType.JSON)
+ .setAccept(ContentType.JSON)
+ .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
+ .setPort(server.getPort().getValue())
+ .setBasePath("/")
+ .setBasePath("/smtpBehaviors")
+ .build();
+ }
+
+ @AfterEach
+ void tearDown() throws Exception {
+ server.stop();
+ }
+
+ @Test
+ void getShouldReturnEmptyByDefault() {
+ when()
+ .get()
+ .then()
+ .body(".", hasSize(0));
+ }
+
+ @Test
+ void getShouldReturnPreviouslyStoredData() {
+ with().body(JSON_BEHAVIORS).put();
+
+ String response = when()
+ .get()
+ .then()
+ .extract().asString();
+
+ assertThatJson(response)
+ .withOptions(new Options(Option.TREATING_NULL_AS_ABSENT, Option.IGNORING_ARRAY_ORDER))
+ .isEqualTo(JSON_BEHAVIORS);
+ }
+
+ @Test
+ void getShouldReturnEmptyAfterDelete() {
+ with().body(JSON_BEHAVIORS).put();
+
+ with().delete();
+
+ when()
+ .get()
+ .then()
+ .body(".", hasSize(0));
+ }
+
+ @Test
+ void putShouldReturnNoContent() {
+ given()
+ .body(JSON_BEHAVIORS)
+ .when()
+ .put()
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+ }
+
+ @Test
+ void putShouldBeIdempotent() {
+ with().body(JSON_BEHAVIORS).put();
+
+ given()
+ .body(JSON_BEHAVIORS)
+ .when()
+ .put()
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+ }
+
+ @Test
+ void deleteShouldReturnNoContent() {
+ when()
+ .delete()
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+ }
+}
\ No newline at end of file
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPBehaviorTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPBehaviorTest.java
index 91f760f..7a3f7cb 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPBehaviorTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSMTPBehaviorTest.java
@@ -20,50 +20,25 @@
package org.apache.james.mock.smtp.server;
import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+import static org.apache.james.mock.smtp.server.Fixture.BEHAVIOR_ALL_FIELDS;
+import static org.apache.james.mock.smtp.server.Fixture.BEHAVIOR_COMPULSORY_FIELDS;
+import static org.apache.james.mock.smtp.server.Fixture.JSON_BEHAVIOR_ALL_FIELDS;
+import static org.apache.james.mock.smtp.server.Fixture.JSON_BEHAVIOR_COMPULSORY_FIELDS;
+import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
+import static org.apache.james.mock.smtp.server.Fixture.RESPONSE;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.util.Optional;
-import org.apache.james.mock.smtp.server.Response.SMTPStatusCode;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-
import net.javacrumbs.jsonunit.core.Option;
import net.javacrumbs.jsonunit.core.internal.Options;
import nl.jqno.equalsverifier.EqualsVerifier;
class MockSMTPBehaviorTest {
- private static final Response RESPONSE = Response.serverAccept(SMTPStatusCode.ACTION_COMPLETE_250, "message");
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().registerModule(new Jdk8Module());
-
- static final String JSON_COMPULSORY_FIELDS = "{" +
- " \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
- " \"command\": \"EHLO\"" +
- "}";
-
- static final MockSMTPBehavior POJO_COMPULSORY_FIELDS = new MockSMTPBehavior(
- SMTPCommand.EHLO,
- Optional.empty(),
- Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"),
- MockSMTPBehavior.NumberOfAnswersPolicy.anytime());
-
- static final String JSON_ALL_FIELDS = "{" +
- " \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
- " \"condition\": {\"operator\":\"contains\", \"matchingValue\":\"matchme\"}," +
- " \"command\": \"EHLO\"," +
- " \"numberOfAnswer\": 7" +
- "}";
-
- static final MockSMTPBehavior POJO_ALL_FIELDS = new MockSMTPBehavior(
- SMTPCommand.EHLO,
- Optional.of(new Condition.OperatorCondition(Operator.CONTAINS, "matchme")),
- Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"),
- MockSMTPBehavior.NumberOfAnswersPolicy.times(7));
-
@Nested
class NumberOfAnswersPolicyTest {
@Test
@@ -131,36 +106,36 @@ class MockSMTPBehaviorTest {
class JSONTest {
@Test
void jacksonShouldDeserializeMockSMTPBehaviorWithAllField() throws Exception {
- MockSMTPBehavior behavior = OBJECT_MAPPER.readValue(JSON_ALL_FIELDS, MockSMTPBehavior.class);
+ MockSMTPBehavior behavior = OBJECT_MAPPER.readValue(JSON_BEHAVIOR_ALL_FIELDS, MockSMTPBehavior.class);
assertThat(behavior)
- .isEqualTo(POJO_ALL_FIELDS);
+ .isEqualTo(BEHAVIOR_ALL_FIELDS);
}
@Test
void jacksonShouldSerializeMockSMTPBehaviorWithAllField() throws Exception {
- String json = OBJECT_MAPPER.writeValueAsString(POJO_ALL_FIELDS);
+ String json = OBJECT_MAPPER.writeValueAsString(BEHAVIOR_ALL_FIELDS);
assertThatJson(json)
.withOptions(new Options(Option.TREATING_NULL_AS_ABSENT))
- .isEqualTo(JSON_ALL_FIELDS);
+ .isEqualTo(JSON_BEHAVIOR_ALL_FIELDS);
}
@Test
void jacksonShouldDeserializeMockSMTPBehaviorWithCompulsoryField() throws Exception {
- MockSMTPBehavior behavior = OBJECT_MAPPER.readValue(JSON_COMPULSORY_FIELDS, MockSMTPBehavior.class);
+ MockSMTPBehavior behavior = OBJECT_MAPPER.readValue(JSON_BEHAVIOR_COMPULSORY_FIELDS, MockSMTPBehavior.class);
assertThat(behavior)
- .isEqualTo(POJO_COMPULSORY_FIELDS);
+ .isEqualTo(BEHAVIOR_COMPULSORY_FIELDS);
}
@Test
void jacksonShouldSerializeMockSMTPBehaviorWithCompulsoryField() throws Exception {
- String json = OBJECT_MAPPER.writeValueAsString(POJO_COMPULSORY_FIELDS);
+ String json = OBJECT_MAPPER.writeValueAsString(BEHAVIOR_COMPULSORY_FIELDS);
assertThatJson(json)
.withOptions(new Options(Option.TREATING_NULL_AS_ABSENT))
- .isEqualTo(JSON_COMPULSORY_FIELDS);
+ .isEqualTo(JSON_BEHAVIOR_COMPULSORY_FIELDS);
}
}
}
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java
index 8507a0f..d9647f3 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java
@@ -20,31 +20,18 @@
package org.apache.james.mock.smtp.server;
import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+import static org.apache.james.mock.smtp.server.Fixture.BEHAVIORS;
+import static org.apache.james.mock.smtp.server.Fixture.JSON_BEHAVIORS;
+import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.guava.GuavaModule;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import com.google.common.collect.ImmutableList;
-
import net.javacrumbs.jsonunit.core.Option;
import net.javacrumbs.jsonunit.core.internal.Options;
import nl.jqno.equalsverifier.EqualsVerifier;
class MockSmtpBehaviorsTest {
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
- .registerModule(new Jdk8Module())
- .registerModule(new GuavaModule());
-
- private static final String JSON = "[" + MockSMTPBehaviorTest.JSON_ALL_FIELDS + ", "
- + MockSMTPBehaviorTest.JSON_COMPULSORY_FIELDS + "]";
-
- static final MockSmtpBehaviors POJO = new MockSmtpBehaviors(ImmutableList.of(
- MockSMTPBehaviorTest.POJO_ALL_FIELDS,
- MockSMTPBehaviorTest.POJO_COMPULSORY_FIELDS));
-
@Test
void shouldMatchBeanContract() {
EqualsVerifier.forClass(MockSmtpBehaviors.class)
@@ -53,21 +40,18 @@ class MockSmtpBehaviorsTest {
@Test
void jacksonShouldDeserializeBehaviors() throws Exception {
- MockSmtpBehaviors behaviors = OBJECT_MAPPER.readValue("[" + MockSMTPBehaviorTest.JSON_ALL_FIELDS + ", "
- + MockSMTPBehaviorTest.JSON_COMPULSORY_FIELDS + "]", MockSmtpBehaviors.class);
+ MockSmtpBehaviors behaviors = OBJECT_MAPPER.readValue(JSON_BEHAVIORS, MockSmtpBehaviors.class);
assertThat(behaviors)
- .isEqualTo(new MockSmtpBehaviors(ImmutableList.of(
- MockSMTPBehaviorTest.POJO_ALL_FIELDS,
- MockSMTPBehaviorTest.POJO_COMPULSORY_FIELDS)));
+ .isEqualTo(BEHAVIORS);
}
@Test
void jacksonShouldSerializeBehaviors() throws Exception {
- String json = OBJECT_MAPPER.writeValueAsString(POJO);
+ String json = OBJECT_MAPPER.writeValueAsString(BEHAVIORS);
assertThatJson(json)
.withOptions(new Options(Option.TREATING_NULL_AS_ABSENT, Option.IGNORING_ARRAY_ORDER))
- .isEqualTo(JSON);
+ .isEqualTo(JSON_BEHAVIORS);
}
}
\ No newline at end of file
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ResponseTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ResponseTest.java
index cc2cfb6..e07e819 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ResponseTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ResponseTest.java
@@ -20,6 +20,7 @@
package org.apache.james.mock.smtp.server;
import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -27,12 +28,9 @@ import org.apache.james.mock.smtp.server.Response.SMTPStatusCode;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
import nl.jqno.equalsverifier.EqualsVerifier;
class ResponseTest {
- static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
static final int OK_250_CODE = 250;
static final Response.SMTPStatusCode OK_250 = Response.SMTPStatusCode.of(OK_250_CODE);
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java
index 0ce87f0..d610fc5 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java
@@ -19,6 +19,8 @@
package org.apache.james.mock.smtp.server;
+import static org.apache.james.mock.smtp.server.Fixture.BEHAVIORS;
+import static org.apache.james.mock.smtp.server.Fixture.BEHAVIOR_COMPULSORY_FIELDS;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.BeforeEach;
@@ -42,16 +44,16 @@ class SMTPBehaviorRepositoryTest {
@Test
void getBehaviorsShouldReturnPreviouslyStoredValue() {
- testee.setBehaviors(MockSmtpBehaviorsTest.POJO);
+ testee.setBehaviors(BEHAVIORS);
- assertThat(testee.getBehaviors()).contains(MockSmtpBehaviorsTest.POJO);
+ assertThat(testee.getBehaviors()).contains(BEHAVIORS);
}
@Test
void getBehaviorsShouldReturnLatestStoredValue() {
- MockSmtpBehaviors newPojo = new MockSmtpBehaviors(ImmutableList.of(MockSMTPBehaviorTest.POJO_COMPULSORY_FIELDS));
+ MockSmtpBehaviors newPojo = new MockSmtpBehaviors(ImmutableList.of(BEHAVIOR_COMPULSORY_FIELDS));
- testee.setBehaviors(MockSmtpBehaviorsTest.POJO);
+ testee.setBehaviors(BEHAVIORS);
testee.setBehaviors(newPojo);
assertThat(testee.getBehaviors()).contains(newPojo);
@@ -59,7 +61,7 @@ class SMTPBehaviorRepositoryTest {
@Test
void getBehaviorsShouldReturnEmptyWhenCleared() {
- testee.setBehaviors(MockSmtpBehaviorsTest.POJO);
+ testee.setBehaviors(BEHAVIORS);
testee.clearBehaviors();
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
index be396c1..95abb58 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
@@ -19,6 +19,7 @@
package org.apache.james.mock.smtp.server;
+import static org.apache.james.mock.smtp.server.Fixture.OBJECT_MAPPER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -26,11 +27,7 @@ import java.io.IOException;
import org.junit.jupiter.api.Test;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
class SMTPCommandTest {
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
@Test
void jacksonShouldDeserializeRsetCommand() throws Exception {
SMTPCommand command = OBJECT_MAPPER.readValue("\"RSET\"", SMTPCommand.class);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org