Skip to content

Commit

Permalink
MAILBOX-359 Factorize tests for Flags ser-deserialization
Browse files Browse the repository at this point in the history
  • Loading branch information
chibenwa committed Jan 8, 2019
1 parent d7910fc commit 5d365c1
Show file tree
Hide file tree
Showing 4 changed files with 263 additions and 1,209 deletions.
Expand Up @@ -20,7 +20,6 @@
package org.apache.james.event.json; package org.apache.james.event.json;


import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.assertThatThrownBy;


Expand Down Expand Up @@ -139,157 +138,6 @@ void addedShouldBeWellDeSerializedWhenMapKeyIsEmpty() {
} }
} }


@Nested
class WithFlags {

@Nested
class WithEmptyFlags {
private final Flags emptyFlags = new FlagsBuilder().build();
private final MailboxListener.Added emptyFlagsAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID,
ImmutableSortedMap.of(
MESSAGE_UID,
new MessageMetaData(MESSAGE_UID, MOD_SEQ, emptyFlags, SIZE, Date.from(INSTANT), MESSAGE_ID)));

private final String emptyFlagsAddedEventJson =
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[], " +
" \"userFlags\":[]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}";

@Test
void addedShouldBeWellSerializedWhenEmptyFlags() {
assertThatJson(EVENT_SERIALIZER.toJson(emptyFlagsAddedEvent))
.isEqualTo(emptyFlagsAddedEventJson);
}

@Test
void addedShouldBeWellDeSerializedWhenEmptyFlags() {
assertThat(EVENT_SERIALIZER.fromJson(emptyFlagsAddedEventJson).get())
.isEqualTo(emptyFlagsAddedEvent);
}
}

@Nested
class WithOnlyUserFlags {
private final Flags onlyUserFlags = new FlagsBuilder()
.add("Custom 1", "Custom 2", "")
.build();
private final MailboxListener.Added onlyUserFlagsAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID,
ImmutableSortedMap.of(
MESSAGE_UID,
new MessageMetaData(MESSAGE_UID, MOD_SEQ, onlyUserFlags, SIZE, Date.from(INSTANT), MESSAGE_ID)));

private final String userOnlyFlagsAddedEventJson =
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[], " +
" \"userFlags\":[\"Custom 1\", \"Custom 2\", \"\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}";

@Test
void addedShouldBeWellSerializedWhenOnlyUserFlags() {
assertThatJson(EVENT_SERIALIZER.toJson(onlyUserFlagsAddedEvent))
.when(IGNORING_ARRAY_ORDER)
.isEqualTo(userOnlyFlagsAddedEventJson);
}

@Test
void addedShouldBeWellDeSerializedWhenOnlyUserFlags() {
assertThat(EVENT_SERIALIZER.fromJson(userOnlyFlagsAddedEventJson).get())
.isEqualTo(onlyUserFlagsAddedEvent);
}
}

@Nested
class WithOnlySystemFlags {
private final Flags onlySystemFlags = new FlagsBuilder()
.add(Flags.Flag.SEEN, Flags.Flag.ANSWERED, Flags.Flag.DELETED)
.build();
private final MailboxListener.Added onlySystemFlagsAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID,
ImmutableSortedMap.of(
MESSAGE_UID,
new MessageMetaData(MESSAGE_UID, MOD_SEQ, onlySystemFlags, SIZE, Date.from(INSTANT), MESSAGE_ID)));

private final String systemOnlyFlagsAddedEventJson =
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[\"Seen\",\"Answered\",\"Deleted\"], " +
" \"userFlags\":[]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}";

@Test
void addedShouldBeWellSerializedWhenOnlySystemFlags() {
assertThatJson(EVENT_SERIALIZER.toJson(onlySystemFlagsAddedEvent))
.when(IGNORING_ARRAY_ORDER)
.isEqualTo(systemOnlyFlagsAddedEventJson);
}

@Test
void addedShouldBeWellDeSerializedWhenOnlySystemFlags() {
assertThat(EVENT_SERIALIZER.fromJson(systemOnlyFlagsAddedEventJson).get())
.isEqualTo(onlySystemFlagsAddedEvent);
}
}
}

@Nested @Nested
class WithInternalDate { class WithInternalDate {


Expand Down Expand Up @@ -1000,13 +848,10 @@ void addedShouldThrowWhenInternalDateIsNull() {
} }
} }


@Nested @Test
class DeserializationErrorOnFlags { void addedShouldThrowWhenFlagsIsNull() {

assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
@Test "{" +
void addedShouldThrowWhenFlagsIsNull() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" + " \"Added\": {" +
" \"path\": {" + " \"path\": {" +
" \"namespace\": \"#private\"," + " \"namespace\": \"#private\"," +
Expand All @@ -1029,215 +874,6 @@ void addedShouldThrowWhenFlagsIsNull() {
" }" + " }" +
"}").get()) "}").get())
.isInstanceOf(NoSuchElementException.class); .isInstanceOf(NoSuchElementException.class);
}

@Test
void addedShouldThrowWhenSystemFlagsContainsNullElements() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[null, \"Draft\"], " +
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}").get())
.isInstanceOf(NoSuchElementException.class);
}

@Test
void addedShouldThrowWhenUserFlagsContainsNullElements() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[\"Draft\"], " +
" \"userFlags\":[\"User Custom Flag\", null]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}").get())
.isInstanceOf(NoSuchElementException.class);
}

@Test
void addedShouldThrowWhenSystemFlagsContainsNumberElements() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[42, \"Draft\"], " +
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}").get())
.isInstanceOf(NoSuchElementException.class);
}

@Test
void addedShouldThrowWhenUserFlagsContainsNumberElements() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[\"Draft\"], " +
" \"userFlags\":[\"User Custom Flag\", 42]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}").get())
.isInstanceOf(NoSuchElementException.class);
}

@Test
void addedShouldThrowWhenSystemFlagsDoNotHaveTheRightCase() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[\"draft\"], " +
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}").get())
.isInstanceOf(NoSuchElementException.class);
}

@Test
void addedShouldThrowWhenNoSystemFlags() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}").get())
.isInstanceOf(NoSuchElementException.class);
}

@Test
void addedShouldThrowWhenNoUserFlags() {
assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson(
"{" +
" \"Added\": {" +
" \"path\": {" +
" \"namespace\": \"#private\"," +
" \"user\": \"user\"," +
" \"name\": \"mailboxName\"" +
" }," +
" \"mailboxId\": \"18\"," +
" \"added\": {" +
" \"123456\": {" +
" \"uid\": 123456," +
" \"modSeq\": 35," +
" \"flags\": {" +
" \"systemFlags\":[\"Draft\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"" +
" }" +
" }," +
" \"sessionId\": 42," +
" \"user\": \"user\"" +
" }" +
"}").get())
.isInstanceOf(NoSuchElementException.class);
}
} }
} }
} }
Expand Down

0 comments on commit 5d365c1

Please sign in to comment.