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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
