From 1699d6b5f89f9d213dbf506c7e8618f3362ce916 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 2 Aug 2022 15:24:20 +0100 Subject: [PATCH] Check properties of events. --- .../api/mailbox/MailboxProperties.java | 19 ++ .../briarproject/bramble/test/TestUtils.java | 11 ++ .../MailboxSettingsManagerImplTest.java | 34 +--- .../mailbox/MailboxUpdateManagerImplTest.java | 165 +++++++++--------- 4 files changed, 123 insertions(+), 106 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java index bc9631de2..4175a5752 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java @@ -1,6 +1,7 @@ package org.briarproject.bramble.api.mailbox; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.bramble.api.nullsafety.NullSafety; import java.util.List; @@ -75,4 +76,22 @@ public class MailboxProperties { public MailboxFolderId getOutboxId() { return outboxId; } + + @Override + public boolean equals(Object o) { + if (o instanceof MailboxProperties) { + MailboxProperties m = (MailboxProperties) o; + return owner == m.owner && + onion.equals(m.onion) && + authToken.equals(m.authToken) && + NullSafety.equals(inboxId, m.inboxId) && + NullSafety.equals(outboxId, m.outboxId); + } + return false; + } + + @Override + public int hashCode() { + return authToken.hashCode(); + } } diff --git a/bramble-api/src/test/java/org/briarproject/bramble/test/TestUtils.java b/bramble-api/src/test/java/org/briarproject/bramble/test/TestUtils.java index b9a0d5d56..18a7c644f 100644 --- a/bramble-api/src/test/java/org/briarproject/bramble/test/TestUtils.java +++ b/bramble-api/src/test/java/org/briarproject/bramble/test/TestUtils.java @@ -338,6 +338,17 @@ public class TestUtils { return false; } + public static E getEvent(Transaction txn, + Class eventClass) { + for (CommitAction action : txn.getActions()) { + if (action instanceof EventAction) { + Event event = ((EventAction) action).getEvent(); + if (eventClass.isInstance(event)) return eventClass.cast(event); + } + } + throw new AssertionError(); + } + public static boolean isCryptoStrengthUnlimited() { try { return Cipher.getMaxAllowedKeyLength("AES/CBC/PKCS5Padding") diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImplTest.java index 2c09559c8..e49463a02 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImplTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImplTest.java @@ -19,7 +19,6 @@ import java.util.List; import java.util.Random; import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; import static org.briarproject.bramble.mailbox.MailboxSettingsManagerImpl.SETTINGS_KEY_ATTEMPTS; import static org.briarproject.bramble.mailbox.MailboxSettingsManagerImpl.SETTINGS_KEY_LAST_ATTEMPT; import static org.briarproject.bramble.mailbox.MailboxSettingsManagerImpl.SETTINGS_KEY_LAST_SUCCESS; @@ -28,10 +27,11 @@ import static org.briarproject.bramble.mailbox.MailboxSettingsManagerImpl.SETTIN import static org.briarproject.bramble.mailbox.MailboxSettingsManagerImpl.SETTINGS_KEY_TOKEN; import static org.briarproject.bramble.mailbox.MailboxSettingsManagerImpl.SETTINGS_NAMESPACE; import static org.briarproject.bramble.mailbox.MailboxSettingsManagerImpl.SETTINGS_UPLOADS_NAMESPACE; +import static org.briarproject.bramble.test.TestUtils.getEvent; import static org.briarproject.bramble.test.TestUtils.getRandomId; -import static org.briarproject.bramble.test.TestUtils.hasEvent; import static org.briarproject.bramble.util.StringUtils.getRandomString; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @@ -187,29 +187,13 @@ public class MailboxSettingsManagerImplTest extends BrambleMockTestCase { }}); manager.recordSuccessfulConnection(txn, now, serverSupports); - assertTrue(hasEvent(txn, OwnMailboxConnectionStatusEvent.class)); - } - - @Test - public void testRecordsSuccessWithVersions() throws Exception { - Transaction txn = new Transaction(null, false); - List versions = singletonList(new MailboxVersion(2, 1)); - Settings expectedSettings = new Settings(); - expectedSettings.putLong(SETTINGS_KEY_LAST_ATTEMPT, now); - expectedSettings.putLong(SETTINGS_KEY_LAST_SUCCESS, now); - expectedSettings.putInt(SETTINGS_KEY_ATTEMPTS, 0); - expectedSettings.putInt(SETTINGS_KEY_SERVER_SUPPORTS, 0); - int[] newVersionsInts = {2, 1}; - expectedSettings - .putIntArray(SETTINGS_KEY_SERVER_SUPPORTS, newVersionsInts); - - context.checking(new Expectations() {{ - oneOf(settingsManager).mergeSettings(txn, expectedSettings, - SETTINGS_NAMESPACE); - }}); - - manager.recordSuccessfulConnection(txn, now, versions); - assertTrue(hasEvent(txn, OwnMailboxConnectionStatusEvent.class)); + OwnMailboxConnectionStatusEvent e = + getEvent(txn, OwnMailboxConnectionStatusEvent.class); + MailboxStatus status = e.getStatus(); + assertEquals(now, status.getTimeOfLastAttempt()); + assertEquals(now, status.getTimeOfLastSuccess()); + assertEquals(0, status.getAttemptsSinceSuccess()); + assertFalse(status.hasProblem(now)); } @Test diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImplTest.java index d23de7518..d149c0be8 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImplTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImplTest.java @@ -3,6 +3,7 @@ package org.briarproject.bramble.mailbox; import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.client.ContactGroupFactory; import org.briarproject.bramble.api.contact.Contact; +import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.crypto.CryptoComponent; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfEntry; @@ -34,6 +35,7 @@ import java.util.List; import java.util.Map; import java.util.Random; +import static java.util.Collections.singleton; import static java.util.Collections.singletonList; import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.CLIENT_ID; import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.GROUP_KEY_SENT_CLIENT_SUPPORTS; @@ -47,6 +49,7 @@ import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_KEY import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED; import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.ACCEPT_DO_NOT_SHARE; import static org.briarproject.bramble.test.TestUtils.getContact; +import static org.briarproject.bramble.test.TestUtils.getEvent; import static org.briarproject.bramble.test.TestUtils.getGroup; import static org.briarproject.bramble.test.TestUtils.getMailboxProperties; import static org.briarproject.bramble.test.TestUtils.getMessage; @@ -73,6 +76,11 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { private final MailboxSettingsManager mailboxSettingsManager = context.mock(MailboxSettingsManager.class); + private final Contact contact = getContact(); + private final List contacts = singletonList(contact); + private final Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); + private final GroupId contactGroupId = contactGroup.getId(); + private final Message message = getMessage(contactGroupId); private final Group localGroup = getGroup(CLIENT_ID, MAJOR_VERSION); private final BdfDictionary propsDict; private final BdfDictionary emptyPropsDict = new BdfDictionary(); @@ -136,8 +144,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { @Test public void testCreatesGroupsAtUnpairedStartup() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); Map messageMetadata = new LinkedHashMap<>(); BdfDictionary sentDict = BdfDictionary.of(new BdfEntry( GROUP_KEY_SENT_CLIENT_SUPPORTS, @@ -159,8 +165,8 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { contact.getId(), CLIENT_ID, MAJOR_VERSION); will(returnValue(SHARED)); oneOf(db).setGroupVisibility(txn, contact.getId(), - contactGroup.getId(), SHARED); - oneOf(clientHelper).setContactId(txn, contactGroup.getId(), + contactGroupId, SHARED); + oneOf(clientHelper).setContactId(txn, contactGroupId, contact.getId()); oneOf(mailboxSettingsManager).getOwnMailboxProperties(txn); will(returnValue(null)); @@ -168,9 +174,9 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports, + expectStoreMessage(txn, contactGroupId, 1, someClientSupports, emptyServerSupports, emptyPropsDict); oneOf(clientHelper).mergeGroupMetadata(txn, localGroup.getId(), @@ -185,8 +191,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { public void testCreatesGroupsAndCreatesAndSendsAtPairedStartup() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); Map messageMetadata = new LinkedHashMap<>(); BdfDictionary sentDict = BdfDictionary.of(new BdfEntry( GROUP_KEY_SENT_CLIENT_SUPPORTS, @@ -208,8 +212,8 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { contact.getId(), CLIENT_ID, MAJOR_VERSION); will(returnValue(SHARED)); oneOf(db).setGroupVisibility(txn, contact.getId(), - contactGroup.getId(), SHARED); - oneOf(clientHelper).setContactId(txn, contactGroup.getId(), + contactGroupId, SHARED); + oneOf(clientHelper).setContactId(txn, contactGroupId, contact.getId()); oneOf(mailboxSettingsManager).getOwnMailboxProperties(txn); will(returnValue(ownProps)); @@ -223,9 +227,9 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports, + expectStoreMessage(txn, contactGroupId, 1, someClientSupports, someServerSupports, propsDict); oneOf(clientHelper).mergeGroupMetadata(txn, localGroup.getId(), @@ -240,9 +244,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { public void testUnchangedClientSupportsOnSecondStartup() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); - Map emptyMessageMetadata = new LinkedHashMap<>(); BdfDictionary sentDict = BdfDictionary.of(new BdfEntry( @@ -265,8 +266,8 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { contact.getId(), CLIENT_ID, MAJOR_VERSION); will(returnValue(SHARED)); oneOf(db).setGroupVisibility(txn, contact.getId(), - contactGroup.getId(), SHARED); - oneOf(clientHelper).setContactId(txn, contactGroup.getId(), + contactGroupId, SHARED); + oneOf(clientHelper).setContactId(txn, contactGroupId, contact.getId()); oneOf(mailboxSettingsManager).getOwnMailboxProperties(txn); will(returnValue(null)); @@ -274,9 +275,9 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(emptyMessageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports, + expectStoreMessage(txn, contactGroupId, 1, someClientSupports, emptyServerSupports, emptyPropsDict); oneOf(clientHelper).mergeGroupMetadata(txn, localGroup.getId(), @@ -305,9 +306,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); - Map emptyMessageMetadata = new LinkedHashMap<>(); BdfDictionary sentDict = BdfDictionary.of(new BdfEntry( @@ -330,8 +328,8 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { contact.getId(), CLIENT_ID, MAJOR_VERSION); will(returnValue(SHARED)); oneOf(db).setGroupVisibility(txn, contact.getId(), - contactGroup.getId(), SHARED); - oneOf(clientHelper).setContactId(txn, contactGroup.getId(), + contactGroupId, SHARED); + oneOf(clientHelper).setContactId(txn, contactGroupId, contact.getId()); oneOf(mailboxSettingsManager).getOwnMailboxProperties(txn); will(returnValue(null)); @@ -339,9 +337,9 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(emptyMessageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports, + expectStoreMessage(txn, contactGroupId, 1, someClientSupports, emptyServerSupports, emptyPropsDict); oneOf(clientHelper).mergeGroupMetadata(txn, localGroup.getId(), @@ -385,7 +383,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); oneOf(clientHelper).getMessageAsList(txn, messageId); will(returnValue(body)); @@ -398,9 +396,9 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { // storeMessageReplaceLatest() oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 2, + expectStoreMessage(txn, contactGroupId, 2, newerClientSupports, someServerSupports, propsDict); oneOf(db).removeMessage(txn, messageId); @@ -416,8 +414,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { public void testCreatesContactGroupWhenAddingContactUnpaired() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); Map messageMetadata = new LinkedHashMap<>(); context.checking(new Expectations() {{ @@ -430,8 +426,8 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { contact.getId(), CLIENT_ID, MAJOR_VERSION); will(returnValue(SHARED)); oneOf(db).setGroupVisibility(txn, contact.getId(), - contactGroup.getId(), SHARED); - oneOf(clientHelper).setContactId(txn, contactGroup.getId(), + contactGroupId, SHARED); + oneOf(clientHelper).setContactId(txn, contactGroupId, contact.getId()); oneOf(mailboxSettingsManager).getOwnMailboxProperties(txn); will(returnValue(null)); @@ -439,9 +435,9 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports, + expectStoreMessage(txn, contactGroupId, 1, someClientSupports, emptyServerSupports, emptyPropsDict); }}); @@ -453,8 +449,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { public void testCreatesContactGroupAndCreatesAndSendsWhenAddingContactPaired() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); Map messageMetadata = new LinkedHashMap<>(); context.checking(new Expectations() {{ @@ -467,8 +461,8 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { contact.getId(), CLIENT_ID, MAJOR_VERSION); will(returnValue(SHARED)); oneOf(db).setGroupVisibility(txn, contact.getId(), - contactGroup.getId(), SHARED); - oneOf(clientHelper).setContactId(txn, contactGroup.getId(), + contactGroupId, SHARED); + oneOf(clientHelper).setContactId(txn, contactGroupId, contact.getId()); oneOf(mailboxSettingsManager).getOwnMailboxProperties(txn); will(returnValue(ownProps)); @@ -482,9 +476,9 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports, + expectStoreMessage(txn, contactGroupId, 1, someClientSupports, someServerSupports, propsDict); }}); @@ -495,8 +489,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { @Test public void testRemovesGroupWhenRemovingContact() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); context.checking(new Expectations() {{ oneOf(contactGroupFactory).createContactGroup(CLIENT_ID, @@ -513,9 +505,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { public void testDoesNotDeleteAnythingWhenFirstUpdateIsDelivered() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - GroupId contactGroupId = new GroupId(getRandomId()); - Message message = getMessage(contactGroupId); BdfList body = BdfList.of(1, someClientSupports, someServerSupports, propsDict); Metadata meta = new Metadata(); @@ -550,16 +539,23 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MailboxUpdateManagerImpl t = createInstance(someClientSupportsList); assertEquals(ACCEPT_DO_NOT_SHARE, t.incomingMessage(txn, message, meta)); - assertTrue(hasEvent(txn, RemoteMailboxUpdateEvent.class)); + + RemoteMailboxUpdateEvent e = + getEvent(txn, RemoteMailboxUpdateEvent.class); + assertEquals(contact.getId(), e.getContact()); + MailboxUpdate u = e.getMailboxUpdate(); + assertTrue(u.hasMailbox()); + MailboxUpdateWithMailbox uMailbox = (MailboxUpdateWithMailbox) u; + assertEquals(updateWithMailbox.getClientSupports(), + uMailbox.getClientSupports()); + assertEquals(updateWithMailbox.getMailboxProperties(), + uMailbox.getMailboxProperties()); } @Test public void testDeletesOlderUpdateWhenUpdateIsDelivered() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - GroupId contactGroupId = new GroupId(getRandomId()); - Message message = getMessage(contactGroupId); BdfList body = BdfList.of(1, someClientSupports, someServerSupports, propsDict); Metadata meta = new Metadata(); @@ -602,14 +598,22 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MailboxUpdateManagerImpl t = createInstance(someClientSupportsList); assertEquals(ACCEPT_DO_NOT_SHARE, t.incomingMessage(txn, message, meta)); - assertTrue(hasEvent(txn, RemoteMailboxUpdateEvent.class)); + + RemoteMailboxUpdateEvent e = + getEvent(txn, RemoteMailboxUpdateEvent.class); + assertEquals(contact.getId(), e.getContact()); + MailboxUpdate u = e.getMailboxUpdate(); + assertTrue(u.hasMailbox()); + MailboxUpdateWithMailbox uMailbox = (MailboxUpdateWithMailbox) u; + assertEquals(updateWithMailbox.getClientSupports(), + uMailbox.getClientSupports()); + assertEquals(updateWithMailbox.getMailboxProperties(), + uMailbox.getMailboxProperties()); } @Test public void testDeletesObsoleteUpdateWhenDelivered() throws Exception { Transaction txn = new Transaction(null, false); - GroupId contactGroupId = new GroupId(getRandomId()); - Message message = getMessage(contactGroupId); Metadata meta = new Metadata(); BdfDictionary metaDictionary = BdfDictionary.of( new BdfEntry(MSG_KEY_VERSION, 3), @@ -636,16 +640,13 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MailboxUpdateManagerImpl t = createInstance(someClientSupportsList); assertEquals(ACCEPT_DO_NOT_SHARE, t.incomingMessage(txn, message, meta)); + assertFalse(hasEvent(txn, RemoteMailboxUpdateEvent.class)); } @Test public void testCreatesAndStoresLocalUpdateWithNewVersionOnPairing() throws Exception { - Contact contact = getContact(); - List contacts = singletonList(contact); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); - Transaction txn = new Transaction(null, false); Map messageMetadata = new LinkedHashMap<>(); MessageId latestId = new MessageId(getRandomId()); @@ -672,24 +673,31 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 2, someClientSupports, + expectStoreMessage(txn, contactGroupId, 2, someClientSupports, someServerSupports, propsDict); oneOf(db).removeMessage(txn, latestId); }}); MailboxUpdateManagerImpl t = createInstance(someClientSupportsList); t.mailboxPaired(txn, ownProps); - assertTrue(hasEvent(txn, MailboxPairedEvent.class)); + + MailboxPairedEvent e = getEvent(txn, MailboxPairedEvent.class); + assertEquals(ownProps, e.getProperties()); + Map localUpdates = + e.getLocalUpdates(); + assertEquals(singleton(contact.getId()), localUpdates.keySet()); + MailboxUpdateWithMailbox u = localUpdates.get(contact.getId()); + assertEquals(updateWithMailbox.getClientSupports(), + u.getClientSupports()); + assertEquals(updateWithMailbox.getMailboxProperties(), + u.getMailboxProperties()); } @Test public void testStoresLocalUpdateNoMailboxWithNewVersionOnUnpairing() throws Exception { - Contact contact = getContact(); - List contacts = singletonList(contact); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); Transaction txn = new Transaction(null, false); Map messageMetadata = new LinkedHashMap<>(); @@ -711,23 +719,26 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); - expectStoreMessage(txn, contactGroup.getId(), 2, someClientSupports, + expectStoreMessage(txn, contactGroupId, 2, someClientSupports, emptyServerSupports, emptyPropsDict); oneOf(db).removeMessage(txn, latestId); }}); MailboxUpdateManagerImpl t = createInstance(someClientSupportsList); t.mailboxUnpaired(txn); - assertTrue(hasEvent(txn, MailboxUnpairedEvent.class)); + + MailboxUnpairedEvent e = getEvent(txn, MailboxUnpairedEvent.class); + Map localUpdates = e.getLocalUpdates(); + assertEquals(singleton(contact.getId()), localUpdates.keySet()); + MailboxUpdate u = localUpdates.get(contact.getId()); + assertFalse(u.hasMailbox()); } @Test public void testGetRemoteUpdate() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); BdfDictionary metaDictionary = BdfDictionary.of( new BdfEntry(MSG_KEY_VERSION, 1), new BdfEntry(MSG_KEY_LOCAL, false) @@ -745,7 +756,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { .createContactGroup(CLIENT_ID, MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); oneOf(clientHelper).getMessageAsList(txn, messageId); will(returnValue(body)); @@ -763,8 +774,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { public void testGetRemoteUpdateReturnsNullBecauseNoUpdate() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); Map emptyMessageMetadata = new LinkedHashMap<>(); @@ -775,7 +784,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(emptyMessageMetadata)); }}); @@ -786,8 +795,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { @Test public void testGetRemoteUpdateNoMailbox() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); BdfDictionary metaDictionary = BdfDictionary.of( new BdfEntry(MSG_KEY_VERSION, 1), new BdfEntry(MSG_KEY_LOCAL, false) @@ -805,7 +812,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); oneOf(clientHelper).getMessageAsList(txn, messageId); will(returnValue(body)); @@ -822,8 +829,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { @Test public void testGetLocalUpdate() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); BdfDictionary metaDictionary = BdfDictionary.of( new BdfEntry(MSG_KEY_VERSION, 1), new BdfEntry(MSG_KEY_LOCAL, true) @@ -841,7 +846,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); oneOf(clientHelper).getMessageAsList(txn, messageId); will(returnValue(body)); @@ -858,8 +863,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { @Test public void testGetLocalUpdateNoMailbox() throws Exception { Transaction txn = new Transaction(null, false); - Contact contact = getContact(); - Group contactGroup = getGroup(CLIENT_ID, MAJOR_VERSION); BdfDictionary metaDictionary = BdfDictionary.of( new BdfEntry(MSG_KEY_VERSION, 1), new BdfEntry(MSG_KEY_LOCAL, true) @@ -877,7 +880,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { MAJOR_VERSION, contact); will(returnValue(contactGroup)); oneOf(clientHelper).getMessageMetadataAsDictionary(txn, - contactGroup.getId()); + contactGroupId); will(returnValue(messageMetadata)); oneOf(clientHelper).getMessageAsList(txn, messageId); will(returnValue(body));