JAMES-2151 SieveRepository strong typing
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/37ba4e34 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/37ba4e34 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/37ba4e34 Branch: refs/heads/master Commit: 37ba4e342c20b18c44913d563f055f0f711c6709 Parents: 2e8f3f7 Author: benwa <[email protected]> Authored: Fri Jun 22 13:46:21 2018 +0700 Committer: benwa <[email protected]> Committed: Tue Jun 26 16:08:59 2018 +0700 ---------------------------------------------------------------------- .../sieverepository/api/ScriptContent.java | 3 +- .../james/sieve/cassandra/model/Script.java | 3 +- .../james/sieve/cassandra/model/SieveQuota.java | 7 +- .../james/sieve/cassandra/model/ScriptTest.java | 5 +- .../lib/AbstractSieveRepositoryTest.java | 4 +- .../managesieve/ManageSieveMailetTestCase.java | 86 ++++++++++---------- 6 files changed, 56 insertions(+), 52 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/37ba4e34/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/ScriptContent.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/ScriptContent.java b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/ScriptContent.java index 6f8cbd6..a5351a7 100644 --- a/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/ScriptContent.java +++ b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/ScriptContent.java @@ -19,6 +19,7 @@ package org.apache.james.sieverepository.api; +import java.nio.charset.StandardCharsets; import java.util.Objects; import com.google.common.base.MoreObjects; @@ -35,7 +36,7 @@ public class ScriptContent { } public int length() { - return value.length(); + return value.getBytes(StandardCharsets.UTF_8).length; } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/37ba4e34/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/Script.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/Script.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/Script.java index de68ade..89952a3 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/Script.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/Script.java @@ -2,7 +2,6 @@ package org.apache.james.sieve.cassandra.model; -import java.nio.charset.StandardCharsets; import java.util.Objects; import java.util.Optional; @@ -68,7 +67,7 @@ public class Script { return new Script(name, content, isActive.get(), - size.orElse((long) content.getValue().getBytes(StandardCharsets.UTF_8).length)); + size.orElse((long) content.length())); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/37ba4e34/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/SieveQuota.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/SieveQuota.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/SieveQuota.java index b8a0154..25cdff6 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/SieveQuota.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/model/SieveQuota.java @@ -46,7 +46,10 @@ public class SieveQuota { } public boolean isExceededUponModification(long sizeDifference) { - return limit.map(limitContent -> !limitContent.isGreaterThan(QuotaSize.size(currentUsage + sizeDifference))) - .orElse(false); + return limit.map(limitContent -> + QuotaSize.size(currentUsage) + .add(sizeDifference) + .isGreaterThan(limitContent)) + .orElse(false); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/37ba4e34/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/model/ScriptTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/model/ScriptTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/model/ScriptTest.java index ca757d9..718c824 100644 --- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/model/ScriptTest.java +++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/model/ScriptTest.java @@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.nio.charset.StandardCharsets; +import org.apache.james.sieverepository.api.ScriptContent; import org.apache.james.sieverepository.api.ScriptName; import org.apache.james.sieverepository.api.ScriptSummary; import org.junit.Rule; @@ -73,7 +74,7 @@ public class ScriptTest { @Test public void buildShouldPreserveName() { - String name = "name"; + ScriptName name = new ScriptName("name"); assertThat( Script.builder() .name(name) @@ -86,7 +87,7 @@ public class ScriptTest { @Test public void buildShouldPreserveContent() { - String content = "content"; + ScriptContent content = new ScriptContent("content"); assertThat( Script.builder() .name("name") http://git-wip-us.apache.org/repos/asf/james-project/blob/37ba4e34/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java index 4352209..a057d3a 100644 --- a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java @@ -343,8 +343,8 @@ public abstract class AbstractSieveRepositoryTest { assertThat(sieveRepository.getQuota(USER)).isEqualTo(DEFAULT_QUOTA); } - protected String getScriptContent(InputStream inputStream) throws IOException { - return IOUtils.toString(inputStream, StandardCharsets.UTF_8); + protected ScriptContent getScriptContent(InputStream inputStream) throws IOException { + return new ScriptContent(IOUtils.toString(inputStream, StandardCharsets.UTF_8)); } protected abstract SieveRepository createSieveRepository() throws Exception; http://git-wip-us.apache.org/repos/asf/james-project/blob/37ba4e34/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java index fd1d103..e9967b5 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java @@ -127,52 +127,52 @@ public class ManageSieveMailetTestCase { @Test public final void testPutScriptinvalidLiteral() throws Exception { - MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME + "\"", "NO \"Missing argument: script size\""); + ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "NO \"Missing argument: script size\""); } @Test public final void testPutScript() throws Exception { when(sieveParser.parse(anyString())).thenReturn(Lists.newArrayList("warning1", "warning2")); - MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME + "\" {100+}"); + MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" {100+}"); Mail mail = createAuthentificatedMail(message); mailet.service(mail); - ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME + "\" {100+}", "OK (WARNINGS) \"warning1\" \"warning2\""); + ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" {100+}", "OK (WARNINGS) \"warning1\" \"warning2\""); } @Test public final void testPutScriptInvalidLiteral() throws Exception { - MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME + "\" extra"); + MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" extra"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME + "\" extra", "NO \"extra is an invalid size literal : it should be at least 4 char looking like {_+}\""); + ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" extra", "NO \"extra is an invalid size literal : it should be at least 4 char looking like {_+}\""); } @Test public final void testPutScriptExtraArgs() throws Exception { - MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME + "\" {10+} extra"); + MimeMessage message = prepareMessageWithAttachment(SCRIPT_CONTENT, "PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" {10+} extra"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME + "\" {10+} extra", "NO \"Extra arguments not supported\""); + ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" {10+} extra", "NO \"Extra arguments not supported\""); } @Test public final void testPutScriptSyntaxError() throws Exception { doThrow(new SyntaxException("error message")).when(sieveParser).parse(SYNTAX_EXCEPTION); - MimeMessage message = prepareMessageWithAttachment(SYNTAX_EXCEPTION, "PUTSCRIPT \"" + SCRIPT_NAME + "\" {10+}"); + MimeMessage message = prepareMessageWithAttachment(SYNTAX_EXCEPTION, "PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" {10+}"); Mail mail = createAuthentificatedMail(message); mailet.service(mail); - ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME + "\" {10+}", "NO \"Syntax Error: error message\""); + ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\" {10+}", "NO \"Syntax Error: error message\""); } @Test public final void testPutScriptNoScript() throws Exception { - MimeMessage message = prepareMimeMessage("PUTSCRIPT \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME + "\"", "NO \"Missing argument: script size\""); + ensureResponse("Re: PUTSCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "NO \"Missing argument: script size\""); } @Test @@ -185,38 +185,38 @@ public class ManageSieveMailetTestCase { @Test public final void testGetScriptNonAuthorized() throws Exception { - MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME + "\"", "NO"); + ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "NO"); } @Test public final void testGetScript() throws Exception { - when(sieveRepository.getScript(USER, SCRIPT_NAME)).thenReturn(new ByteArrayInputStream(SCRIPT_CONTENT.getValue().getBytes())); - MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME + "\""); + when(sieveRepository.getScript(USER, SCRIPT_NAME)).thenReturn(new ByteArrayInputStream(SCRIPT_CONTENT.getValue().getBytes(StandardCharsets.UTF_8))); + MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mail.setAttribute(Mail.SMTP_AUTH_USER_ATTRIBUTE_NAME, USER.asString()); mailet.service(mail); - ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME + "\"", "{13}\r\n" + SCRIPT_CONTENT + "\r\nOK"); + ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "{13}\r\n" + SCRIPT_CONTENT.getValue() + "\r\nOK"); } @Test public final void testGetScriptExtraArgs() throws Exception { - MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME + "\" extra"); + MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\" extra"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME + "\" extra", "NO \"Too many arguments: extra\""); + ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\" extra", "NO \"Too many arguments: extra\""); } @Test public final void testGetScriptNoScript() throws Exception { doThrow(new ScriptNotFoundException()).when(sieveRepository).getScript(USER, SCRIPT_NAME); - MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mail.setAttribute(Mail.SMTP_AUTH_USER_ATTRIBUTE_NAME, USER.asString()); mailet.service(mail); - ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME + "\"", "NO (NONEXISTENT) \"There is no script by that name\""); + ensureResponse("Re: GETSCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "NO (NONEXISTENT) \"There is no script by that name\""); } @Test @@ -283,26 +283,26 @@ public class ManageSieveMailetTestCase { @Test public final void testDeleteScriptUnauthenticated() throws Exception { - MimeMessage message = prepareMimeMessage("DELETESCRIPT \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("DELETESCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: DELETESCRIPT \"" + SCRIPT_NAME + "\"", "NO"); + ensureResponse("Re: DELETESCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "NO"); } @Test public final void testDeleteScript() throws Exception { - MimeMessage message = prepareMimeMessage("DELETESCRIPT \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("DELETESCRIPT \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createAuthentificatedMail(message); mailet.service(mail); - ensureResponse("Re: DELETESCRIPT \"" + SCRIPT_NAME + "\"", "OK"); + ensureResponse("Re: DELETESCRIPT \"" + SCRIPT_NAME.getValue() + "\"", "OK"); } @Test public final void testDeleteScriptExtraArgs() throws Exception { - MimeMessage message = prepareMimeMessage("DELETESCRIPT \"" + SCRIPT_NAME + "\" extra"); + MimeMessage message = prepareMimeMessage("DELETESCRIPT \"" + SCRIPT_NAME.getValue() + "\" extra"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: DELETESCRIPT \"" + SCRIPT_NAME + "\" extra", "NO \"Too many arguments: extra\""); + ensureResponse("Re: DELETESCRIPT \"" + SCRIPT_NAME.getValue() + "\" extra", "NO \"Too many arguments: extra\""); } @Test @@ -315,26 +315,26 @@ public class ManageSieveMailetTestCase { @Test public final void testHaveSpaceUnauthenticated() throws Exception { - MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME + "\" 1"); + MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" 1"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME + "\" 1", "NO"); + ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" 1", "NO"); } @Test public final void testHaveSpace() throws Exception { - MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME + "\" 1"); + MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" 1"); Mail mail = createAuthentificatedMail(message); mailet.service(mail); - ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME + "\" 1", "OK"); + ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" 1", "OK"); } @Test public final void testHaveSpaceExtraArgs() throws Exception { - MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME + "\" 1 extra"); + MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" 1 extra"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME + "\" 1 extra", "NO \"Too many arguments: extra\""); + ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" 1 extra", "NO \"Too many arguments: extra\""); } @Test @@ -347,18 +347,18 @@ public class ManageSieveMailetTestCase { @Test public final void testHaveSpaceNoScriptSize() throws Exception { - MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME + "\"", "NO \"Missing argument: script size\""); + ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME.getValue() + "\"", "NO \"Missing argument: script size\""); } @Test public final void testHaveSpaceInvalidScriptSize() throws Exception { - MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME + "\" X"); + MimeMessage message = prepareMimeMessage("HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" X"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME + "\" X", "NO \"Invalid argument: script size\""); + ensureResponse("Re: HAVESPACE \"" + SCRIPT_NAME.getValue() + "\" X", "NO \"Invalid argument: script size\""); } @Test @@ -433,26 +433,26 @@ public class ManageSieveMailetTestCase { @Test public final void testSetActiveUnauthorised() throws Exception { - MimeMessage message = prepareMimeMessage("SETACTIVE \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("SETACTIVE \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: SETACTIVE \"" + SCRIPT_NAME + "\"", "NO"); + ensureResponse("Re: SETACTIVE \"" + SCRIPT_NAME.getValue() + "\"", "NO"); } @Test public final void testSetActive() throws Exception { - MimeMessage message = prepareMimeMessage("SETACTIVE \"" + SCRIPT_NAME + "\""); + MimeMessage message = prepareMimeMessage("SETACTIVE \"" + SCRIPT_NAME.getValue() + "\""); Mail mail = createAuthentificatedMail(message); mailet.service(mail); - ensureResponse("Re: SETACTIVE \"" + SCRIPT_NAME + "\"", "OK"); + ensureResponse("Re: SETACTIVE \"" + SCRIPT_NAME.getValue() + "\"", "OK"); } @Test public final void testSetActiveExtraArgs() throws Exception { - MimeMessage message = prepareMimeMessage("SETACTIVE \"" + SCRIPT_NAME + "\" extra"); + MimeMessage message = prepareMimeMessage("SETACTIVE \"" + SCRIPT_NAME.getValue() + "\" extra"); Mail mail = createUnauthenticatedMail(message); mailet.service(mail); - ensureResponse("Re: SETACTIVE \"" + SCRIPT_NAME + "\" extra", "NO \"Too many arguments: extra\""); + ensureResponse("Re: SETACTIVE \"" + SCRIPT_NAME.getValue() + "\" extra", "NO \"Too many arguments: extra\""); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
