You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by er...@apache.org on 2015/05/29 09:56:39 UTC
svn commit: r1682388 [2/2] - in /james/mailbox/trunk:
api/src/main/java/org/apache/james/mailbox/
api/src/main/java/org/apache/james/mailbox/model/ cassandra/
cassandra/src/test/java/org/apache/james/mailbox/cassandra/
cassandra/src/test/java/org/apach...
Added: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java?rev=1682388&view=auto
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java (added)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java Fri May 29 07:56:38 2015
@@ -0,0 +1,108 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store.mail.model;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.james.mailbox.store.mail.MessageMapper;
+import org.assertj.core.api.AbstractAssert;
+
+import javax.mail.Flags;
+import java.io.IOException;
+
+public class MessageAssert extends AbstractAssert<MessageAssert, Message<?>> {
+
+ public MessageAssert(Message<?> actual) {
+ super(actual, MessageAssert.class);
+ }
+
+ public static MessageAssert assertThat(Message<?> actual) {
+ return new MessageAssert(actual);
+ }
+
+ public MessageAssert isEqualTo(Message<?> expected, MessageMapper.FetchType usedFetchType) throws IOException {
+ isNotNull();
+ if (!equals(actual.getMailboxId(), expected.getMailboxId())) {
+ failWithMessage("Expected Mailbox ID to be <%s> but was <%s>", expected.getMailboxId().toString(), actual.getMailboxId().toString());
+ }
+ if (!equals(actual.getUid(), expected.getUid())) {
+ failWithMessage("Expected UID to be <%s> but was <%s>", expected.getUid(), actual.getUid());
+ }
+ if (!equals(actual.getInternalDate(), expected.getInternalDate())) {
+ failWithMessage("Expected Internal Date to be <%s> but was <%s>", expected.getInternalDate(), actual.getInternalDate());
+ }
+ if (!equals(actual.getBodyOctets(), expected.getBodyOctets())) {
+ failWithMessage("Expected Body octet to be <%s> but was <%s>", expected.getBodyOctets(), actual.getBodyOctets());
+ }
+ if (!equals(actual.getMediaType(), expected.getMediaType())) {
+ failWithMessage("Expected Media type to be <%s> but was <%s>", expected.getBodyOctets(), actual.getBodyOctets());
+ }
+ if (!equals(actual.getSubType(), expected.getSubType())) {
+ failWithMessage("Expected Sub type to be <%s> but was <%s>", expected.getBodyOctets(), actual.getBodyOctets());
+ }
+ if (usedFetchType == MessageMapper.FetchType.Full) {
+ if (!equals(actual.getFullContentOctets(), expected.getFullContentOctets())) {
+ failWithMessage("Expected Message size to be <%s> but was <%s>", expected.getFullContentOctets(), actual.getFullContentOctets());
+ }
+ if (!equals(IOUtils.toString(actual.getFullContent()), IOUtils.toString(expected.getFullContent()))) {
+ failWithMessage("Expected Full content to be <%s> but was <%s>", IOUtils.toString(actual.getFullContent()), IOUtils.toString(expected.getFullContent()));
+ }
+ }
+ if (usedFetchType == MessageMapper.FetchType.Full || usedFetchType == MessageMapper.FetchType.Headers) {
+ if (!equals(IOUtils.toString(actual.getHeaderContent()), IOUtils.toString(expected.getHeaderContent()))) {
+ failWithMessage("Expected Header content to be <%s> but was <%s>", IOUtils.toString(actual.getHeaderContent()), IOUtils.toString(expected.getHeaderContent()));
+ }
+ }
+ if (usedFetchType == MessageMapper.FetchType.Full || usedFetchType == MessageMapper.FetchType.Body) {
+ if (!equals(IOUtils.toString(actual.getBodyContent()), IOUtils.toString(expected.getBodyContent()))) {
+ failWithMessage("Expected Body content to be <%s> but was <%s>", IOUtils.toString(actual.getBodyContent()), IOUtils.toString(expected.getBodyContent()));
+ }
+ }
+ return this;
+ }
+
+ public MessageAssert hasFlags(Flags flags) {
+ if (flags.contains(Flags.Flag.ANSWERED) != actual.isAnswered()) {
+ failWithMessage("Expected ANSWERED flag to be <%s> but was <%>", flags.contains(Flags.Flag.ANSWERED), actual.isAnswered());
+ }
+ if (flags.contains(Flags.Flag.DELETED) != actual.isDeleted()) {
+ failWithMessage("Expected DELETED flag to be <%s> but was <%>", flags.contains(Flags.Flag.DELETED), actual.isDeleted());
+ }
+ if (flags.contains(Flags.Flag.DRAFT) != actual.isDraft()) {
+ failWithMessage("Expected DRAFT flag to be <%s> but was <%>", flags.contains(Flags.Flag.DRAFT), actual.isDraft());
+ }
+ if (flags.contains(Flags.Flag.FLAGGED) != actual.isFlagged()) {
+ failWithMessage("Expected FLAGGED flag to be <%s> but was <%>", flags.contains(Flags.Flag.FLAGGED), actual.isFlagged());
+ }
+ if (flags.contains(Flags.Flag.SEEN) != actual.isSeen()) {
+ failWithMessage("Expected SEEN flag to be <%s> but was <%>", flags.contains(Flags.Flag.SEEN), actual.isSeen());
+ }
+ if (flags.contains(Flags.Flag.RECENT) != actual.isRecent()) {
+ failWithMessage("Expected RECENT flag to be <%s> but was <%>", flags.contains(Flags.Flag.RECENT), actual.isRecent());
+ }
+ return this;
+ }
+
+ private boolean equals(Object object1, Object object2) {
+ if ( object1 == null && object2 == null ) {
+ return true;
+ }
+ return ( object1 != null ) && object1.equals(object2);
+ }
+}
\ No newline at end of file
Added: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssertTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssertTest.java?rev=1682388&view=auto
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssertTest.java (added)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssertTest.java Fri May 29 07:56:38 2015
@@ -0,0 +1,81 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store.mail.model;
+
+import org.apache.james.mailbox.store.mail.MessageMapper;
+import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;
+import org.junit.Test;
+
+import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
+import java.io.IOException;
+import java.util.Date;
+
+public class MessageAssertTest {
+
+ public static final long MAILBOX_ID = 42L;
+ public static final long UID = 24L;
+
+ @Test
+ public void messageAssertShouldSucceedWithTwoEqualsMessages() throws IOException {
+ String headerString = "name: headerName\n\n";
+ String bodyString = "body\n.\n";
+ Date date = new Date();
+ SimpleMessage<Long> message1 = new SimpleMessage<Long>(date, headerString.length() + bodyString.length(),
+ headerString.length(), new SharedByteArrayInputStream((headerString + bodyString).getBytes()), new Flags(), new PropertyBuilder(), MAILBOX_ID);
+ message1.setUid(UID);
+ SimpleMessage<Long> message2 = new SimpleMessage<Long>(date, headerString.length() + bodyString.length(),
+ headerString.length(), new SharedByteArrayInputStream((headerString + bodyString).getBytes()), new Flags(), new PropertyBuilder(), MAILBOX_ID);
+ message2.setUid(UID);
+ MessageAssert.assertThat(message1).isEqualTo(message2, MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ public void messageAssertShouldSucceedWhenBodyMismatchInFetchHeaderMode() throws IOException {
+ String headerString = "name: headerName\n\n";
+ String bodyString = "body\n.\n";
+ Date date = new Date();
+ SimpleMessage<Long> message1 = new SimpleMessage<Long>(date, headerString.length() + bodyString.length(),
+ headerString.length(), new SharedByteArrayInputStream((headerString + bodyString).getBytes()), new Flags(), new PropertyBuilder(), MAILBOX_ID);
+ message1.setUid(UID);
+ bodyString = "work\n.\n";
+ SimpleMessage<Long> message2 = new SimpleMessage<Long>(date, headerString.length() + bodyString.length(),
+ headerString.length(), new SharedByteArrayInputStream((headerString + bodyString).getBytes()), new Flags(), new PropertyBuilder(), MAILBOX_ID);
+ message2.setUid(UID);
+ MessageAssert.assertThat(message1).isEqualTo(message2, MessageMapper.FetchType.Headers);
+ }
+
+ @Test(expected = AssertionError.class)
+ public void messageAssertShouldFailWhenBodyMismatchInFetchBodyMode() throws IOException {
+ String headerString = "name: headerName\n\n";
+ String bodyString = "body\n.\n";
+ Date date = new Date();
+ SimpleMessage<Long> message1 = new SimpleMessage<Long>(date, headerString.length() + bodyString.length(),
+ headerString.length(), new SharedByteArrayInputStream((headerString + bodyString).getBytes()), new Flags(), new PropertyBuilder(), MAILBOX_ID);
+ message1.setUid(UID);
+ bodyString = "work\n.\n";
+ SimpleMessage<Long> message2 = new SimpleMessage<Long>(date, headerString.length() + bodyString.length(),
+ headerString.length(), new SharedByteArrayInputStream((headerString + bodyString).getBytes()), new Flags(), new PropertyBuilder(), MAILBOX_ID);
+ message2.setUid(UID);
+ MessageAssert.assertThat(message1).isEqualTo(message2, MessageMapper.FetchType.Body);
+ }
+
+}
Added: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssert.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssert.java?rev=1682388&view=auto
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssert.java (added)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssert.java Fri May 29 07:56:38 2015
@@ -0,0 +1,58 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store.mail.model;
+
+import org.apache.james.mailbox.model.MessageMetaData;
+import org.assertj.core.api.AbstractAssert;
+
+import java.util.Map;
+
+public class MetadataMapAssert extends AbstractAssert<MetadataMapAssert, Map<Long, MessageMetaData>> {
+
+ public MetadataMapAssert(Map<Long, MessageMetaData> actual) {
+ super(actual, MetadataMapAssert.class);
+ }
+
+ public static MetadataMapAssert assertThat(Map<Long, MessageMetaData> actual) {
+ return new MetadataMapAssert(actual);
+ }
+
+ public MetadataMapAssert hasSize(int expectedSize) {
+ if(actual.size() != expectedSize) {
+ failWithMessage("Expecting size to be <%s> but is <%s>", expectedSize, actual.size());
+ }
+ return this;
+ }
+
+ public MetadataMapAssert containsMetadataForMessages(Message... messages) {
+ for(Message message : messages) {
+ if (actual.get(message.getUid()).getUid() != message.getUid()) {
+ failWithMessage("Expected UID stored in MessageMetadata to be <%s> but was <%s>", actual.get(message.getUid()).getUid(), message.getUid());
+ }
+ if (!actual.get(message.getUid()).getInternalDate().equals(message.getInternalDate())) {
+ failWithMessage("Expected Internal date in MessageMetadata to be <%s> but was <%s>", actual.get(message.getUid()).getInternalDate(), message.getInternalDate());
+ }
+ if (actual.get(message.getUid()).getSize() != message.getFullContentOctets()) {
+ failWithMessage("Expected Size stored in MessageMetadata to be <%s> but was <%s>", actual.get(message.getUid()).getSize(), message.getFullContentOctets());
+ }
+ }
+ return this;
+ }
+}
Added: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java?rev=1682388&view=auto
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java (added)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java Fri May 29 07:56:38 2015
@@ -0,0 +1,85 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store.mail.model;
+
+import org.apache.james.mailbox.model.MessageMetaData;
+import org.apache.james.mailbox.store.SimpleMessageMetaData;
+import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MetadataMapAssertTest {
+
+ private static final Long UID = 18L;
+ private static final Long MODSEQ = 24L;
+ private static final Date DATE = new Date();
+ private static final String HEADER_STRING = "name: headerName\n\n";
+ private static final String BODY_STRING = "body\\n.\\n";
+ private static final Long MAILBOX_ID = 12L;
+
+ private SimpleMessage<Long> message1;
+
+ @Before
+ public void setUp() {
+ message1 = new SimpleMessage<Long>(DATE, HEADER_STRING.length() + BODY_STRING.length(),
+ HEADER_STRING.length(), new SharedByteArrayInputStream((HEADER_STRING + BODY_STRING).getBytes()), new Flags(), new PropertyBuilder(), MAILBOX_ID);
+ message1.setUid(UID);
+ message1.setModSeq(MODSEQ);
+ }
+
+ @Test
+ public void metadataMapAssertShouldSucceedWhenContainingRightMetadata() {
+ Map<Long, MessageMetaData> metaDataMap = new HashMap<Long, MessageMetaData>();
+ metaDataMap.put(18L, new SimpleMessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE));
+ MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
+ }
+
+ @Test(expected = AssertionError.class)
+ public void metadataMapAssertShouldFailWhenUidMismatch() {
+ Map<Long, MessageMetaData> metaDataMap = new HashMap<Long, MessageMetaData>();
+ metaDataMap.put(18L, new SimpleMessageMetaData(UID + 1, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE));
+ MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
+ }
+
+ @Test(expected = AssertionError.class)
+ public void metadataMapAssertShouldFailWhenDateMismatch() {
+ Map<Long, MessageMetaData> metaDataMap = new HashMap<Long, MessageMetaData>();
+ Date date = new Date();
+ date.setTime(DATE.getTime() + 100L);
+ metaDataMap.put(18L, new SimpleMessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), date));
+ MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
+ }
+
+ @Test(expected = AssertionError.class)
+ public void metadataMapAssertShouldFailWhenSizeMismatch() {
+ Map<Long, MessageMetaData> metaDataMap = new HashMap<Long, MessageMetaData>();
+ metaDataMap.put(18L, new SimpleMessageMetaData(UID , MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length() + 1, DATE));
+ MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
+ }
+
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org