Skip to content

Commit

Permalink
JAMES-1720 MockMailboxSession is mutable and thus should not be stati…
Browse files Browse the repository at this point in the history
…c in tests
  • Loading branch information
chibenwa committed Jun 22, 2017
1 parent e72b79b commit 7eb1c52
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 51 deletions.
Expand Up @@ -55,8 +55,6 @@
public abstract class AbstractMessageIdManagerStorageTest {
public static final Flags FLAGS = new Flags();

private static final MailboxSession SYSTEM_USER = new MockMailboxSession("systemuser", SessionType.System);

private static final MessageUid messageUid1 = MessageUid.of(111);
private static final MessageUid messageUid2 = MessageUid.of(222);

Expand Down Expand Up @@ -95,6 +93,7 @@ public MailboxId apply(MessageResult input) {
private Mailbox mailbox4;
private MailboxSession session;
private MailboxSession otherSession;
private MailboxSession systemSession;

@Rule
public ExpectedException expectedException = ExpectedException.none();
Expand All @@ -105,6 +104,7 @@ public MailboxId apply(MessageResult input) {
public void setUp() throws Exception {
session = new MockMailboxSession(MailboxManagerFixture.USER);
otherSession = new MockMailboxSession(MailboxManagerFixture.OTHER_USER);
systemSession = new MockMailboxSession("systemuser", SessionType.System);
testingData = createTestingData();
messageIdManager = testingData.getMessageIdManager();

Expand Down Expand Up @@ -349,7 +349,7 @@ public void deleteMessageShouldThrowExceptionWhenDeletingOnSystemSession() throw

MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);

messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), systemSession);
}

@Test
Expand Down Expand Up @@ -510,7 +510,7 @@ public void setFlagsShouldThrowExceptionWhenSetFlagsOnSystemSession() throws Exc
Flags newFlags = new Flags(Flags.Flag.SEEN);
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);

messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), systemSession);
}

