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:48 UTC
[james-project] branch master updated (d6ad1d2 -> 3d30d5a)
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.
from d6ad1d2 JAMES-2864 Replace Optional<Condition> by Condition with MATCH_ALL capability
new 7778b79 JAMES-2854 Upgrade to OpenJDK 8u222 JRE base image
new 7478399 JAMES-2855 Upgrade ruby to 2.6.3 in Homepage Dockerfile
new a37c7db JAMES-2855 Correct log4j-over-slf4j bridge
new 7263450 JAMES-2866 JSON serialization for SMTPCommand
new 5a192d5 JAMES-2866 JSON serialization for Condition
new d1ccaad JAMES-2866 JSON serialization for Response
new ff6e5e8 JAMES-2866 JSON serialization for MockSMTPBehavior
new 0f02246 JAMES-2866 MockSMTPBehaviors POJO
new 1f02792 JAMES-2866 Store SMTP behaviors
new c882f4a JAMES-2866 Manage MockSmtp configuration over Http (Jetty)
new b2f0789 JAMES-2866 Avoid relying on Optional now that we have the matchAll condition
new d476c69 JAMES-2855 Upgrade to Junit 5.5.1
new c1e3542 JAMES-2855 Upgrade surefire plugin to 2.22.2
new ede4985 JAMES-2855 Add missing junit-platform-launcher dependency to poms
new a2b069c JAMES-2855 @RegisterExtension fields cannot be private
new 1da0096 JAMES-2593 Use distributed james image in docker-compose
new 3d30d5a JAMES-2593 expose webadmin port in docker-compose
The 17 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
backends-common/elasticsearch/pom.xml | 4 +-
backends-common/rabbitmq/pom.xml | 2 +-
dockerfiles/run/docker-compose.yml | 3 +-
dockerfiles/run/guice/cassandra-ldap/Dockerfile | 2 +-
.../run/guice/cassandra-rabbitmq-ldap/Dockerfile | 2 +-
.../run/guice/cassandra-rabbitmq/Dockerfile | 2 +-
dockerfiles/run/guice/cassandra/Dockerfile | 2 +-
dockerfiles/run/guice/jpa-smtp/Dockerfile | 2 +-
dockerfiles/run/guice/jpa/Dockerfile | 2 +-
dockerfiles/run/guice/memory/Dockerfile | 2 +-
dockerfiles/run/spring/Dockerfile | 2 +-
dockerfiles/site/homepage/Dockerfile | 2 +-
examples/custom-listeners/pom.xml | 5 +
mailbox/caching/pom.xml | 5 +
mailbox/event/json/pom.xml | 5 +
mailbox/plugin/quota-mailing/pom.xml | 2 +-
mailbox/tika/pom.xml | 2 +-
mpt/impl/managesieve/core/pom.xml | 4 +
pom.xml | 27 ++--
protocols/api/pom.xml | 4 +-
server/app/pom.xml | 74 +++++++++++
server/blob/blob-export-api/pom.xml | 5 +
server/container/guice/blob-export-guice/pom.xml | 5 +
.../guice/cassandra-rabbitmq-ldap-guice/pom.xml | 5 +
server/container/guice/configuration/pom.xml | 5 +
server/container/guice/es-metric-reporter/pom.xml | 2 +-
server/container/guice/guice-common/pom.xml | 5 +
server/container/guice/jpa-common-guice/pom.xml | 5 +
.../guice/mailbox-plugin-spamassassin/pom.xml | 2 +-
server/container/guice/mailbox/pom.xml | 5 +
server/container/guice/memory-guice/pom.xml | 5 +
server/container/jetty/pom.xml | 2 +-
server/container/lifecycle-api/pom.xml | 9 +-
server/container/spring/pom.xml | 18 +++
server/data/data-cassandra/pom.xml | 4 +-
server/data/data-file/pom.xml | 4 +-
server/data/data-jdbc/pom.xml | 4 +-
server/data/data-jmap-cassandra/pom.xml | 13 +-
server/data/data-jmap/pom.xml | 5 +
server/data/data-jpa/pom.xml | 4 +-
server/data/data-ldap/pom.xml | 14 +-
server/data/data-library/pom.xml | 4 +-
server/dns-service/dnsservice-dnsjava/pom.xml | 4 +-
server/mailet/mailetcontainer-camel/pom.xml | 2 +-
server/mailet/mock-smtp-server/pom.xml | 39 ++++++
.../apache/james/mock/smtp/server/Condition.java | 111 ++++++++++++----
.../mock/smtp/server/HTTPConfigurationServer.java | 110 +++++++++++++++
.../james/mock/smtp/server/MockSMTPBehavior.java | 70 +++++++++-
.../james/mock/smtp/server/MockSmtpBehaviors.java} | 29 ++--
.../apache/james/mock/smtp/server/Operator.java | 60 ++++++++-
.../apache/james/mock/smtp/server/Response.java | 29 +++-
.../{Operator.java => SMTPBehaviorRepository.java} | 25 ++--
.../apache/james/mock/smtp/server/SMTPCommand.java | 18 +++
.../james/mock/smtp/server/ConditionTest.java | 93 +++++++++++--
.../org/apache/james/mock/smtp/server/Fixture.java | 65 +++++++++
.../smtp/server/HTTPConfigurationServerTest.java | 130 ++++++++++++++++++
.../mock/smtp/server/MockSMTPBehaviorTest.java | 57 ++++++--
.../mock/smtp/server/MockSmtpBehaviorsTest.java | 53 +++-----
.../james/mock/smtp/server/ResponseTest.java | 63 +++++++++
.../smtp/server/SMTPBehaviorRepositoryTest.java | 57 ++++----
.../james/mock/smtp/server/SMTPCommandTest.java | 148 +++++++++++++++++++++
.../mailrepository/mailrepository-memory/pom.xml | 5 +
server/protocols/fetchmail/pom.xml | 4 +-
...LinshareBlobExportMechanismIntegrationTest.java | 2 +-
server/protocols/jmap-integration-testing/pom.xml | 12 --
server/protocols/jmap/pom.xml | 5 +
server/protocols/protocols-imap4/pom.xml | 4 +-
server/protocols/protocols-library/pom.xml | 4 +-
server/protocols/protocols-lmtp/pom.xml | 4 +-
server/protocols/protocols-managesieve/pom.xml | 4 +-
server/protocols/protocols-pop3/pom.xml | 4 +-
server/protocols/protocols-smtp/pom.xml | 4 +-
.../webadmin/webadmin-cassandra-data/pom.xml | 5 +
.../protocols/webadmin/webadmin-mailqueue/pom.xml | 5 +
server/queue/queue-api/pom.xml | 5 +
server/queue/queue-file/pom.xml | 5 +
server/testing/pom.xml | 4 +
third-party/linshare/pom.xml | 4 +-
78 files changed, 1289 insertions(+), 234 deletions(-)
create mode 100644 server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
copy server/{protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/dto/MailKeyDTO.java => mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java} (67%)
copy server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/{Operator.java => SMTPBehaviorRepository.java} (68%)
create mode 100644 server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
create mode 100644 server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
copy mailbox/plugin/quota-search/src/test/java/org/apache/james/quota/search/LimitTest.java => server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java (58%)
copy mailet/standard/src/test/java/org/apache/james/transport/mailets/RecipientToLowerCaseTest.java => server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java (54%)
create mode 100644 server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 13/17: JAMES-2855 Upgrade surefire plugin to 2.22.2
Posted by bt...@apache.org.
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 c1e354230a9bfd59de3aaccc47bded5cc0935e2f
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Aug 23 17:06:56 2019 +0700
JAMES-2855 Upgrade surefire plugin to 2.22.2
---
pom.xml | 16 ++--------------
server/protocols/jmap-integration-testing/pom.xml | 12 ------------
2 files changed, 2 insertions(+), 26 deletions(-)
diff --git a/pom.xml b/pom.xml
index 8f6053d..1459c2d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2904,30 +2904,18 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <version>2.22.0</version>
+ <version>2.22.2</version>
<configuration>
<argLine>-Xms512m -Xmx1024m</argLine>
<reuseForks>false</reuseForks>
<!-- Fail tests longer than 2 hours, prevent form random locking tests -->
<forkedProcessTimeoutInSeconds>7200</forkedProcessTimeoutInSeconds>
</configuration>
- <dependencies>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- <version>${junit.jupiter.version}</version>
- </dependency>
- <dependency>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- <version>${junit.vintage.version}</version>
- </dependency>
- </dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
- <version>2.22.0</version>
+ <version>2.22.2</version>
<configuration>
<aggregate>true</aggregate>
</configuration>
diff --git a/server/protocols/jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/pom.xml
index 71ea405..7ae8946 100644
--- a/server/protocols/jmap-integration-testing/pom.xml
+++ b/server/protocols/jmap-integration-testing/pom.xml
@@ -45,18 +45,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <dependencies>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- <version>${junit.jupiter.version}</version>
- </dependency>
- <dependency>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- <version>${junit.vintage.version}</version>
- </dependency>
- </dependencies>
</plugin>
</plugins>
</build>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 03/17: JAMES-2855 Correct log4j-over-slf4j bridge
Posted by bt...@apache.org.
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 a37c7db23fd26b4ef3d7e93bf83990668c766b82
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Wed Aug 21 17:58:48 2019 +0700
JAMES-2855 Correct log4j-over-slf4j bridge
Instead of using slf4j-log4j which does it in the reverse way
---
backends-common/elasticsearch/pom.xml | 4 +-
backends-common/rabbitmq/pom.xml | 2 +-
mailbox/plugin/quota-mailing/pom.xml | 2 +-
mailbox/tika/pom.xml | 2 +-
pom.xml | 5 ++
protocols/api/pom.xml | 4 +-
server/app/pom.xml | 74 ++++++++++++++++++++++
server/container/guice/es-metric-reporter/pom.xml | 2 +-
.../guice/mailbox-plugin-spamassassin/pom.xml | 2 +-
server/container/jetty/pom.xml | 2 +-
server/container/lifecycle-api/pom.xml | 4 +-
server/container/spring/pom.xml | 18 ++++++
server/data/data-cassandra/pom.xml | 4 +-
server/data/data-file/pom.xml | 4 +-
server/data/data-jdbc/pom.xml | 4 +-
server/data/data-jpa/pom.xml | 4 +-
server/data/data-ldap/pom.xml | 14 ++--
server/data/data-library/pom.xml | 4 +-
server/dns-service/dnsservice-dnsjava/pom.xml | 4 +-
server/mailet/mailetcontainer-camel/pom.xml | 2 +-
server/protocols/fetchmail/pom.xml | 4 +-
server/protocols/protocols-imap4/pom.xml | 4 +-
server/protocols/protocols-library/pom.xml | 4 +-
server/protocols/protocols-lmtp/pom.xml | 4 +-
server/protocols/protocols-managesieve/pom.xml | 4 +-
server/protocols/protocols-pop3/pom.xml | 4 +-
server/protocols/protocols-smtp/pom.xml | 4 +-
third-party/linshare/pom.xml | 4 +-
28 files changed, 143 insertions(+), 50 deletions(-)
diff --git a/backends-common/elasticsearch/pom.xml b/backends-common/elasticsearch/pom.xml
index b68bd15..3c4c216 100644
--- a/backends-common/elasticsearch/pom.xml
+++ b/backends-common/elasticsearch/pom.xml
@@ -101,11 +101,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
diff --git a/backends-common/rabbitmq/pom.xml b/backends-common/rabbitmq/pom.xml
index 61f1e78..48dd167 100644
--- a/backends-common/rabbitmq/pom.xml
+++ b/backends-common/rabbitmq/pom.xml
@@ -107,7 +107,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
diff --git a/mailbox/plugin/quota-mailing/pom.xml b/mailbox/plugin/quota-mailing/pom.xml
index 682e405..0cdcaaf 100644
--- a/mailbox/plugin/quota-mailing/pom.xml
+++ b/mailbox/plugin/quota-mailing/pom.xml
@@ -138,7 +138,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
</dependencies>
diff --git a/mailbox/tika/pom.xml b/mailbox/tika/pom.xml
index e967ba2..ca37f1c 100644
--- a/mailbox/tika/pom.xml
+++ b/mailbox/tika/pom.xml
@@ -126,7 +126,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
diff --git a/pom.xml b/pom.xml
index 9245bba..507e013 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2510,6 +2510,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
diff --git a/protocols/api/pom.xml b/protocols/api/pom.xml
index 36c031f..fc187f1 100644
--- a/protocols/api/pom.xml
+++ b/protocols/api/pom.xml
@@ -61,11 +61,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/app/pom.xml b/server/app/pom.xml
index b783991..8f79651 100644
--- a/server/app/pom.xml
+++ b/server/app/pom.xml
@@ -159,6 +159,10 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -170,17 +174,33 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-data-jpa</artifactId>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-data-ldap</artifactId>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
@@ -191,6 +211,10 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -202,6 +226,12 @@
<groupId>${james.groupId}</groupId>
<artifactId>james-server-dnsservice-dnsjava</artifactId>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
@@ -222,6 +252,10 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -231,6 +265,12 @@
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-lifecycle-api</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
@@ -262,6 +302,10 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -279,11 +323,23 @@
<groupId>${james.groupId}</groupId>
<artifactId>james-server-protocols-imap4</artifactId>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-protocols-library</artifactId>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
@@ -294,12 +350,22 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-protocols-managesieve</artifactId>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
@@ -310,6 +376,10 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -322,6 +392,10 @@
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
diff --git a/server/container/guice/es-metric-reporter/pom.xml b/server/container/guice/es-metric-reporter/pom.xml
index 15ec605..83e422b 100644
--- a/server/container/guice/es-metric-reporter/pom.xml
+++ b/server/container/guice/es-metric-reporter/pom.xml
@@ -66,7 +66,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
</dependencies>
</project>
diff --git a/server/container/guice/mailbox-plugin-spamassassin/pom.xml b/server/container/guice/mailbox-plugin-spamassassin/pom.xml
index 1f3d02c..2223988 100644
--- a/server/container/guice/mailbox-plugin-spamassassin/pom.xml
+++ b/server/container/guice/mailbox-plugin-spamassassin/pom.xml
@@ -68,7 +68,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
</dependencies>
diff --git a/server/container/jetty/pom.xml b/server/container/jetty/pom.xml
index 13d8668..2d7b2d0 100644
--- a/server/container/jetty/pom.xml
+++ b/server/container/jetty/pom.xml
@@ -95,7 +95,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
</dependencies>
</project>
diff --git a/server/container/lifecycle-api/pom.xml b/server/container/lifecycle-api/pom.xml
index 48fbbff..6b17dda 100644
--- a/server/container/lifecycle-api/pom.xml
+++ b/server/container/lifecycle-api/pom.xml
@@ -61,11 +61,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
</project>
diff --git a/server/container/spring/pom.xml b/server/container/spring/pom.xml
index bbbaa70..fa2987a 100644
--- a/server/container/spring/pom.xml
+++ b/server/container/spring/pom.xml
@@ -66,6 +66,12 @@
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-lifecycle-api</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
@@ -82,6 +88,12 @@
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-protocols-library</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
@@ -120,6 +132,12 @@
<dependency>
<groupId>${james.protocols.groupId}</groupId>
<artifactId>protocols-api</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
diff --git a/server/data/data-cassandra/pom.xml b/server/data/data-cassandra/pom.xml
index 1077ae6..7ebed1a 100644
--- a/server/data/data-cassandra/pom.xml
+++ b/server/data/data-cassandra/pom.xml
@@ -143,11 +143,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
diff --git a/server/data/data-file/pom.xml b/server/data/data-file/pom.xml
index 9df1ea5..9d9f4f1 100644
--- a/server/data/data-file/pom.xml
+++ b/server/data/data-file/pom.xml
@@ -151,11 +151,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/data/data-jdbc/pom.xml b/server/data/data-jdbc/pom.xml
index 1efa231..7e2b63f 100644
--- a/server/data/data-jdbc/pom.xml
+++ b/server/data/data-jdbc/pom.xml
@@ -160,11 +160,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
</project>
diff --git a/server/data/data-jpa/pom.xml b/server/data/data-jpa/pom.xml
index fc1927e..f32eb76 100644
--- a/server/data/data-jpa/pom.xml
+++ b/server/data/data-jpa/pom.xml
@@ -140,11 +140,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/data/data-ldap/pom.xml b/server/data/data-ldap/pom.xml
index 2dea0f4..4d67826 100644
--- a/server/data/data-ldap/pom.xml
+++ b/server/data/data-ldap/pom.xml
@@ -60,14 +60,6 @@
<artifactId>guavate</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-configuration2</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
</dependency>
@@ -81,6 +73,10 @@
<artifactId>api-ldap-model</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-configuration2</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
</dependency>
@@ -99,7 +95,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
diff --git a/server/data/data-library/pom.xml b/server/data/data-library/pom.xml
index de0ba47..e796edd 100644
--- a/server/data/data-library/pom.xml
+++ b/server/data/data-library/pom.xml
@@ -143,11 +143,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/dns-service/dnsservice-dnsjava/pom.xml b/server/dns-service/dnsservice-dnsjava/pom.xml
index 9d42319..2c93101 100644
--- a/server/dns-service/dnsservice-dnsjava/pom.xml
+++ b/server/dns-service/dnsservice-dnsjava/pom.xml
@@ -96,11 +96,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/mailet/mailetcontainer-camel/pom.xml b/server/mailet/mailetcontainer-camel/pom.xml
index a057bf4..d7bdcdc 100644
--- a/server/mailet/mailetcontainer-camel/pom.xml
+++ b/server/mailet/mailetcontainer-camel/pom.xml
@@ -185,7 +185,7 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
</dependencies>
diff --git a/server/protocols/fetchmail/pom.xml b/server/protocols/fetchmail/pom.xml
index 6391af7..29bad19 100644
--- a/server/protocols/fetchmail/pom.xml
+++ b/server/protocols/fetchmail/pom.xml
@@ -83,11 +83,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/protocols/protocols-imap4/pom.xml b/server/protocols/protocols-imap4/pom.xml
index b3535fd..6ed69d0 100644
--- a/server/protocols/protocols-imap4/pom.xml
+++ b/server/protocols/protocols-imap4/pom.xml
@@ -99,11 +99,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/protocols/protocols-library/pom.xml b/server/protocols/protocols-library/pom.xml
index 905252c..e96b279 100644
--- a/server/protocols/protocols-library/pom.xml
+++ b/server/protocols/protocols-library/pom.xml
@@ -86,11 +86,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/protocols/protocols-lmtp/pom.xml b/server/protocols/protocols-lmtp/pom.xml
index 248f726..a8c0aa4 100644
--- a/server/protocols/protocols-lmtp/pom.xml
+++ b/server/protocols/protocols-lmtp/pom.xml
@@ -121,11 +121,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/protocols/protocols-managesieve/pom.xml b/server/protocols/protocols-managesieve/pom.xml
index 93090b2..3f98e46 100644
--- a/server/protocols/protocols-managesieve/pom.xml
+++ b/server/protocols/protocols-managesieve/pom.xml
@@ -59,11 +59,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/protocols/protocols-pop3/pom.xml b/server/protocols/protocols-pop3/pom.xml
index ed168ba..f123132 100644
--- a/server/protocols/protocols-pop3/pom.xml
+++ b/server/protocols/protocols-pop3/pom.xml
@@ -158,11 +158,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/server/protocols/protocols-smtp/pom.xml b/server/protocols/protocols-smtp/pom.xml
index d244dc5..dbf514f 100644
--- a/server/protocols/protocols-smtp/pom.xml
+++ b/server/protocols/protocols-smtp/pom.xml
@@ -232,11 +232,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
diff --git a/third-party/linshare/pom.xml b/third-party/linshare/pom.xml
index 20b33fa..922f061 100644
--- a/third-party/linshare/pom.xml
+++ b/third-party/linshare/pom.xml
@@ -115,11 +115,11 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
+ <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 06/17: JAMES-2866 JSON serialization for Response
Posted by bt...@apache.org.
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 d1ccaad97ebf1e850169be99b87812163e828a07
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Aug 21 15:09:41 2019 +0700
JAMES-2866 JSON serialization for Response
---
.../apache/james/mock/smtp/server/Response.java | 29 +++++++++-
.../james/mock/smtp/server/ResponseTest.java | 65 ++++++++++++++++++++++
2 files changed, 92 insertions(+), 2 deletions(-)
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Response.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Response.java
index 9adb043..04f3ea0 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Response.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Response.java
@@ -19,8 +19,12 @@
package org.apache.james.mock.smtp.server;
+import java.util.Arrays;
import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonValue;
import com.google.common.base.Preconditions;
class Response {
@@ -53,10 +57,19 @@ class Response {
private final int code;
- private SMTPStatusCode(int code) {
+ @JsonCreator
+ public static SMTPStatusCode of(int code) {
+ return Arrays.stream(values())
+ .filter(value -> value.code == code)
+ .findFirst()
+ .orElseThrow(() -> new IllegalArgumentException(code + " is not a supported SMTP code"));
+ }
+
+ SMTPStatusCode(int code) {
this.code = code;
}
+ @JsonValue
public int getCode() {
return code;
}
@@ -74,7 +87,10 @@ class Response {
private final String message;
private final boolean serverRejected;
- private Response(SMTPStatusCode code, String message, boolean serverRejected) {
+ @JsonCreator
+ private Response(@JsonProperty("code") SMTPStatusCode code,
+ @JsonProperty("message") String message,
+ @JsonProperty("rejected") boolean serverRejected) {
Preconditions.checkNotNull(message);
Preconditions.checkNotNull(code);
@@ -87,10 +103,19 @@ class Response {
return code.getCode() + " " + message;
}
+ @JsonProperty("rejected")
boolean isServerRejected() {
return serverRejected;
}
+ public SMTPStatusCode getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
@Override
public final boolean equals(Object o) {
if (o instanceof Response) {
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 cd5f39f..cc2cfb6 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
@@ -19,15 +19,61 @@
package org.apache.james.mock.smtp.server;
+import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
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);
+
+ @Nested
+ class SMTPStatusCodeTest {
+ @Test
+ void shouldMatchBeanContract() {
+ EqualsVerifier.forClass(Response.SMTPStatusCode.class)
+ .verify();
+ }
+
+ @Test
+ void constructorShouldThrowWhenStatusCodeIsNegative() {
+ assertThatThrownBy(() -> Response.SMTPStatusCode.of(-1))
+ .isInstanceOf(IllegalArgumentException.class);
+ }
+
+ @Test
+ void constructorShouldThrowWhenStatusCodeIsZero() {
+ assertThatThrownBy(() -> Response.SMTPStatusCode.of(0))
+ .isInstanceOf(IllegalArgumentException.class);
+ }
+
+ @Test
+ void constructorShouldThrowWhenStatusCodeIsTooBig() {
+ assertThatThrownBy(() -> Response.SMTPStatusCode.of(600))
+ .isInstanceOf(IllegalArgumentException.class);
+ }
+
+ @Test
+ void constructorShouldThrowWhenStatusCodeIsTooLittle() {
+ assertThatThrownBy(() -> Response.SMTPStatusCode.of(99))
+ .isInstanceOf(IllegalArgumentException.class);
+ }
+
+ @Test
+ void getCodeShouldReturnInternalValue() {
+ assertThat(OK_250.getCode())
+ .isEqualTo(OK_250_CODE);
+ }
+ }
@Test
void shouldMatchBeanContract() {
@@ -70,4 +116,23 @@ class ResponseTest {
assertThat(Response.serverAccept(SMTPStatusCode.ACTION_COMPLETE_250, "message").isServerRejected())
.isFalse();
}
+
+ @Nested
+ class JSONTest {
+ @Test
+ void jacksonShouldDeserializeResponse() throws Exception {
+ Response response = OBJECT_MAPPER.readValue(
+ "{\"code\":250, \"message\":\"OK\", \"rejected\":false}",
+ Response.class);
+
+ assertThat(response).isEqualTo(Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"));
+ }
+
+ @Test
+ void jacksonShouldSerializeResponse() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"));
+
+ assertThatJson(json).isEqualTo("{\"code\":250, \"message\":\"OK\", \"rejected\":false}");
+ }
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 10/17: JAMES-2866 Manage MockSmtp configuration
over Http (Jetty)
Posted by bt...@apache.org.
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
[james-project] 15/17: JAMES-2855 @RegisterExtension fields cannot
be private
Posted by bt...@apache.org.
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 a2b069c802672297b05f9437aea56641453d1147
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Mon Aug 26 15:08:05 2019 +0700
JAMES-2855 @RegisterExtension fields cannot be private
---
.../methods/integration/LinshareBlobExportMechanismIntegrationTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
index 068827d..71f7b9f 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
@@ -92,7 +92,7 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
private LinshareAPI user1LinshareAPI;
@RegisterExtension
- private IMAPMessageReader imapMessageReader = new IMAPMessageReader();
+ IMAPMessageReader imapMessageReader = new IMAPMessageReader();
@BeforeEach
void setup(GuiceJamesServer jmapServer) throws Throwable {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 09/17: JAMES-2866 Store SMTP behaviors
Posted by bt...@apache.org.
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 1f027922ef53485858c7d3d4e63b3def8c812b2e
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Aug 21 16:13:55 2019 +0700
JAMES-2866 Store SMTP behaviors
---
.../mock/smtp/server/SMTPBehaviorRepository.java | 43 ++++++++++++++
.../mock/smtp/server/MockSmtpBehaviorsTest.java | 2 +-
.../smtp/server/SMTPBehaviorRepositoryTest.java | 68 ++++++++++++++++++++++
3 files changed, 112 insertions(+), 1 deletion(-)
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
new file mode 100644
index 0000000..23084cd
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepository.java
@@ -0,0 +1,43 @@
+/****************************************************************
+ * 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 java.util.concurrent.atomic.AtomicReference;
+
+public class SMTPBehaviorRepository {
+ private final AtomicReference<MockSmtpBehaviors> behaviors;
+
+ public SMTPBehaviorRepository() {
+ this.behaviors = new AtomicReference<>();
+ }
+
+ public Optional<MockSmtpBehaviors> getBehaviors() {
+ return Optional.ofNullable(this.behaviors.get());
+ }
+
+ public void clearBehaviors() {
+ this.behaviors.set(null);
+ }
+
+ public void setBehaviors(MockSmtpBehaviors behaviors) {
+ this.behaviors.set(behaviors);
+ }
+}
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 83ffaaf..8507a0f 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
@@ -41,7 +41,7 @@ class MockSmtpBehaviorsTest {
private static final String JSON = "[" + MockSMTPBehaviorTest.JSON_ALL_FIELDS + ", "
+ MockSMTPBehaviorTest.JSON_COMPULSORY_FIELDS + "]";
- private static final MockSmtpBehaviors POJO = new MockSmtpBehaviors(ImmutableList.of(
+ static final MockSmtpBehaviors POJO = new MockSmtpBehaviors(ImmutableList.of(
MockSMTPBehaviorTest.POJO_ALL_FIELDS,
MockSMTPBehaviorTest.POJO_COMPULSORY_FIELDS));
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
new file mode 100644
index 0000000..0ce87f0
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPBehaviorRepositoryTest.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * 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 org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.collect.ImmutableList;
+
+class SMTPBehaviorRepositoryTest {
+ private SMTPBehaviorRepository testee;
+
+ @BeforeEach
+ void setUp() {
+ testee = new SMTPBehaviorRepository();
+ }
+
+ @Test
+ void getBehaviorsShouldReturnEmptyWhenNoValueStored() {
+ assertThat(testee.getBehaviors())
+ .isEmpty();
+ }
+
+ @Test
+ void getBehaviorsShouldReturnPreviouslyStoredValue() {
+ testee.setBehaviors(MockSmtpBehaviorsTest.POJO);
+
+ assertThat(testee.getBehaviors()).contains(MockSmtpBehaviorsTest.POJO);
+ }
+
+ @Test
+ void getBehaviorsShouldReturnLatestStoredValue() {
+ MockSmtpBehaviors newPojo = new MockSmtpBehaviors(ImmutableList.of(MockSMTPBehaviorTest.POJO_COMPULSORY_FIELDS));
+
+ testee.setBehaviors(MockSmtpBehaviorsTest.POJO);
+ testee.setBehaviors(newPojo);
+
+ assertThat(testee.getBehaviors()).contains(newPojo);
+ }
+
+ @Test
+ void getBehaviorsShouldReturnEmptyWhenCleared() {
+ testee.setBehaviors(MockSmtpBehaviorsTest.POJO);
+
+ testee.clearBehaviors();
+
+ assertThat(testee.getBehaviors()).isEmpty();
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 12/17: JAMES-2855 Upgrade to Junit 5.5.1
Posted by bt...@apache.org.
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 d476c69212d5dfdce29f962cef598e4af8868431
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Aug 23 17:06:33 2019 +0700
JAMES-2855 Upgrade to Junit 5.5.1
---
pom.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 507e013..8f6053d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -604,9 +604,9 @@
<dnsjava.version>2.1.9</dnsjava.version>
<junit.version>4.12</junit.version>
- <junit.jupiter.version>5.2.0</junit.jupiter.version>
- <junit.platform.version>1.4.1</junit.platform.version>
- <junit.vintage.version>5.2.0</junit.vintage.version>
+ <junit.jupiter.version>5.5.1</junit.jupiter.version>
+ <junit.platform.version>1.5.1</junit.platform.version>
+ <junit.vintage.version>5.5.1</junit.vintage.version>
<concurrent.version>1.3.4</concurrent.version>
<xbean-spring.version>4.9</xbean-spring.version>
<netty.version>3.10.6.Final</netty.version>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 17/17: JAMES-2593 expose webadmin port in
docker-compose
Posted by bt...@apache.org.
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 3d30d5a9cace8b1889d2607987b95067707fd679
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Mon Aug 26 09:59:40 2019 +0700
JAMES-2593 expose webadmin port in docker-compose
---
dockerfiles/run/docker-compose.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/dockerfiles/run/docker-compose.yml b/dockerfiles/run/docker-compose.yml
index 3affe16..d21e296 100644
--- a/dockerfiles/run/docker-compose.yml
+++ b/dockerfiles/run/docker-compose.yml
@@ -21,6 +21,7 @@ services:
- "465:465"
- "587:587"
- "993:993"
+ - "8000:8000"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 16/17: JAMES-2593 Use distributed james image in
docker-compose
Posted by bt...@apache.org.
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 1da0096fceb492c7f772a0976ba03546d1c19160
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Mon Aug 26 09:59:06 2019 +0700
JAMES-2593 Use distributed james image in docker-compose
---
dockerfiles/run/docker-compose.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dockerfiles/run/docker-compose.yml b/dockerfiles/run/docker-compose.yml
index b9611e3..3affe16 100644
--- a/dockerfiles/run/docker-compose.yml
+++ b/dockerfiles/run/docker-compose.yml
@@ -10,7 +10,7 @@ services:
- rabbitmq
- swift
entrypoint: bash -c "java -Dworking.directory=/root/ -jar james-server.jar"
- image: linagora/james-project:latest
+ image: linagora/james-rabbitmq-project:latest
container_name: james
hostname: james.local
ports:
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 04/17: JAMES-2866 JSON serialization for SMTPCommand
Posted by bt...@apache.org.
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 7263450e5084ded737805086053897bc9919a625
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Aug 21 14:52:06 2019 +0700
JAMES-2866 JSON serialization for SMTPCommand
---
server/mailet/mock-smtp-server/pom.xml | 4 +
.../apache/james/mock/smtp/server/SMTPCommand.java | 18 +++
.../james/mock/smtp/server/SMTPCommandTest.java | 151 +++++++++++++++++++++
3 files changed, 173 insertions(+)
diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index d79081f..8db2a69 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>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPCommand.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPCommand.java
index 024b662..60a2a76 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPCommand.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/SMTPCommand.java
@@ -19,6 +19,11 @@
package org.apache.james.mock.smtp.server;
+import java.util.Arrays;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
enum SMTPCommand {
RCPT_TO("RCPT TO"),
EHLO("EHLO"),
@@ -29,9 +34,22 @@ enum SMTPCommand {
NOOP("NOOP"),
QUIT("QUIT");
+ @JsonCreator
+ public static SMTPCommand parse(String value) {
+ return Arrays.stream(SMTPCommand.values())
+ .filter(command -> command.commandName.equals(value))
+ .findFirst()
+ .orElseThrow(() -> new IllegalArgumentException("No command name associated with supplied value: " + value));
+ }
+
private final String commandName;
SMTPCommand(String commandName) {
this.commandName = commandName;
}
+
+ @JsonValue
+ public String getCommandName() {
+ return commandName;
+ }
}
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
new file mode 100644
index 0000000..be396c1
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/SMTPCommandTest.java
@@ -0,0 +1,151 @@
+/****************************************************************
+ * 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 org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+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);
+
+ assertThat(command).isEqualTo(SMTPCommand.RSET);
+ }
+
+ @Test
+ void jacksonShouldDeserializeRcptToCommand() throws Exception {
+ SMTPCommand command = OBJECT_MAPPER.readValue("\"RCPT TO\"", SMTPCommand.class);
+
+ assertThat(command).isEqualTo(SMTPCommand.RCPT_TO);
+ }
+
+ @Test
+ void jacksonShouldDeserializeMailFromCommand() throws Exception {
+ SMTPCommand command = OBJECT_MAPPER.readValue("\"MAIL FROM\"", SMTPCommand.class);
+
+ assertThat(command).isEqualTo(SMTPCommand.MAIL_FROM);
+ }
+
+ @Test
+ void jacksonShouldDeserializeNoopCommand() throws Exception {
+ SMTPCommand command = OBJECT_MAPPER.readValue("\"NOOP\"", SMTPCommand.class);
+
+ assertThat(command).isEqualTo(SMTPCommand.NOOP);
+ }
+
+ @Test
+ void jacksonShouldDeserializeEhloCommand() throws Exception {
+ SMTPCommand command = OBJECT_MAPPER.readValue("\"EHLO\"", SMTPCommand.class);
+
+ assertThat(command).isEqualTo(SMTPCommand.EHLO);
+ }
+
+ @Test
+ void jacksonShouldDeserializeVrfyCommand() throws Exception {
+ SMTPCommand command = OBJECT_MAPPER.readValue("\"VRFY\"", SMTPCommand.class);
+
+ assertThat(command).isEqualTo(SMTPCommand.VRFY);
+ }
+
+ @Test
+ void jacksonShouldDeserializeDataCommand() throws Exception {
+ SMTPCommand command = OBJECT_MAPPER.readValue("\"DATA\"", SMTPCommand.class);
+
+ assertThat(command).isEqualTo(SMTPCommand.DATA);
+ }
+
+ @Test
+ void jacksonShouldDeserializeQuitCommand() throws Exception {
+ SMTPCommand command = OBJECT_MAPPER.readValue("\"QUIT\"", SMTPCommand.class);
+
+ assertThat(command).isEqualTo(SMTPCommand.QUIT);
+ }
+
+ @Test
+ void jacksonShouldThrowWhenDeserializingInvalidValue() {
+ assertThatThrownBy(() -> OBJECT_MAPPER.readValue("\"invalid\"", SMTPCommand.class))
+ .isInstanceOf(IOException.class);
+ }
+
+ @Test
+ void jacksonShouldSerializeRsetCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.RSET);
+
+ assertThat(json).isEqualTo("\"RSET\"");
+ }
+
+ @Test
+ void jacksonShouldSerializeRcptToCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.RCPT_TO);
+
+ assertThat(json).isEqualTo("\"RCPT TO\"");
+ }
+
+ @Test
+ void jacksonShouldSerializeMailFromCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.MAIL_FROM);
+
+ assertThat(json).isEqualTo("\"MAIL FROM\"");
+ }
+
+ @Test
+ void jacksonShouldSerializeNoopCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.NOOP);
+
+ assertThat(json).isEqualTo("\"NOOP\"");
+ }
+
+ @Test
+ void jacksonShouldSerializeEhloCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.EHLO);
+
+ assertThat(json).isEqualTo("\"EHLO\"");
+ }
+
+ @Test
+ void jacksonShouldSerializeVrfyCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.VRFY);
+
+ assertThat(json).isEqualTo("\"VRFY\"");
+ }
+
+ @Test
+ void jacksonShouldSerializeDataCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.DATA);
+
+ assertThat(json).isEqualTo("\"DATA\"");
+ }
+
+ @Test
+ void jacksonShouldSerializeQuitCommand() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(SMTPCommand.QUIT);
+
+ assertThat(json).isEqualTo("\"QUIT\"");
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 14/17: JAMES-2855 Add missing
junit-platform-launcher dependency to poms
Posted by bt...@apache.org.
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 ede498570cb44ea6869f2e46561d32e4c664aaf2
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Aug 23 17:39:52 2019 +0700
JAMES-2855 Add missing junit-platform-launcher dependency to poms
---
examples/custom-listeners/pom.xml | 5 +++++
mailbox/caching/pom.xml | 5 +++++
mailbox/event/json/pom.xml | 5 +++++
mpt/impl/managesieve/core/pom.xml | 4 ++++
server/blob/blob-export-api/pom.xml | 5 +++++
server/container/guice/blob-export-guice/pom.xml | 5 +++++
.../container/guice/cassandra-rabbitmq-ldap-guice/pom.xml | 5 +++++
server/container/guice/configuration/pom.xml | 5 +++++
server/container/guice/guice-common/pom.xml | 5 +++++
server/container/guice/jpa-common-guice/pom.xml | 5 +++++
server/container/guice/mailbox/pom.xml | 5 +++++
server/container/guice/memory-guice/pom.xml | 5 +++++
server/container/lifecycle-api/pom.xml | 5 +++++
server/data/data-jmap-cassandra/pom.xml | 13 +++++++++----
server/data/data-jmap/pom.xml | 5 +++++
server/mailet/mock-smtp-server/pom.xml | 5 +++++
server/mailrepository/mailrepository-memory/pom.xml | 5 +++++
server/protocols/jmap/pom.xml | 5 +++++
server/protocols/webadmin/webadmin-cassandra-data/pom.xml | 5 +++++
server/protocols/webadmin/webadmin-mailqueue/pom.xml | 5 +++++
server/queue/queue-api/pom.xml | 5 +++++
server/queue/queue-file/pom.xml | 5 +++++
server/testing/pom.xml | 4 ++++
23 files changed, 117 insertions(+), 4 deletions(-)
diff --git a/examples/custom-listeners/pom.xml b/examples/custom-listeners/pom.xml
index 07be61d..fa74532 100644
--- a/examples/custom-listeners/pom.xml
+++ b/examples/custom-listeners/pom.xml
@@ -45,5 +45,10 @@
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/mailbox/caching/pom.xml b/mailbox/caching/pom.xml
index 589e2e6..3dd45e9 100644
--- a/mailbox/caching/pom.xml
+++ b/mailbox/caching/pom.xml
@@ -63,6 +63,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
diff --git a/mailbox/event/json/pom.xml b/mailbox/event/json/pom.xml
index 752c165..7b88bc4 100644
--- a/mailbox/event/json/pom.xml
+++ b/mailbox/event/json/pom.xml
@@ -78,6 +78,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.julienrf</groupId>
<artifactId>play-json-derived-codecs_${scala.base}</artifactId>
<version>6.0.0</version>
diff --git a/mpt/impl/managesieve/core/pom.xml b/mpt/impl/managesieve/core/pom.xml
index e72d5d8..fb2aba6 100644
--- a/mpt/impl/managesieve/core/pom.xml
+++ b/mpt/impl/managesieve/core/pom.xml
@@ -51,6 +51,10 @@
<artifactId>junit-jupiter-engine</artifactId>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</dependency>
diff --git a/server/blob/blob-export-api/pom.xml b/server/blob/blob-export-api/pom.xml
index 408d522..ed93e22 100644
--- a/server/blob/blob-export-api/pom.xml
+++ b/server/blob/blob-export-api/pom.xml
@@ -62,5 +62,10 @@
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/server/container/guice/blob-export-guice/pom.xml b/server/container/guice/blob-export-guice/pom.xml
index 79ac090..aa656dd 100644
--- a/server/container/guice/blob-export-guice/pom.xml
+++ b/server/container/guice/blob-export-guice/pom.xml
@@ -82,6 +82,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
diff --git a/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml b/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml
index 22f01e2..79ad4a8 100644
--- a/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml
+++ b/server/container/guice/cassandra-rabbitmq-ldap-guice/pom.xml
@@ -120,6 +120,11 @@
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/server/container/guice/configuration/pom.xml b/server/container/guice/configuration/pom.xml
index b369902..4ed76c4 100644
--- a/server/container/guice/configuration/pom.xml
+++ b/server/container/guice/configuration/pom.xml
@@ -64,5 +64,10 @@
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/server/container/guice/guice-common/pom.xml b/server/container/guice/guice-common/pom.xml
index 010480d..5c97cef 100644
--- a/server/container/guice/guice-common/pom.xml
+++ b/server/container/guice/guice-common/pom.xml
@@ -190,6 +190,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
diff --git a/server/container/guice/jpa-common-guice/pom.xml b/server/container/guice/jpa-common-guice/pom.xml
index ff210e0..ff188c1 100644
--- a/server/container/guice/jpa-common-guice/pom.xml
+++ b/server/container/guice/jpa-common-guice/pom.xml
@@ -61,5 +61,10 @@
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/server/container/guice/mailbox/pom.xml b/server/container/guice/mailbox/pom.xml
index 22d7be9..7bcbfa8 100644
--- a/server/container/guice/mailbox/pom.xml
+++ b/server/container/guice/mailbox/pom.xml
@@ -71,6 +71,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
diff --git a/server/container/guice/memory-guice/pom.xml b/server/container/guice/memory-guice/pom.xml
index d31bc45..ff231d6 100644
--- a/server/container/guice/memory-guice/pom.xml
+++ b/server/container/guice/memory-guice/pom.xml
@@ -200,6 +200,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
diff --git a/server/container/lifecycle-api/pom.xml b/server/container/lifecycle-api/pom.xml
index 6b17dda..ea661b0 100644
--- a/server/container/lifecycle-api/pom.xml
+++ b/server/container/lifecycle-api/pom.xml
@@ -56,6 +56,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
diff --git a/server/data/data-jmap-cassandra/pom.xml b/server/data/data-jmap-cassandra/pom.xml
index 4f6e371..ddb3819 100644
--- a/server/data/data-jmap-cassandra/pom.xml
+++ b/server/data/data-jmap-cassandra/pom.xml
@@ -93,13 +93,18 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/server/data/data-jmap/pom.xml b/server/data/data-jmap/pom.xml
index c9ee4ed..69af10e 100644
--- a/server/data/data-jmap/pom.xml
+++ b/server/data/data-jmap/pom.xml
@@ -94,6 +94,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index 2ea427f..afc5a9c 100644
--- a/server/mailet/mock-smtp-server/pom.xml
+++ b/server/mailet/mock-smtp-server/pom.xml
@@ -82,6 +82,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
diff --git a/server/mailrepository/mailrepository-memory/pom.xml b/server/mailrepository/mailrepository-memory/pom.xml
index 71b5a8d..76613ab 100644
--- a/server/mailrepository/mailrepository-memory/pom.xml
+++ b/server/mailrepository/mailrepository-memory/pom.xml
@@ -62,6 +62,11 @@
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/server/protocols/jmap/pom.xml b/server/protocols/jmap/pom.xml
index 673dcdd..6d9e4b5 100644
--- a/server/protocols/jmap/pom.xml
+++ b/server/protocols/jmap/pom.xml
@@ -289,6 +289,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
diff --git a/server/protocols/webadmin/webadmin-cassandra-data/pom.xml b/server/protocols/webadmin/webadmin-cassandra-data/pom.xml
index 0d14df0..377fe4f 100644
--- a/server/protocols/webadmin/webadmin-cassandra-data/pom.xml
+++ b/server/protocols/webadmin/webadmin-cassandra-data/pom.xml
@@ -88,6 +88,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
diff --git a/server/protocols/webadmin/webadmin-mailqueue/pom.xml b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
index 96ab047..3dfb491 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
@@ -111,6 +111,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
diff --git a/server/queue/queue-api/pom.xml b/server/queue/queue-api/pom.xml
index c579497..5157d46 100644
--- a/server/queue/queue-api/pom.xml
+++ b/server/queue/queue-api/pom.xml
@@ -92,6 +92,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
diff --git a/server/queue/queue-file/pom.xml b/server/queue/queue-file/pom.xml
index fb059eb..37fdf75 100644
--- a/server/queue/queue-file/pom.xml
+++ b/server/queue/queue-file/pom.xml
@@ -102,6 +102,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
diff --git a/server/testing/pom.xml b/server/testing/pom.xml
index 4d00f7d..234b9b6 100644
--- a/server/testing/pom.xml
+++ b/server/testing/pom.xml
@@ -75,6 +75,10 @@
<artifactId>junit-jupiter-engine</artifactId>
</dependency>
<dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</dependency>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 05/17: JAMES-2866 JSON serialization for Condition
Posted by bt...@apache.org.
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 5a192d585c9a3ee26bdff2dc4a7501dbc87a77b5
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Aug 21 15:04:20 2019 +0700
JAMES-2866 JSON serialization for Condition
---
server/mailet/mock-smtp-server/pom.xml | 5 +
.../apache/james/mock/smtp/server/Condition.java | 111 ++++++++++++++++-----
.../apache/james/mock/smtp/server/Operator.java | 60 ++++++++++-
.../james/mock/smtp/server/ConditionTest.java | 95 +++++++++++++++---
4 files changed, 232 insertions(+), 39 deletions(-)
diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index 8db2a69..bdcbea7 100644
--- a/server/mailet/mock-smtp-server/pom.xml
+++ b/server/mailet/mock-smtp-server/pom.xml
@@ -50,6 +50,11 @@
<artifactId>guava</artifactId>
</dependency>
<dependency>
+ <groupId>net.javacrumbs.json-unit</groupId>
+ <artifactId>json-unit-assertj</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>nl.jqno.equalsverifier</groupId>
<artifactId>equalsverifier</artifactId>
<scope>test</scope>
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Condition.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Condition.java
index 422eea7..523794b 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Condition.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Condition.java
@@ -20,43 +20,106 @@
package org.apache.james.mock.smtp.server;
import java.util.Objects;
+import java.util.Optional;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import com.google.common.base.Preconditions;
-class Condition {
+@JsonDeserialize(builder = Condition.Builder.class)
+interface Condition {
+ @JsonPOJOBuilder(withPrefix = "")
+ class Builder {
+ private Operator.OperatorName operator;
+ private Optional<String> matchingValue;
- static final Condition MATCH_ALL = new Condition(Operator.MATCH_ALL, "any");
+ public Builder() {
+ this.matchingValue = Optional.empty();
+ }
- private final Operator operator;
- private final String matchingValue;
+ public Builder operator(Operator.OperatorName operator) {
+ this.operator = operator;
+ return this;
+ }
- Condition(Operator operator, String matchingValue) {
- Preconditions.checkNotNull(operator);
- Preconditions.checkNotNull(matchingValue);
+ public Builder matchingValue(String matchingValue) {
+ this.matchingValue = Optional.of(matchingValue);
+ return this;
+ }
- this.operator = operator;
- this.matchingValue = matchingValue;
- }
+ public Condition build() {
+ Preconditions.checkState(operator != null, "You need to specify an operator");
- boolean matches(String line) {
- return operator.actual(line)
- .expected(matchingValue)
- .matches();
+ return operator.getConditionFactory().apply(matchingValue);
+ }
}
- @Override
- public final boolean equals(Object o) {
- if (o instanceof Condition) {
- Condition condition = (Condition) o;
+ class MatchAllCondition implements Condition {
+ public Operator.OperatorName getOperator() {
+ return Operator.OperatorName.MATCH_ALL;
+ }
- return Objects.equals(this.operator, condition.operator)
- && Objects.equals(this.matchingValue, condition.matchingValue);
+ @Override
+ public boolean matches(String line) {
+ return true;
+ }
+
+ @Override
+ public final boolean equals(Object o) {
+ return o instanceof MatchAllCondition;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(MatchAllCondition.class);
}
- return false;
}
- @Override
- public final int hashCode() {
- return Objects.hash(operator, matchingValue);
+ class OperatorCondition implements Condition {
+ private final Operator operator;
+ private final String matchingValue;
+
+ OperatorCondition(Operator operator, String matchingValue) {
+ Preconditions.checkNotNull(operator);
+ Preconditions.checkNotNull(matchingValue);
+
+ this.operator = operator;
+ this.matchingValue = matchingValue;
+ }
+
+ public Operator.OperatorName getOperator() {
+ return operator.getOperatorName();
+ }
+
+ public String getMatchingValue() {
+ return matchingValue;
+ }
+
+ @Override
+ public boolean matches(String line) {
+ return operator.actual(line)
+ .expected(matchingValue)
+ .matches();
+ }
+
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof OperatorCondition) {
+ OperatorCondition condition = (OperatorCondition) o;
+
+ return Objects.equals(this.operator, condition.operator)
+ && Objects.equals(this.matchingValue, condition.matchingValue);
+ }
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(operator, matchingValue);
+ }
}
+
+ Condition MATCH_ALL = new MatchAllCondition();
+
+ boolean matches(String line);
}
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Operator.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Operator.java
index 26947c0..d56e04c 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Operator.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/Operator.java
@@ -19,7 +19,52 @@
package org.apache.james.mock.smtp.server;
+import java.util.Arrays;
+import java.util.Optional;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
+
public interface Operator {
+ enum OperatorName {
+ CONTAINS("contains", maybeMatchingValue -> {
+ Preconditions.checkState(maybeMatchingValue.isPresent(), "You need to specify a matchingValue with the contains operator");
+
+ return new Condition.OperatorCondition(Operator.CONTAINS, maybeMatchingValue.get());
+ }),
+ MATCH_ALL("matchAll", maybeMatchingValue -> {
+ Preconditions.checkState(!maybeMatchingValue.isPresent(), "You should not specify a matchingValue with the matchAll operator");
+
+ return new Condition.MatchAllCondition();
+ });
+
+ private final String name;
+ private final Function<Optional<String>, Condition> conditionFactory;
+
+ @JsonCreator
+ public static OperatorName from(String name) {
+ return Arrays.stream(values())
+ .filter(value -> value.name.equals(name))
+ .findFirst()
+ .orElseThrow(() -> new IllegalArgumentException("Unsuported " + name + " operator"));
+ }
+
+ OperatorName(String name, Function<Optional<String>, Condition> conditionFactory) {
+ this.name = name;
+ this.conditionFactory = conditionFactory;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ public Function<Optional<String>, Condition> getConditionFactory() {
+ return conditionFactory;
+ }
+ }
@FunctionalInterface
interface Expected {
@@ -31,8 +76,19 @@ public interface Operator {
boolean matches();
}
- Operator CONTAINS = actual -> expected -> () -> actual.contains(expected);
- Operator MATCH_ALL = actual -> expected -> () -> true;
+ Operator CONTAINS = new Operator() {
+ @Override
+ public Expected actual(String actual) {
+ return expected -> () -> actual.contains(expected);
+ }
+
+ @Override
+ public OperatorName getOperatorName() {
+ return OperatorName.CONTAINS;
+ }
+ };
Expected actual(String actual);
+
+ OperatorName getOperatorName();
}
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 e5fe70a..eefbe1c 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
@@ -19,35 +19,54 @@
package org.apache.james.mock.smtp.server;
+import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
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)
+ .verify();
+ }
+
@Test
- void shouldMatchBeanContract() {
- EqualsVerifier.forClass(Condition.class)
+ void matchAllShouldMatchBeanContract() {
+ EqualsVerifier.forClass(Condition.MatchAllCondition.class)
.verify();
}
@Test
+ void differentConditionTypesShouldNotBeEqual() {
+ assertThat(Condition.MATCH_ALL)
+ .isNotEqualTo(new Condition.OperatorCondition(Operator.CONTAINS, "any"));
+ }
+
+ @Test
void constructorShouldThrowWhenNullOperator() {
- assertThatThrownBy(() -> new Condition(null, "matchingValue"))
+ assertThatThrownBy(() -> new Condition.OperatorCondition(null, "matchingValue"))
.isInstanceOf(NullPointerException.class);
}
@Test
void constructorShouldThrowWhenNullMatchingValue() {
- assertThatThrownBy(() -> new Condition(Operator.CONTAINS, null))
+ assertThatThrownBy(() -> new Condition.OperatorCondition(Operator.CONTAINS, null))
.isInstanceOf(NullPointerException.class);
}
@Test
void matchesShouldReturnTrueWhenOperatorMatches() {
- Condition condition = new Condition(Operator.CONTAINS, "match me");
+ Condition condition = new Condition.OperatorCondition(Operator.CONTAINS, "match me");
assertThat(condition.matches("this contains match me string"))
.isTrue();
@@ -55,7 +74,7 @@ class ConditionTest {
@Test
void matchesShouldReturnFalseWhenOperatorDoesNotMatch() {
- Condition condition = new Condition(Operator.CONTAINS, "match me");
+ Condition condition = new Condition.OperatorCondition(Operator.CONTAINS, "match me");
assertThat(condition.matches("this contains another string"))
.isFalse();
@@ -63,7 +82,7 @@ class ConditionTest {
@Test
void matchesShouldThrowWhenNullLine() {
- Condition condition = new Condition(Operator.CONTAINS, "match me");
+ Condition condition = new Condition.OperatorCondition(Operator.CONTAINS, "match me");
assertThatThrownBy(() -> condition.matches(null))
.isInstanceOf(NullPointerException.class);
@@ -71,22 +90,72 @@ class ConditionTest {
@Test
void matchAllShouldReturnTrue() {
- assertThat(Condition.MATCH_ALL
- .matches("this contains another string"))
+ assertThat(Condition.MATCH_ALL.matches("this contains another string"))
.isTrue();
}
@Test
void matchAllShouldReturnTrueEvenWhenLineIsNull() {
- assertThat(Condition.MATCH_ALL
- .matches(null))
+ assertThat(Condition.MATCH_ALL.matches(null))
.isTrue();
}
@Test
void matchAllShouldReturnTrueEvenWhenLineIsEmpty() {
- assertThat(Condition.MATCH_ALL
- .matches(""))
+ assertThat(Condition.MATCH_ALL.matches(""))
.isTrue();
}
+
+ @Nested
+ class JSONTest {
+ @Test
+ void jacksonShouldDeserializeCondition() throws Exception {
+ Condition condition = OBJECT_MAPPER.readValue(
+ "{\"operator\":\"contains\", \"matchingValue\":\"matchme\"}",
+ Condition.class);
+
+ assertThat(condition).isEqualTo(new Condition.OperatorCondition(Operator.CONTAINS, "matchme"));
+ }
+
+ @Test
+ void jacksonShouldDeserializeMatchAllCondition() throws Exception {
+ Condition condition = OBJECT_MAPPER.readValue(
+ "{\"operator\":\"matchAll\"}",
+ Condition.class);
+
+ assertThat(condition).isEqualTo(Condition.MATCH_ALL);
+ }
+
+ @Test
+ void jacksonShouldSerializeCondition() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(new Condition.OperatorCondition(Operator.CONTAINS, "matchme"));
+
+ assertThatJson(json).isEqualTo("{\"operator\":\"contains\", \"matchingValue\":\"matchme\"}");
+ }
+
+ @Test
+ void jacksonShouldSerializeMatchAllCondition() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(Condition.MATCH_ALL);
+
+ assertThatJson(json).isEqualTo("{\"operator\":\"matchAll\"}");
+ }
+
+ @Test
+ void jacksonShouldThrowWhenDeserializeMatchAllConditionWithMatchingValue(){
+ String json = "{\"operator\":\"matchAll\", \"matchingValue\":\"matchme\"}";
+
+ assertThatThrownBy(() -> OBJECT_MAPPER.readValue(json, Condition.class))
+ .isInstanceOf(InvalidDefinitionException.class)
+ .hasMessageContaining("You should not specify a matchingValue with the matchAll operator");
+ }
+
+ @Test
+ void jacksonShouldThrowWhenDeserializeContainsConditionWithoutMatchingValue(){
+ String json = "{\"operator\":\"contains\"}";
+
+ assertThatThrownBy(() -> OBJECT_MAPPER.readValue(json, Condition.class))
+ .isInstanceOf(InvalidDefinitionException.class)
+ .hasMessageContaining("You need to specify a matchingValue with the contains operator");
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 01/17: JAMES-2854 Upgrade to OpenJDK 8u222 JRE base
image
Posted by bt...@apache.org.
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 7778b799bef49c24203a103ec9bc21f4683180df
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Aug 20 14:11:45 2019 +0700
JAMES-2854 Upgrade to OpenJDK 8u222 JRE base image
---
dockerfiles/run/guice/cassandra-ldap/Dockerfile | 2 +-
dockerfiles/run/guice/cassandra-rabbitmq-ldap/Dockerfile | 2 +-
dockerfiles/run/guice/cassandra-rabbitmq/Dockerfile | 2 +-
dockerfiles/run/guice/cassandra/Dockerfile | 2 +-
dockerfiles/run/guice/jpa-smtp/Dockerfile | 2 +-
dockerfiles/run/guice/jpa/Dockerfile | 2 +-
dockerfiles/run/guice/memory/Dockerfile | 2 +-
dockerfiles/run/spring/Dockerfile | 2 +-
8 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/dockerfiles/run/guice/cassandra-ldap/Dockerfile b/dockerfiles/run/guice/cassandra-ldap/Dockerfile
index dd5db36..499f4fd 100644
--- a/dockerfiles/run/guice/cassandra-ldap/Dockerfile
+++ b/dockerfiles/run/guice/cassandra-ldap/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/Dockerfile b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/Dockerfile
index 24f06c4..64e477a 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/Dockerfile
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/Dockerfile b/dockerfiles/run/guice/cassandra-rabbitmq/Dockerfile
index 922e0e3..79f1a10 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/Dockerfile
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
diff --git a/dockerfiles/run/guice/cassandra/Dockerfile b/dockerfiles/run/guice/cassandra/Dockerfile
index 43f3c69..c4fddf8 100644
--- a/dockerfiles/run/guice/cassandra/Dockerfile
+++ b/dockerfiles/run/guice/cassandra/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
diff --git a/dockerfiles/run/guice/jpa-smtp/Dockerfile b/dockerfiles/run/guice/jpa-smtp/Dockerfile
index 2eb86ff..f0ba5d3 100644
--- a/dockerfiles/run/guice/jpa-smtp/Dockerfile
+++ b/dockerfiles/run/guice/jpa-smtp/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
diff --git a/dockerfiles/run/guice/jpa/Dockerfile b/dockerfiles/run/guice/jpa/Dockerfile
index 07e386f..e83fbf7 100644
--- a/dockerfiles/run/guice/jpa/Dockerfile
+++ b/dockerfiles/run/guice/jpa/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
diff --git a/dockerfiles/run/guice/memory/Dockerfile b/dockerfiles/run/guice/memory/Dockerfile
index 93e3bd1..f0ba1e2 100644
--- a/dockerfiles/run/guice/memory/Dockerfile
+++ b/dockerfiles/run/guice/memory/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
diff --git a/dockerfiles/run/spring/Dockerfile b/dockerfiles/run/spring/Dockerfile
index ff94ea4..a8fd727 100644
--- a/dockerfiles/run/spring/Dockerfile
+++ b/dockerfiles/run/spring/Dockerfile
@@ -2,7 +2,7 @@
#
# VERSION 1.0
-FROM openjdk:8u181-jre
+FROM openjdk:8u222-jre
# Ports that are used
#
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 11/17: JAMES-2866 Avoid relying on Optional now
that we have the matchAll condition
Posted by bt...@apache.org.
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 b2f0789afac251cc65f8e01fcda4fbf912edd9b6
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Aug 27 10:16:52 2019 +0700
JAMES-2866 Avoid relying on Optional now that we have the matchAll condition
---
.../james/mock/smtp/server/MockSMTPBehavior.java | 21 +++++++++++++++------
.../org/apache/james/mock/smtp/server/Fixture.java | 7 +++----
.../mock/smtp/server/MockSMTPBehaviorTest.java | 8 +++-----
3 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
index 2d8596a..f49f92d 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
@@ -72,12 +72,11 @@ public class MockSMTPBehavior {
@JsonPOJOBuilder(withPrefix = "")
public static class Builder {
private SMTPCommand smtpCommand;
- private Optional<Condition> condition;
+ private Condition condition;
private Response response;
private Optional<NumberOfAnswersPolicy> numberOfAnswers;
public Builder() {
- condition = Optional.empty();
numberOfAnswers = Optional.empty();
}
@@ -92,7 +91,7 @@ public class MockSMTPBehavior {
}
public Builder condition(Condition condition) {
- this.condition = Optional.of(condition);
+ this.condition = condition;
return this;
}
@@ -114,11 +113,11 @@ public class MockSMTPBehavior {
}
private final SMTPCommand smtpCommand;
- private final Optional<Condition> condition;
+ private final Condition condition;
private final Response response;
private final NumberOfAnswersPolicy numberOfAnswers;
- public MockSMTPBehavior(SMTPCommand smtpCommand, Optional<Condition> condition, Response response, NumberOfAnswersPolicy numberOfAnswers) {
+ public MockSMTPBehavior(SMTPCommand smtpCommand, Condition condition, Response response, NumberOfAnswersPolicy numberOfAnswers) {
Preconditions.checkNotNull(smtpCommand);
Preconditions.checkNotNull(condition);
Preconditions.checkNotNull(response);
@@ -134,7 +133,7 @@ public class MockSMTPBehavior {
return smtpCommand;
}
- public Optional<Condition> getCondition() {
+ public Condition getCondition() {
return condition;
}
@@ -163,4 +162,14 @@ public class MockSMTPBehavior {
public final int hashCode() {
return Objects.hash(smtpCommand, condition, response, numberOfAnswers);
}
+
+ @Override
+ public String toString() {
+ return "MockSMTPBehavior{" +
+ "smtpCommand=" + smtpCommand +
+ ", condition=" + condition +
+ ", response=" + response +
+ ", numberOfAnswers=" + numberOfAnswers +
+ '}';
+ }
}
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
index 3178766..fe1ff47 100644
--- 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
@@ -19,8 +19,6 @@
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;
@@ -34,13 +32,14 @@ public interface Fixture {
Response RESPONSE = Response.serverAccept(Response.SMTPStatusCode.of(250), "message");
String JSON_BEHAVIOR_COMPULSORY_FIELDS = "{" +
+ " \"condition\": {\"operator\":\"matchAll\"}," +
" \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
" \"command\": \"EHLO\"" +
"}";
MockSMTPBehavior BEHAVIOR_COMPULSORY_FIELDS = new MockSMTPBehavior(
SMTPCommand.EHLO,
- Optional.empty(),
+ Condition.MATCH_ALL,
Response.serverAccept(Response.SMTPStatusCode.ACTION_COMPLETE_250, "OK"),
MockSMTPBehavior.NumberOfAnswersPolicy.anytime());
@@ -53,7 +52,7 @@ public interface Fixture {
MockSMTPBehavior BEHAVIOR_ALL_FIELDS = new MockSMTPBehavior(
SMTPCommand.EHLO,
- Optional.of(new Condition.OperatorCondition(Operator.CONTAINS, "matchme")),
+ new Condition.OperatorCondition(Operator.CONTAINS, "matchme"),
Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"),
MockSMTPBehavior.NumberOfAnswersPolicy.times(7));
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 7a3f7cb..7bcc95e 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
@@ -29,8 +29,6 @@ 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.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@@ -80,7 +78,7 @@ class MockSMTPBehaviorTest {
@Test
void constructorShouldThrowWhenCommandIsNull() {
- assertThatThrownBy(() -> new MockSMTPBehavior(null, Optional.empty(), RESPONSE, MockSMTPBehavior.NumberOfAnswersPolicy.anytime()))
+ assertThatThrownBy(() -> new MockSMTPBehavior(null, Condition.MATCH_ALL, RESPONSE, MockSMTPBehavior.NumberOfAnswersPolicy.anytime()))
.isInstanceOf(NullPointerException.class);
}
@@ -92,13 +90,13 @@ class MockSMTPBehaviorTest {
@Test
void constructorShouldThrowWhenResponseIsNull() {
- assertThatThrownBy(() -> new MockSMTPBehavior(SMTPCommand.NOOP, Optional.empty(), null, MockSMTPBehavior.NumberOfAnswersPolicy.anytime()))
+ assertThatThrownBy(() -> new MockSMTPBehavior(SMTPCommand.NOOP, Condition.MATCH_ALL, null, MockSMTPBehavior.NumberOfAnswersPolicy.anytime()))
.isInstanceOf(NullPointerException.class);
}
@Test
void constructorShouldThrowWhenNumberOfAnswersIsNull() {
- assertThatThrownBy(() -> new MockSMTPBehavior(SMTPCommand.NOOP, Optional.empty(), RESPONSE, null))
+ assertThatThrownBy(() -> new MockSMTPBehavior(SMTPCommand.NOOP, Condition.MATCH_ALL, RESPONSE, null))
.isInstanceOf(NullPointerException.class);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 02/17: JAMES-2855 Upgrade ruby to 2.6.3 in Homepage
Dockerfile
Posted by bt...@apache.org.
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 7478399430785960a9588a40dde9a73cd98ab81a
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Aug 20 14:49:20 2019 +0700
JAMES-2855 Upgrade ruby to 2.6.3 in Homepage Dockerfile
---
dockerfiles/site/homepage/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dockerfiles/site/homepage/Dockerfile b/dockerfiles/site/homepage/Dockerfile
index b5741d6..c5997ab 100644
--- a/dockerfiles/site/homepage/Dockerfile
+++ b/dockerfiles/site/homepage/Dockerfile
@@ -1,4 +1,4 @@
-FROM ruby:2.3
+FROM ruby:2.6.3
RUN apt-get update \
&& apt-get install -y \
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 07/17: JAMES-2866 JSON serialization for
MockSMTPBehavior
Posted by bt...@apache.org.
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 ff6e5e8e3b72ad9a17f690fbbc738784705e33a4
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Aug 21 15:30:12 2019 +0700
JAMES-2866 JSON serialization for MockSMTPBehavior
---
server/mailet/mock-smtp-server/pom.xml | 4 ++
.../james/mock/smtp/server/MockSMTPBehavior.java | 55 ++++++++++++++++-
.../mock/smtp/server/MockSMTPBehaviorTest.java | 68 ++++++++++++++++++++++
3 files changed, 125 insertions(+), 2 deletions(-)
diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index bdcbea7..ce806b9 100644
--- a/server/mailet/mock-smtp-server/pom.xml
+++ b/server/mailet/mock-smtp-server/pom.xml
@@ -46,6 +46,10 @@
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jdk8</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
index 371b2ea..2d8596a 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSMTPBehavior.java
@@ -22,8 +22,13 @@ package org.apache.james.mock.smtp.server;
import java.util.Objects;
import java.util.Optional;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import com.google.common.base.Preconditions;
+@JsonDeserialize(builder = MockSMTPBehavior.Builder.class)
public class MockSMTPBehavior {
public static final class NumberOfAnswersPolicy {
@@ -31,6 +36,7 @@ public class MockSMTPBehavior {
return new NumberOfAnswersPolicy(Optional.empty());
}
+ @JsonCreator
public static NumberOfAnswersPolicy times(int times) {
Preconditions.checkArgument(times > 0, "times should be positive");
return new NumberOfAnswersPolicy(Optional.of(times));
@@ -42,6 +48,7 @@ public class MockSMTPBehavior {
this.numberOfAnswers = numberOfAnswers;
}
+ @JsonValue
public Optional<Integer> getNumberOfAnswers() {
return numberOfAnswers;
}
@@ -62,6 +69,50 @@ public class MockSMTPBehavior {
}
}
+ @JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ private SMTPCommand smtpCommand;
+ private Optional<Condition> condition;
+ private Response response;
+ private Optional<NumberOfAnswersPolicy> numberOfAnswers;
+
+ public Builder() {
+ condition = Optional.empty();
+ numberOfAnswers = Optional.empty();
+ }
+
+ public Builder command(SMTPCommand command) {
+ this.smtpCommand = command;
+ return this;
+ }
+
+ public Builder response(Response response) {
+ this.response = response;
+ return this;
+ }
+
+ public Builder condition(Condition condition) {
+ this.condition = Optional.of(condition);
+ return this;
+ }
+
+ public Builder numberOfAnswer(Optional<NumberOfAnswersPolicy> numberOfAnswers) {
+ this.numberOfAnswers = numberOfAnswers;
+ return this;
+ }
+
+ public MockSMTPBehavior build() {
+ Preconditions.checkState(smtpCommand != null, "You need to specify an smtpCommand");
+ Preconditions.checkState(response != null, "You need to specify a response");
+
+ return new MockSMTPBehavior(
+ smtpCommand,
+ condition,
+ response,
+ numberOfAnswers.orElse(NumberOfAnswersPolicy.anytime()));
+ }
+ }
+
private final SMTPCommand smtpCommand;
private final Optional<Condition> condition;
private final Response response;
@@ -79,7 +130,7 @@ public class MockSMTPBehavior {
this.numberOfAnswers = numberOfAnswers;
}
- public SMTPCommand getSmtpCommand() {
+ public SMTPCommand getCommand() {
return smtpCommand;
}
@@ -91,7 +142,7 @@ public class MockSMTPBehavior {
return response;
}
- public NumberOfAnswersPolicy getNumberOfAnswers() {
+ public NumberOfAnswersPolicy getNumberOfAnswer() {
return numberOfAnswers;
}
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 57f16cd..606c4bc 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
@@ -19,6 +19,7 @@
package org.apache.james.mock.smtp.server;
+import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -28,10 +29,40 @@ 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());
+
+ private static final String JSON_COMPULSORY_FIELDS = "{" +
+ " \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
+ " \"command\": \"EHLO\"" +
+ "}";
+
+ private static final MockSMTPBehavior POJO_COMPULSORY_FIELDS = new MockSMTPBehavior(
+ SMTPCommand.EHLO,
+ Optional.empty(),
+ Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"),
+ MockSMTPBehavior.NumberOfAnswersPolicy.anytime());
+
+ private static final String JSON_ALL_FIELDS = "{" +
+ " \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
+ " \"condition\": {\"operator\":\"contains\", \"matchingValue\":\"matchme\"}," +
+ " \"command\": \"EHLO\"," +
+ " \"numberOfAnswer\": 7" +
+ "}";
+
+ private 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 {
@@ -95,4 +126,41 @@ class MockSMTPBehaviorTest {
assertThatThrownBy(() -> new MockSMTPBehavior(SMTPCommand.NOOP, Optional.empty(), RESPONSE, null))
.isInstanceOf(NullPointerException.class);
}
+
+ @Nested
+ class JSONTest {
+ @Test
+ void jacksonShouldDeserializeMockSMTPBehaviorWithAllField() throws Exception {
+ MockSMTPBehavior behavior = OBJECT_MAPPER.readValue(JSON_ALL_FIELDS, MockSMTPBehavior.class);
+
+ assertThat(behavior)
+ .isEqualTo(POJO_ALL_FIELDS);
+ }
+
+ @Test
+ void jacksonShouldSerializeMockSMTPBehaviorWithAllField() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(POJO_ALL_FIELDS);
+
+ assertThatJson(json)
+ .withOptions(new Options(Option.TREATING_NULL_AS_ABSENT))
+ .isEqualTo(JSON_ALL_FIELDS);
+ }
+
+ @Test
+ void jacksonShouldDeserializeMockSMTPBehaviorWithCompulsoryField() throws Exception {
+ MockSMTPBehavior behavior = OBJECT_MAPPER.readValue(JSON_COMPULSORY_FIELDS, MockSMTPBehavior.class);
+
+ assertThat(behavior)
+ .isEqualTo(POJO_COMPULSORY_FIELDS);
+ }
+
+ @Test
+ void jacksonShouldSerializeMockSMTPBehaviorWithCompulsoryField() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(POJO_COMPULSORY_FIELDS);
+
+ assertThatJson(json)
+ .withOptions(new Options(Option.TREATING_NULL_AS_ABSENT))
+ .isEqualTo(JSON_COMPULSORY_FIELDS);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 08/17: JAMES-2866 MockSMTPBehaviors POJO
Posted by bt...@apache.org.
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 0f02246908797e6fa70563fdbca361f163196c1a
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Aug 21 15:55:04 2019 +0700
JAMES-2866 MockSMTPBehaviors POJO
Directly correnspond to HTTP configuration output
---
server/mailet/mock-smtp-server/pom.xml | 4 ++
.../james/mock/smtp/server/MockSmtpBehaviors.java | 56 +++++++++++++++++
.../mock/smtp/server/MockSMTPBehaviorTest.java | 8 +--
.../mock/smtp/server/MockSmtpBehaviorsTest.java | 73 ++++++++++++++++++++++
4 files changed, 137 insertions(+), 4 deletions(-)
diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index ce806b9..f7ea8c8 100644
--- a/server/mailet/mock-smtp-server/pom.xml
+++ b/server/mailet/mock-smtp-server/pom.xml
@@ -47,6 +47,10 @@
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-guava</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java
new file mode 100644
index 0000000..7ebe28a
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockSmtpBehaviors.java
@@ -0,0 +1,56 @@
+/****************************************************************
+ * 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.List;
+import java.util.Objects;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.google.common.collect.ImmutableList;
+
+public class MockSmtpBehaviors {
+ private final List<MockSMTPBehavior> behaviorList;
+
+ @JsonCreator
+ public MockSmtpBehaviors(List<MockSMTPBehavior> behaviorList) {
+ this.behaviorList = ImmutableList.copyOf(behaviorList);
+ }
+
+ @JsonValue
+ public List<MockSMTPBehavior> getBehaviorList() {
+ return behaviorList;
+ }
+
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof MockSmtpBehaviors) {
+ MockSmtpBehaviors that = (MockSmtpBehaviors) o;
+
+ return Objects.equals(this.behaviorList, that.behaviorList);
+ }
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(behaviorList);
+ }
+}
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 606c4bc..91f760f 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
@@ -40,25 +40,25 @@ 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());
- private static final String JSON_COMPULSORY_FIELDS = "{" +
+ static final String JSON_COMPULSORY_FIELDS = "{" +
" \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
" \"command\": \"EHLO\"" +
"}";
- private static final MockSMTPBehavior POJO_COMPULSORY_FIELDS = new MockSMTPBehavior(
+ static final MockSMTPBehavior POJO_COMPULSORY_FIELDS = new MockSMTPBehavior(
SMTPCommand.EHLO,
Optional.empty(),
Response.serverAccept(Response.SMTPStatusCode.of(250), "OK"),
MockSMTPBehavior.NumberOfAnswersPolicy.anytime());
- private static final String JSON_ALL_FIELDS = "{" +
+ static final String JSON_ALL_FIELDS = "{" +
" \"response\": {\"code\":250, \"message\":\"OK\", \"rejected\":false}," +
" \"condition\": {\"operator\":\"contains\", \"matchingValue\":\"matchme\"}," +
" \"command\": \"EHLO\"," +
" \"numberOfAnswer\": 7" +
"}";
- private static final MockSMTPBehavior POJO_ALL_FIELDS = new MockSMTPBehavior(
+ 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"),
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
new file mode 100644
index 0000000..83ffaaf
--- /dev/null
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/MockSmtpBehaviorsTest.java
@@ -0,0 +1,73 @@
+/****************************************************************
+ * 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 net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+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 + "]";
+
+ private static final MockSmtpBehaviors POJO = new MockSmtpBehaviors(ImmutableList.of(
+ MockSMTPBehaviorTest.POJO_ALL_FIELDS,
+ MockSMTPBehaviorTest.POJO_COMPULSORY_FIELDS));
+
+ @Test
+ void shouldMatchBeanContract() {
+ EqualsVerifier.forClass(MockSmtpBehaviors.class)
+ .verify();
+ }
+
+ @Test
+ void jacksonShouldDeserializeBehaviors() throws Exception {
+ MockSmtpBehaviors behaviors = OBJECT_MAPPER.readValue("[" + MockSMTPBehaviorTest.JSON_ALL_FIELDS + ", "
+ + MockSMTPBehaviorTest.JSON_COMPULSORY_FIELDS + "]", MockSmtpBehaviors.class);
+
+ assertThat(behaviors)
+ .isEqualTo(new MockSmtpBehaviors(ImmutableList.of(
+ MockSMTPBehaviorTest.POJO_ALL_FIELDS,
+ MockSMTPBehaviorTest.POJO_COMPULSORY_FIELDS)));
+ }
+
+ @Test
+ void jacksonShouldSerializeBehaviors() throws Exception {
+ String json = OBJECT_MAPPER.writeValueAsString(POJO);
+
+ assertThatJson(json)
+ .withOptions(new Options(Option.TREATING_NULL_AS_ABSENT, Option.IGNORING_ARRAY_ORDER))
+ .isEqualTo(JSON);
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org