Repository: james-project Updated Branches: refs/heads/master 110e9a2a2 -> 3764ac48e
http://git-wip-us.apache.org/repos/asf/james-project/blob/ae28a25a/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java index 73521c7..7676b6f 100644 --- a/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java +++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java @@ -81,7 +81,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -162,7 +164,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": []," + + " \"flags\": {" + + " \"systemFlags\":[], " + + " \"userFlags\":[]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -209,7 +213,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"Custom 1\", \"Custom 2\", \"\"]," + + " \"flags\": {" + + " \"systemFlags\":[], " + + " \"userFlags\":[\"Custom 1\", \"Custom 2\", \"\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -257,7 +263,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"\\\\Seen\", \"\\\\Answered\", \"\\\\Deleted\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Seen\",\"Answered\",\"Deleted\"], " + + " \"userFlags\":[]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -281,44 +289,6 @@ class ExpungedSerializationTest { .isEqualTo(onlySystemFlagsExpungedEvent); } } - - @Nested - class WithFlagCaseSensitive { - - private static final String CASE_SENSITIVE_SYSTEM_FLAGS_EVENT_JSON = - "{" + - " \"Expunged\": {" + - " \"path\": {" + - " \"namespace\": \"#private\"," + - " \"user\": \"user\"," + - " \"name\": \"mailboxName\"" + - " }," + - " \"mailboxId\": \"18\"," + - " \"expunged\": {" + - " \"123456\": {" + - " \"uid\": 123456," + - " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\answereD\", \"\\\\dRaFt\"]," + - " \"size\": 45, " + - " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + - " \"messageId\": \"42\"" + - " }" + - " }," + - " \"sessionId\": 42," + - " \"user\": \"user\"" + - " }" + - "}"; - - @Test - void expungedShouldCareAboutSystemFlagsCaseSensitive() { - MailboxListener.Expunged deSerializedEvent = (MailboxListener.Expunged) EVENT_SERIALIZER - .fromJson(CASE_SENSITIVE_SYSTEM_FLAGS_EVENT_JSON) - .get(); - - assertThat(deSerializedEvent.getMetaData(MESSAGE_UID).getFlags().getSystemFlags()) - .isEmpty(); - } - } } @Nested @@ -343,7 +313,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51+00:00\"," + " \"messageId\": \"42\"" + @@ -375,7 +347,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51Z\"," + " \"messageId\": \"42\"" + @@ -407,7 +381,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41Z\"," + " \"messageId\": \"42\"" + @@ -437,7 +413,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -465,7 +443,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -501,7 +481,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -545,7 +527,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -572,7 +556,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -600,7 +586,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -631,7 +619,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -658,7 +648,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -686,7 +678,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -716,7 +710,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -744,7 +740,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -772,7 +770,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -806,7 +806,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -837,7 +839,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -869,7 +873,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -897,7 +903,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -951,7 +959,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": \"123456\"," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -979,7 +989,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": null," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -1011,7 +1023,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -1039,7 +1053,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": null," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -1072,7 +1088,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": \"45\", " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -1100,7 +1118,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": null, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + @@ -1132,7 +1152,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": 42" + @@ -1160,7 +1182,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": null" + @@ -1191,7 +1215,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14 12:52:36+07:00\"," + " \"messageId\": \"42\"" + @@ -1219,7 +1245,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14\"," + " \"messageId\": \"42\"" + @@ -1247,7 +1275,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14TZ\"," + " \"messageId\": \"42\"" + @@ -1275,7 +1305,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14T09:41:51.541\"," + " \"messageId\": \"42\"" + @@ -1303,7 +1335,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"2018-12-14Z\"," + " \"messageId\": \"42\"" + @@ -1331,7 +1365,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": \"\"," + " \"messageId\": \"42\"" + @@ -1359,7 +1395,9 @@ class ExpungedSerializationTest { " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"User Custom Flag\", \"\\\\Answered\", \"\\\\Draft\"]," + + " \"flags\": {" + + " \"systemFlags\":[\"Answered\",\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + " \"internalDate\": null," + " \"messageId\": \"42\"" + @@ -1377,7 +1415,7 @@ class ExpungedSerializationTest { class DeserializationErrorOnFlags { @Test - void expungedShouldThrowWhenFlagsIsNull() { + void addedShouldThrowWhenFlagsIsNull() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + " \"Expunged\": {" + @@ -1393,7 +1431,7 @@ class ExpungedSerializationTest { " \"modSeq\": 35," + " \"flags\": null," + " \"size\": 45, " + - " \"internalDate\": \"\"," + + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + " }" + " }," + @@ -1401,27 +1439,29 @@ class ExpungedSerializationTest { " \"user\": \"user\"" + " }" + "}").get()) - .isInstanceOf(NoSuchElementException.class); + .isInstanceOf(NoSuchElementException.class); } @Test - void expungedShouldThrowWhenFlagsContainsNullElements() { + void addedShouldThrowWhenSystemFlagsContainsNullElements() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + - " \"Added\": {" + + " \"Expunged\": {" + " \"path\": {" + " \"namespace\": \"#private\"," + " \"user\": \"user\"," + " \"name\": \"mailboxName\"" + " }," + " \"mailboxId\": \"18\"," + - " \"added\": {" + + " \"expunged\": {" + " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"flag 1\", null, \"flags 2\", null]," + + " \"flags\": {" + + " \"systemFlags\":[null, \"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\"]}," + " \"size\": 45, " + - " \"internalDate\": \"\"," + + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + " }" + " }," + @@ -1429,27 +1469,177 @@ class ExpungedSerializationTest { " \"user\": \"user\"" + " }" + "}").get()) - .isInstanceOf(NoSuchElementException.class); + .isInstanceOf(NoSuchElementException.class); } @Test - void expungedShouldThrowWhenFlagsContainsNumberElements() { + void addedShouldThrowWhenUserFlagsContainsNullElements() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + - " \"Added\": {" + + " \"Expunged\": {" + " \"path\": {" + " \"namespace\": \"#private\"," + " \"user\": \"user\"," + " \"name\": \"mailboxName\"" + " }," + " \"mailboxId\": \"18\"," + - " \"added\": {" + + " \"expunged\": {" + " \"123456\": {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"flags\": [\"flag 1\", 1254, \"flags 2\", 125.36]," + + " \"flags\": {" + + " \"systemFlags\":[\"Draft\"], " + + " \"userFlags\":[\"User Custom Flag\", null]}," + " \"size\": 45, " + - " \"internalDate\": \"\"," + + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + + " \"messageId\": \"42\"" + + " }" + + " }," + + " \"sessionId\": 42," + + " \"user\": \"user\"" + + " }" + + "}").get()) + .isInstanceOf(NoSuchElementException.class); + } + + @Test + void addedShouldThrowWhenSystemFlagsContainsNumberElements() { + assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( + "{" + + " \"Expunged\": {" + + " \"path\": {" + + " \"namespace\": \"#private\"," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"expunged\": {" + + " \"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( + "{" + + " \"Expunged\": {" + + " \"path\": {" + + " \"namespace\": \"#private\"," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"expunged\": {" + + " \"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( + "{" + + " \"Expunged\": {" + + " \"path\": {" + + " \"namespace\": \"#private\"," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"expunged\": {" + + " \"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( + "{" + + " \"Expunged\": {" + + " \"path\": {" + + " \"namespace\": \"#private\"," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"expunged\": {" + + " \"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( + "{" + + " \"Expunged\": {" + + " \"path\": {" + + " \"namespace\": \"#private\"," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"expunged\": {" + + " \"123456\": {" + + " \"uid\": 123456," + + " \"modSeq\": 35," + + " \"flags\": {" + + " \"systemFlags\":[\"Draft\"]}," + + " \"size\": 45, " + + " \"internalDate\": \"2018-12-14T09:41:51.541Z\"," + " \"messageId\": \"42\"" + " }" + " }," + http://git-wip-us.apache.org/repos/asf/james-project/blob/ae28a25a/mailbox/event/json/src/test/java/org/apache/james/event/json/FlagsUpdatedSerializationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/FlagsUpdatedSerializationTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/FlagsUpdatedSerializationTest.java index 63316e1..e6e12ba 100644 --- a/mailbox/event/json/src/test/java/org/apache/james/event/json/FlagsUpdatedSerializationTest.java +++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/FlagsUpdatedSerializationTest.java @@ -106,14 +106,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -154,14 +154,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -186,14 +186,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -223,14 +223,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -314,8 +314,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": []," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[],\"userFlags\":[]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -361,8 +361,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": []" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[],\"userFlags\":[]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -408,8 +408,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": []," + - " \"newFlags\": []" + + " \"oldFlags\": {\"systemFlags\":[],\"userFlags\":[]}," + + " \"newFlags\": {\"systemFlags\":[],\"userFlags\":[]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -451,14 +451,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -483,14 +483,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -515,14 +515,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -550,14 +550,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]" + " }" + @@ -581,14 +581,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": 4569" + @@ -613,14 +613,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user@user@anotherUser\"" + @@ -647,14 +647,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -679,14 +679,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -711,14 +711,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -749,14 +749,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -784,14 +784,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -820,14 +820,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -852,14 +852,14 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }," + " {" + " \"uid\": 654321," + " \"modSeq\": 36," + - " \"oldFlags\": [\"Old Flag 2\", \"\\\\Flagged\", \"\\\\Recent\"]," + - " \"newFlags\": [\"New Flag 2\", \"\\\\Answered\", \"\\\\Seen\" ]" + + " \"oldFlags\": {\"systemFlags\":[\"Flagged\",\"Recent\"],\"userFlags\":[\"Old Flag 2\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Seen\"],\"userFlags\":[\"New Flag 2\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -892,8 +892,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": \"123456\"," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -918,8 +918,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": null," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -944,8 +944,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 12563.3564," + " \"modSeq\": 35," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -974,8 +974,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1000,8 +1000,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": null," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1026,8 +1026,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": 35.2567454," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Deleted\",\"Seen\"],\"userFlags\":[\"Old Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1057,7 +1057,7 @@ class FlagsUpdatedSerializationTest { " \"uid\": 123456," + " \"modSeq\": \"35\"," + " \"oldFlags\": null," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1067,7 +1067,7 @@ class FlagsUpdatedSerializationTest { } @Test - void flagsUpdatedShouldThrowWhenOldFlagsContainsNullElements() { + void flagsUpdatedShouldThrowWhenSystemFlagsContainsNullElements() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + " \"FlagsUpdated\": {" + @@ -1082,8 +1082,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [null, null, \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[null,\"Draft\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1093,7 +1093,7 @@ class FlagsUpdatedSerializationTest { } @Test - void flagsUpdatedShouldThrowWhenOldFlagsContainsNotStringElements() { + void flagsUpdatedShouldThrowWhenUserFlagsContainsNullElements() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + " \"FlagsUpdated\": {" + @@ -1108,8 +1108,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [\"Old Flag 1\", 1256, 5894.9523]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[\"Draft\"],\"userFlags\":[\"New Flag 1\", null]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1119,7 +1119,7 @@ class FlagsUpdatedSerializationTest { } @Test - void flagsUpdatedShouldThrowWhenOldFlagsContainsNestedArray() { + void flagsUpdatedShouldThrowWhenSystemFlagsDoesNotContainString() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + " \"FlagsUpdated\": {" + @@ -1134,8 +1134,86 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [\"Old Flag 1\", [\"\\\\Answered\", \"\\\\Draft\"]]," + - " \"newFlags\": [\"New Flag 1\", \"\\\\Answered\", \"\\\\Draft\"]" + + " \"oldFlags\": {\"systemFlags\":[42,\"Draft\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + + " }" + + " ]," + + " \"user\": \"user\"" + + " }" + + "}").get()) + .isInstanceOf(NoSuchElementException.class); + } + + @Test + void flagsUpdatedShouldThrowWhenSystemFlagsContainsUnknownString() { + assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( + "{" + + " \"FlagsUpdated\": {" + + " \"path\": {" + + " \"namespace\": 482," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"sessionId\": 42," + + " \"updatedFlags\": [" + + " {" + + " \"uid\": 123456," + + " \"modSeq\": \"35\"," + + " \"oldFlags\": {\"systemFlags\":[\"unKnown\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + + " }" + + " ]," + + " \"user\": \"user\"" + + " }" + + "}").get()) + .isInstanceOf(NoSuchElementException.class); + } + + @Test + void flagsUpdatedShouldThrowWhenSystemFlagsContainsBadCaseString() { + assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( + "{" + + " \"FlagsUpdated\": {" + + " \"path\": {" + + " \"namespace\": 482," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"sessionId\": 42," + + " \"updatedFlags\": [" + + " {" + + " \"uid\": 123456," + + " \"modSeq\": \"35\"," + + " \"oldFlags\": {\"systemFlags\":[\"dRaFt\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + + " }" + + " ]," + + " \"user\": \"user\"" + + " }" + + "}").get()) + .isInstanceOf(NoSuchElementException.class); + } + + @Test + void flagsUpdatedShouldThrowWhenUserFlagsDoesNotContainString() { + assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( + "{" + + " \"FlagsUpdated\": {" + + " \"path\": {" + + " \"namespace\": 482," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"sessionId\": 42," + + " \"updatedFlags\": [" + + " {" + + " \"uid\": 123456," + + " \"modSeq\": \"35\"," + + " \"oldFlags\": {\"systemFlags\":[\"Draft\"],\"userFlags\":[\"New Flag 1\", 42]}," + + " \"newFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1163,8 +1241,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": null" + + " \"newFlags\": null," + + " \"oldFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1174,7 +1252,7 @@ class FlagsUpdatedSerializationTest { } @Test - void flagsUpdatedShouldThrowWhenNewFlagsContainsNullElements() { + void flagsUpdatedShouldThrowWhenSystemFlagsContainsNullElements() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + " \"FlagsUpdated\": {" + @@ -1189,8 +1267,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [null, \"\\\\Answered\", \"\\\\Draft\", null]" + + " \"newFlags\": {\"systemFlags\":[null,\"Draft\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"oldFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1200,7 +1278,7 @@ class FlagsUpdatedSerializationTest { } @Test - void flagsUpdatedShouldThrowWhenNewFlagsContainsNotStringElements() { + void flagsUpdatedShouldThrowWhenUserFlagsContainsNullElements() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + " \"FlagsUpdated\": {" + @@ -1215,8 +1293,8 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", 1666.3984, 2152, \"\\\\Answered\", \"\\\\Draft\"]" + + " \"newFlags\": {\"systemFlags\":[\"Draft\"],\"userFlags\":[\"New Flag 1\", null]}," + + " \"oldFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1226,7 +1304,7 @@ class FlagsUpdatedSerializationTest { } @Test - void flagsUpdatedShouldThrowWhenNewFlagsContainsNestedArray() { + void flagsUpdatedShouldThrowWhenSystemFlagsDoesNotContainString() { assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( "{" + " \"FlagsUpdated\": {" + @@ -1241,8 +1319,86 @@ class FlagsUpdatedSerializationTest { " {" + " \"uid\": 123456," + " \"modSeq\": \"35\"," + - " \"oldFlags\": [\"Old Flag 1\", \"\\\\Deleted\", \"\\\\Seen\"]," + - " \"newFlags\": [\"New Flag 1\", [\"\\\\Answered\", \"\\\\Draft\"]]" + + " \"newFlags\": {\"systemFlags\":[42,\"Draft\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"oldFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + + " }" + + " ]," + + " \"user\": \"user\"" + + " }" + + "}").get()) + .isInstanceOf(NoSuchElementException.class); + } + + @Test + void flagsUpdatedShouldThrowWhenSystemFlagsContainsUnknownString() { + assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( + "{" + + " \"FlagsUpdated\": {" + + " \"path\": {" + + " \"namespace\": 482," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"sessionId\": 42," + + " \"updatedFlags\": [" + + " {" + + " \"uid\": 123456," + + " \"modSeq\": \"35\"," + + " \"newFlags\": {\"systemFlags\":[\"unKnown\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"oldFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + + " }" + + " ]," + + " \"user\": \"user\"" + + " }" + + "}").get()) + .isInstanceOf(NoSuchElementException.class); + } + + @Test + void flagsUpdatedShouldThrowWhenSystemFlagsContainsBadCaseString() { + assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( + "{" + + " \"FlagsUpdated\": {" + + " \"path\": {" + + " \"namespace\": 482," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"sessionId\": 42," + + " \"updatedFlags\": [" + + " {" + + " \"uid\": 123456," + + " \"modSeq\": \"35\"," + + " \"newFlags\": {\"systemFlags\":[\"dRaFt\"],\"userFlags\":[\"New Flag 1\"]}," + + " \"oldFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + + " }" + + " ]," + + " \"user\": \"user\"" + + " }" + + "}").get()) + .isInstanceOf(NoSuchElementException.class); + } + + @Test + void flagsUpdatedShouldThrowWhenUserFlagsDoesNotContainString() { + assertThatThrownBy(() -> EVENT_SERIALIZER.fromJson( + "{" + + " \"FlagsUpdated\": {" + + " \"path\": {" + + " \"namespace\": 482," + + " \"user\": \"user\"," + + " \"name\": \"mailboxName\"" + + " }," + + " \"mailboxId\": \"18\"," + + " \"sessionId\": 42," + + " \"updatedFlags\": [" + + " {" + + " \"uid\": 123456," + + " \"modSeq\": \"35\"," + + " \"newFlags\": {\"systemFlags\":[\"Draft\"],\"userFlags\":[\"New Flag 1\", 42]}," + + " \"oldFlags\": {\"systemFlags\":[\"Answered\",\"Draft\"],\"userFlags\":[\"New Flag 1\"]}" + " }" + " ]," + " \"user\": \"user\"" + @@ -1253,5 +1409,4 @@ class FlagsUpdatedSerializationTest { } } } - } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
