Repository: james-project Updated Branches: refs/heads/master 42c684678 -> e6ef1744d
JAMES-2420 Add tests to DLP rule store Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f7dcd555 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f7dcd555 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f7dcd555 Branch: refs/heads/master Commit: f7dcd555f72dba5354e9345f59d1f5e0b96d08ee Parents: 42c6846 Author: Benoit Tellier <btell...@linagora.com> Authored: Fri Aug 31 10:38:42 2018 +0700 Committer: Antoine Duprat <adup...@linagora.com> Committed: Thu Sep 6 09:49:32 2018 +0200 ---------------------------------------------------------------------- .../james/dlp/api/DLPConfigurationStore.java | 9 ++- .../dlp/api/DLPConfigurationStoreContract.java | 63 +++++++++++++++++--- .../org/apache/james/dlp/api/DLPFixture.java | 6 ++ ...aEventSourcingDLPConfigurationStoreTest.java | 2 +- .../EventSourcingDLPConfigurationStoreTest.java | 2 +- 5 files changed, 69 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/f7dcd555/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java b/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java index 291b932..2404b1e 100644 --- a/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java +++ b/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java @@ -19,8 +19,10 @@ package org.apache.james.dlp.api; +import java.util.Arrays; import java.util.List; import java.util.Optional; +import java.util.stream.Stream; import org.apache.james.core.Domain; @@ -30,8 +32,11 @@ public interface DLPConfigurationStore extends DLPConfigurationLoader { void store(Domain domain, List<DLPConfigurationItem> rule); - default void store(Domain domain, DLPConfigurationItem rule) { - store(domain, ImmutableList.of(rule)); + default void store(Domain domain, DLPConfigurationItem firstRules, DLPConfigurationItem... rules) { + store(domain, Stream.concat( + Stream.of(firstRules), + Arrays.stream(rules)) + .collect(ImmutableList.toImmutableList())); } void clear(Domain domain); http://git-wip-us.apache.org/repos/asf/james-project/blob/f7dcd555/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java index 4a5e417..990d724 100644 --- a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java +++ b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java @@ -21,8 +21,10 @@ package org.apache.james.dlp.api; import static org.apache.james.dlp.api.DLPFixture.RULE; import static org.apache.james.dlp.api.DLPFixture.RULE_2; +import static org.apache.james.dlp.api.DLPFixture.RULE_UPDATED; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import org.apache.james.core.Domain; import org.junit.jupiter.api.Test; @@ -41,10 +43,9 @@ public interface DLPConfigurationStoreContract { @Test default void listShouldReturnExistingEntries(DLPConfigurationStore dlpConfigurationStore) { - dlpConfigurationStore.store(Domain.LOCALHOST, RULE); - dlpConfigurationStore.store(Domain.LOCALHOST, RULE_2); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE, RULE_2); - assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE_2); + assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE, RULE_2); } @Test @@ -57,8 +58,7 @@ public interface DLPConfigurationStoreContract { @Test default void clearShouldRemoveAllEnriesOfADomain(DLPConfigurationStore dlpConfigurationStore) { - dlpConfigurationStore.store(Domain.LOCALHOST, RULE); - dlpConfigurationStore.store(Domain.LOCALHOST, RULE_2); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE, RULE_2); dlpConfigurationStore.clear(Domain.LOCALHOST); @@ -83,20 +83,65 @@ public interface DLPConfigurationStoreContract { @Test default void clearShouldOnlyRemovePreviouslyExistingEntries(DLPConfigurationStore dlpConfigurationStore) { - dlpConfigurationStore.store(Domain.LOCALHOST, ImmutableList.of(RULE, RULE_2)); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE, RULE_2); dlpConfigurationStore.clear(Domain.LOCALHOST); - dlpConfigurationStore.store(Domain.LOCALHOST, ImmutableList.of(RULE)); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE); assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE); } @Test default void storeShouldOverwritePreviouslyStoredEntries(DLPConfigurationStore dlpConfigurationStore) { - dlpConfigurationStore.store(Domain.LOCALHOST, ImmutableList.of(RULE, RULE_2)); - dlpConfigurationStore.store(Domain.LOCALHOST, ImmutableList.of(RULE)); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE, RULE_2); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE); + + assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE); + } + + @Test + default void storeShouldBeAbleToAddRules(DLPConfigurationStore dlpConfigurationStore) { + dlpConfigurationStore.store(Domain.LOCALHOST, RULE); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE, RULE_2); + + assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE, RULE_2); + } + + @Test + default void storeShouldRemoveDuplicates(DLPConfigurationStore dlpConfigurationStore) { + dlpConfigurationStore.store(Domain.LOCALHOST, RULE, RULE); assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE); } + + @Test + default void storeShouldRejectIdDuplicates(DLPConfigurationStore dlpConfigurationStore) { + assertThatThrownBy(() -> dlpConfigurationStore.store(Domain.LOCALHOST, RULE, RULE)) + .isInstanceOf(IllegalArgumentException.class); + } + + @Test + default void storeShouldUpdate(DLPConfigurationStore dlpConfigurationStore) { + dlpConfigurationStore.store(Domain.LOCALHOST, RULE); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE_UPDATED); + + assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE_UPDATED); + } + + @Test + default void storingSameRuleShouldBeIdempotent(DLPConfigurationStore dlpConfigurationStore) { + dlpConfigurationStore.store(Domain.LOCALHOST, RULE); + dlpConfigurationStore.store(Domain.LOCALHOST, RULE); + + assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).containsOnly(RULE); + } + + @Test + default void storeShouldClearRulesWhenEmpty(DLPConfigurationStore dlpConfigurationStore) { + dlpConfigurationStore.store(Domain.LOCALHOST, RULE); + dlpConfigurationStore.store(Domain.LOCALHOST, ImmutableList.of()); + + assertThat(dlpConfigurationStore.list(Domain.LOCALHOST)).isEmpty(); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/f7dcd555/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java index 4b7e86c..a8885ae 100644 --- a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java +++ b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPFixture.java @@ -26,6 +26,12 @@ public interface DLPFixture { .expression("regex") .targetsSender() .build(); + DLPConfigurationItem RULE_UPDATED = DLPConfigurationItem.builder() + .id(DLPConfigurationItem.Id.of("id1")) + .explanation("explanation2") + .expression("regex2") + .targetsSender() + .build(); DLPConfigurationItem RULE_2 = DLPConfigurationItem.builder() .id(DLPConfigurationItem.Id.of("id2")) .explanation("explanation2") http://git-wip-us.apache.org/repos/asf/james-project/blob/f7dcd555/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreTest.java index 9fdcb44..a224286 100644 --- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreTest.java +++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreTest.java @@ -23,6 +23,6 @@ import org.apache.james.dlp.api.DLPConfigurationStoreContract; import org.junit.jupiter.api.extension.ExtendWith; @ExtendWith(CassandraEventSourcingDLPConfigurationStoreExtension.class) -public class CassandraEventSourcingDLPConfigurationStoreTest implements DLPConfigurationStoreContract { +class CassandraEventSourcingDLPConfigurationStoreTest implements DLPConfigurationStoreContract { } http://git-wip-us.apache.org/repos/asf/james-project/blob/f7dcd555/server/data/data-memory/src/test/java/org/apache/james/dlp/memory/EventSourcingDLPConfigurationStoreTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-memory/src/test/java/org/apache/james/dlp/memory/EventSourcingDLPConfigurationStoreTest.java b/server/data/data-memory/src/test/java/org/apache/james/dlp/memory/EventSourcingDLPConfigurationStoreTest.java index a226fce..2445502 100644 --- a/server/data/data-memory/src/test/java/org/apache/james/dlp/memory/EventSourcingDLPConfigurationStoreTest.java +++ b/server/data/data-memory/src/test/java/org/apache/james/dlp/memory/EventSourcingDLPConfigurationStoreTest.java @@ -23,6 +23,6 @@ import org.apache.james.dlp.api.DLPConfigurationStoreContract; import org.junit.jupiter.api.extension.ExtendWith; @ExtendWith(InMemoryEventSourcingDLPConfigurationStoreExtension.class) -public class EventSourcingDLPConfigurationStoreTest implements DLPConfigurationStoreContract { +class EventSourcingDLPConfigurationStoreTest implements DLPConfigurationStoreContract { } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org