@Test
Expand Down
Expand Up @@ -67,7 +67,6 @@ public class StoreMailboxManagerAnnotationTest {

private static final List<MailboxAnnotation> ANNOTATIONS = ImmutableList.of(PRIVATE_ANNOTATION, SHARED_ANNOTATION);
private static final List<MailboxAnnotation> ANNOTATIONS_WITH_NIL_ENTRY = ImmutableList.of(PRIVATE_ANNOTATION, MailboxAnnotation.nil(SHARED_KEY));
private static final MockMailboxSession session = new MockMailboxSession("userName");

@Mock private MailboxSessionMapperFactory mailboxSessionMapperFactory;
@Mock private Authenticator authenticator;
Expand All @@ -81,6 +80,7 @@ public class StoreMailboxManagerAnnotationTest {
@Mock private MessageParser messageParser;
@Mock private MailboxId mailboxId;
@Mock private MessageId.Factory messageIdFactory;
private MockMailboxSession session;

private StoreMailboxManager storeMailboxManager;

Expand All @@ -90,6 +90,8 @@ public class StoreMailboxManagerAnnotationTest {
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);

session = new MockMailboxSession("userName");

when(mailboxSessionMapperFactory.getMailboxMapper(eq(session))).thenReturn(mailboxMapper);
when(mailboxSessionMapperFactory.getAnnotationMapper(eq(session))).thenReturn(annotationMapper);
when(mailbox.getMailboxId()).thenReturn(mailboxId);
Expand Down
Expand Up @@ -43,18 +43,19 @@
import com.google.common.base.Throwables;

public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
private static final MailboxSession DEFAULT_MAILBOX_SESSION = new MockMailboxSession("user", SessionType.System);
private static final long MOD_SEQ = 18;
private static final ByteArrayInputStream ARRAY_INPUT_STREAM = new ByteArrayInputStream("".getBytes());

private final MessageId.Factory messageIdFactory;
private final TestMailboxSessionMapperFactory mapperFactory;
private final MailboxSession defaultMailboxSession;

public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, MessageId.Factory messageIdFactory, TestMailboxSessionMapperFactory mapperFactory) {
super(messageIdManager);

this.messageIdFactory = messageIdFactory;
this.mapperFactory = mapperFactory;
this.defaultMailboxSession = new MockMailboxSession("user", SessionType.System);
}

@Override
Expand All @@ -66,7 +67,7 @@ public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) th
public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session) {
MessageId messageId = messageIdFactory.generate();
try {
mapperFactory.createMessageIdMapper(DEFAULT_MAILBOX_SESSION)
mapperFactory.createMessageIdMapper(defaultMailboxSession)
.save(createMessage(mailboxId, flags, messageId, uid));
return messageId;
} catch (MailboxException e) {
Expand Down
Expand Up @@ -48,7 +48,6 @@

public class MailboxAnnotationListenerTest {
private static final MailboxPath MAILBOX_PATH = new MailboxPath("namespace", "user", "name");
private static final MailboxSession mailboxSession = new MockMailboxSession("test");

private static final MailboxAnnotationKey PRIVATE_KEY = new MailboxAnnotationKey("/private/comment");
private static final MailboxAnnotationKey SHARED_KEY = new MailboxAnnotationKey("/shared/comment");
Expand All @@ -68,10 +67,12 @@ public class MailboxAnnotationListenerTest {
private EventFactory eventFactory;
private MailboxAnnotationListener listener;
private MailboxListener.Event deleteEvent;
private MailboxSession mailboxSession;

@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mailboxSession = new MockMailboxSession("test");
listener = new MailboxAnnotationListener(mailboxSessionMapperFactory);
eventFactory = new EventFactory();
mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "name"), UID_VALIDITY, mailboxId);
Expand Down
Expand Up @@ -46,19 +46,21 @@ public class BroadcastDelegatingMailboxListenerTest {
private static final MailboxPath MAILBOX_PATH_NEW = new MailboxPath("namespace_new", "user_new", "name_new");
private static final Topic TOPIC = new Topic("topic");
private static final byte[] BYTES = new byte[0];
private static final MailboxSession mailboxSession = new MockMailboxSession("benwa");

public static final MailboxListener.Event EVENT = new MailboxListener.Event(mailboxSession, MAILBOX_PATH) {};

private BroadcastDelegatingMailboxListener broadcastDelegatingMailboxListener;
private Publisher mockedPublisher;
private EventSerializer mockedEventSerializer;
private EventCollector mailboxEventCollector;
private EventCollector eachEventCollector;
private EventCollector onceEventCollector;
private MailboxSession mailboxSession;
private MailboxListener.Event event;

@Before
public void setUp() throws Exception {
mailboxSession = new MockMailboxSession("benwa");
event = new MailboxListener.Event(mailboxSession, MAILBOX_PATH) {};

mockedEventSerializer = mock(EventSerializer.class);
mockedPublisher = mock(Publisher.class);
MessageConsumer messageConsumer = mock(MessageConsumer.class);
Expand All @@ -70,62 +72,62 @@ public void setUp() throws Exception {

@Test
public void eventWithNoRegisteredListenersShouldWork() throws Exception {
when(mockedEventSerializer.serializeEvent(EVENT)).thenAnswer(new Answer<byte[]>() {
when(mockedEventSerializer.serializeEvent(event)).thenAnswer(new Answer<byte[]>() {
@Override
public byte[] answer(InvocationOnMock invocation) throws Throwable {
return BYTES;
}
});
broadcastDelegatingMailboxListener.event(EVENT);
verify(mockedEventSerializer).serializeEvent(EVENT);
broadcastDelegatingMailboxListener.event(event);
verify(mockedEventSerializer).serializeEvent(event);
verify(mockedPublisher).publish(TOPIC, BYTES);
verifyNoMoreInteractions(mockedEventSerializer, mockedPublisher);
}

@Test
public void eventWithMailboxRegisteredListenerShouldWork() throws Exception {
broadcastDelegatingMailboxListener.addListener(MAILBOX_PATH, mailboxEventCollector, mailboxSession);
when(mockedEventSerializer.serializeEvent(EVENT)).thenAnswer(new Answer<byte[]>() {
when(mockedEventSerializer.serializeEvent(event)).thenAnswer(new Answer<byte[]>() {
@Override
public byte[] answer(InvocationOnMock invocation) throws Throwable {
return BYTES;
}
});
broadcastDelegatingMailboxListener.event(EVENT);
broadcastDelegatingMailboxListener.event(event);
assertThat(mailboxEventCollector.getEvents()).isEmpty();
verify(mockedEventSerializer).serializeEvent(EVENT);
verify(mockedEventSerializer).serializeEvent(event);
verify(mockedPublisher).publish(TOPIC, BYTES);
verifyNoMoreInteractions(mockedEventSerializer, mockedPublisher);
}

@Test
public void eventWithEachRegisteredListenerShouldWork() throws Exception {
broadcastDelegatingMailboxListener.addGlobalListener(eachEventCollector, mailboxSession);
when(mockedEventSerializer.serializeEvent(EVENT)).thenAnswer(new Answer<byte[]>() {
when(mockedEventSerializer.serializeEvent(event)).thenAnswer(new Answer<byte[]>() {
@Override
public byte[] answer(InvocationOnMock invocation) throws Throwable {
return BYTES;
}
});
broadcastDelegatingMailboxListener.event(EVENT);
broadcastDelegatingMailboxListener.event(event);
assertThat(eachEventCollector.getEvents()).isEmpty();
verify(mockedEventSerializer).serializeEvent(EVENT);
verify(mockedEventSerializer).serializeEvent(event);
verify(mockedPublisher).publish(TOPIC, BYTES);
verifyNoMoreInteractions(mockedEventSerializer, mockedPublisher);
}

@Test
public void eventWithOnceRegisteredListenerShouldWork() throws Exception {
broadcastDelegatingMailboxListener.addGlobalListener(onceEventCollector, mailboxSession);
when(mockedEventSerializer.serializeEvent(EVENT)).thenAnswer(new Answer<byte[]>() {
when(mockedEventSerializer.serializeEvent(event)).thenAnswer(new Answer<byte[]>() {
@Override
public byte[] answer(InvocationOnMock invocation) throws Throwable {
return BYTES;
}
});
broadcastDelegatingMailboxListener.event(EVENT);
assertThat(onceEventCollector.getEvents()).containsOnly(EVENT);
verify(mockedEventSerializer).serializeEvent(EVENT);
broadcastDelegatingMailboxListener.event(event);
assertThat(onceEventCollector.getEvents()).containsOnly(event);
verify(mockedEventSerializer).serializeEvent(event);
verify(mockedPublisher).publish(TOPIC, BYTES);
verifyNoMoreInteractions(mockedEventSerializer, mockedPublisher);
}
Expand All @@ -135,7 +137,7 @@ public void receiveSerializedEventShouldWorkWithNoRegisteredListeners() throws E
when(mockedEventSerializer.deSerializeEvent(BYTES)).thenAnswer(new Answer<MailboxListener.Event>() {
@Override
public MailboxListener.Event answer(InvocationOnMock invocation) throws Throwable {
return EVENT;
return event;
}
});
broadcastDelegatingMailboxListener.receiveSerializedEvent(BYTES);
Expand All @@ -149,13 +151,13 @@ public void receiveSerializedEventShouldWorkWithMailboxRegisteredListeners() thr
when(mockedEventSerializer.deSerializeEvent(BYTES)).thenAnswer(new Answer<MailboxListener.Event>() {
@Override
public MailboxListener.Event answer(InvocationOnMock invocation) throws Throwable {
return EVENT;
return event;
}
});
broadcastDelegatingMailboxListener.receiveSerializedEvent(BYTES);
verify(mockedEventSerializer).deSerializeEvent(BYTES);
verifyNoMoreInteractions(mockedEventSerializer, mockedPublisher);
assertThat(mailboxEventCollector.getEvents()).containsOnly(EVENT);
assertThat(mailboxEventCollector.getEvents()).containsOnly(event);
}

@Test
Expand All @@ -164,13 +166,13 @@ public void receiveSerializedEventShouldWorkWithEachRegisteredListeners() throws
when(mockedEventSerializer.deSerializeEvent(BYTES)).thenAnswer(new Answer<MailboxListener.Event>() {
@Override
public MailboxListener.Event answer(InvocationOnMock invocation) throws Throwable {
return EVENT;
return event;
}
});
broadcastDelegatingMailboxListener.receiveSerializedEvent(BYTES);
verify(mockedEventSerializer).deSerializeEvent(BYTES);
verifyNoMoreInteractions(mockedEventSerializer, mockedPublisher);
assertThat(eachEventCollector.getEvents()).containsOnly(EVENT);
assertThat(eachEventCollector.getEvents()).containsOnly(event);
}

@Test
Expand All @@ -179,7 +181,7 @@ public void receiveSerializedEventShouldWorkWithOnceRegisteredListeners() throws
when(mockedEventSerializer.deSerializeEvent(BYTES)).thenAnswer(new Answer<MailboxListener.Event>() {
@Override
public MailboxListener.Event answer(InvocationOnMock invocation) throws Throwable {
return EVENT;
return event;
}
});
broadcastDelegatingMailboxListener.receiveSerializedEvent(BYTES);
Expand Down
Expand Up @@ -52,8 +52,6 @@ public class RegisteredDelegatingMailboxListenerTest {
private static final Topic TOPIC = new Topic("topic");
private static final Topic TOPIC_2 = new Topic("topic_2");
private static final byte[] BYTES = new byte[0];
private static final MailboxSession mailboxSession = new MockMailboxSession("benwa");
public static final MailboxListener.Event EVENT = new MailboxListener.Event(mailboxSession, MAILBOX_PATH) {};

private RegisteredDelegatingMailboxListener testee;
private MailboxPathRegister mockedMailboxPathRegister;
Expand All @@ -62,9 +60,14 @@ public class RegisteredDelegatingMailboxListenerTest {
private EventCollector mailboxEventCollector;
private EventCollector eachEventCollector;
private EventCollector onceEventCollector;
private MailboxSession mailboxSession;
private MailboxListener.Event event;

@Before
public void setUp() throws Exception {
mailboxSession = new MockMailboxSession("benwa");
event = new MailboxListener.Event(mailboxSession, MAILBOX_PATH) {};

mockedEventSerializer = mock(EventSerializer.class);
mockedPublisher = mock(Publisher.class);
mockedMailboxPathRegister = mock(MailboxPathRegister.class);
Expand All @@ -91,8 +94,8 @@ public Topic answer(InvocationOnMock invocation) throws Throwable {
return TOPIC;
}
});
testee.event(EVENT);
assertThat(mailboxEventCollector.getEvents()).containsOnly(EVENT);
testee.event(event);
assertThat(mailboxEventCollector.getEvents()).containsOnly(event);
verify(mockedMailboxPathRegister, times(2)).getLocalTopic();
verify(mockedMailboxPathRegister).getTopics(MAILBOX_PATH);
verifyNoMoreInteractions(mockedEventSerializer);
Expand All @@ -116,17 +119,17 @@ public Topic answer(InvocationOnMock invocation) throws Throwable {
return TOPIC;
}
});
when(mockedEventSerializer.serializeEvent(EVENT)).thenAnswer(new Answer<byte[]>() {
when(mockedEventSerializer.serializeEvent(event)).thenAnswer(new Answer<byte[]>() {
@Override
public byte[] answer(InvocationOnMock invocation) throws Throwable {
return BYTES;
}
});
testee.event(EVENT);
assertThat(mailboxEventCollector.getEvents()).containsOnly(EVENT);
testee.event(event);
assertThat(mailboxEventCollector.getEvents()).containsOnly(event);
verify(mockedMailboxPathRegister, times(2)).getLocalTopic();
verify(mockedMailboxPathRegister).getTopics(MAILBOX_PATH);
verify(mockedEventSerializer).serializeEvent(EVENT);
verify(mockedEventSerializer).serializeEvent(event);
verify(mockedPublisher).publish(TOPIC_2, BYTES);
verifyNoMoreInteractions(mockedEventSerializer);
verifyNoMoreInteractions(mockedPublisher);
Expand Down Expand Up @@ -170,11 +173,11 @@ public void distantEventShouldBeLocallyDelivered() throws Exception {
when(mockedEventSerializer.deSerializeEvent(BYTES)).thenAnswer(new Answer<MailboxListener.Event>() {
@Override
public MailboxListener.Event answer(InvocationOnMock invocation) throws Throwable {
return EVENT;
return event;
}
});
testee.receiveSerializedEvent(BYTES);
assertThat(mailboxEventCollector.getEvents()).containsOnly(EVENT);
assertThat(mailboxEventCollector.getEvents()).containsOnly(event);
verify(mockedMailboxPathRegister).getLocalTopic();
verify(mockedEventSerializer).deSerializeEvent(BYTES);
verifyNoMoreInteractions(mockedEventSerializer);
Expand All @@ -189,7 +192,7 @@ public void distantEventShouldNotBeDeliveredToOnceGlobalListeners() throws Excep
when(mockedEventSerializer.deSerializeEvent(BYTES)).thenAnswer(new Answer<MailboxListener.Event>() {
@Override
public MailboxListener.Event answer(InvocationOnMock invocation) throws Throwable {
return EVENT;
return event;
}
});
testee.receiveSerializedEvent(BYTES);
Expand Down
Expand Up @@ -46,7 +46,6 @@
import org.mockito.MockitoAnnotations;

public class MessageUtilsTest {
private static final MailboxSession mailboxSession = new MockMailboxSession("user");
private static final MessageUid MESSAGE_UID = MessageUid.of(1);
private static final MessageId MESSAGE_ID = new DefaultMessageId();
private static final int BODY_START = 16;
Expand All @@ -55,6 +54,7 @@ public class MessageUtilsTest {
@Mock private ModSeqProvider modSeqProvider;
@Mock private UidProvider uidProvider;
@Mock private Mailbox mailbox;
private MailboxSession mailboxSession;

@Rule
public ExpectedException expectedException = ExpectedException.none();
Expand All @@ -65,6 +65,7 @@ public class MessageUtilsTest {
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mailboxSession = new MockMailboxSession("user");
messageUtils = new MessageUtils(mailboxSession, uidProvider, modSeqProvider);
message = new SimpleMailboxMessage(MESSAGE_ID, new Date(), CONTENT.length(), BODY_START, new SharedByteArrayInputStream(CONTENT.getBytes()), new Flags(), new PropertyBuilder(), mailbox.getMailboxId());
}
Expand Down

0 comments on commit 7eb1c52

Please sign in to comment.