From 04ed3a652aafbbfd8824c2aa87138111e4696fc2 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 19 Jul 2022 18:02:35 +0100 Subject: [PATCH] Pass mailbox properties to hook when pairing. --- .../api/mailbox/MailboxSettingsManager.java | 4 +-- .../mailbox/MailboxSettingsManagerImpl.java | 6 +++- .../mailbox/MailboxUpdateManagerImpl.java | 7 ++-- .../MailboxSettingsManagerImplTest.java | 33 +++++++++++++++++-- .../mailbox/MailboxUpdateManagerImplTest.java | 7 ++-- 5 files changed, 43 insertions(+), 14 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java index 9badc0611..fd717eda4 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java @@ -49,10 +49,8 @@ public interface MailboxSettingsManager { * Called when Briar is paired with a mailbox * * @param txn A read-write transaction - * @param ownOnion Our new mailbox's onion (56 base32 chars) */ - void mailboxPaired(Transaction txn, String ownOnion, - List serverSupports) + void mailboxPaired(Transaction txn, MailboxProperties p) throws DbException; /** diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java index 5cc6cd2d9..9e33216a2 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java @@ -80,7 +80,7 @@ class MailboxSettingsManagerImpl implements MailboxSettingsManager { encodeServerSupports(serverSupports, s); settingsManager.mergeSettings(txn, s, SETTINGS_NAMESPACE); for (MailboxHook hook : hooks) { - hook.mailboxPaired(txn, p.getOnion(), p.getServerSupports()); + hook.mailboxPaired(txn, p); } } @@ -89,6 +89,10 @@ class MailboxSettingsManagerImpl implements MailboxSettingsManager { Settings s = new Settings(); s.put(SETTINGS_KEY_ONION, ""); s.put(SETTINGS_KEY_TOKEN, ""); + s.put(SETTINGS_KEY_ATTEMPTS, ""); + s.put(SETTINGS_KEY_LAST_ATTEMPT, ""); + s.put(SETTINGS_KEY_LAST_SUCCESS, ""); + s.put(SETTINGS_KEY_SERVER_SUPPORTS, ""); settingsManager.mergeSettings(txn, s, SETTINGS_NAMESPACE); for (MailboxHook hook : hooks) { hook.mailboxUnpaired(txn); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java index 6a1f95a7b..0345186e0 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java @@ -159,10 +159,11 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager, } @Override - public void mailboxPaired(Transaction txn, String ownOnion, - List serverSupports) throws DbException { + public void mailboxPaired(Transaction txn, MailboxProperties p) + throws DbException { for (Contact c : db.getContacts(txn)) { - createAndSendUpdateWithMailbox(txn, c, serverSupports, ownOnion); + createAndSendUpdateWithMailbox(txn, c, p.getServerSupports(), + p.getOnion()); } } 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 02e75c727..2c09559c8 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 @@ -5,6 +5,7 @@ import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.mailbox.MailboxAuthToken; import org.briarproject.bramble.api.mailbox.MailboxProperties; import org.briarproject.bramble.api.mailbox.MailboxSettingsManager; +import org.briarproject.bramble.api.mailbox.MailboxSettingsManager.MailboxHook; import org.briarproject.bramble.api.mailbox.MailboxStatus; import org.briarproject.bramble.api.mailbox.MailboxVersion; import org.briarproject.bramble.api.mailbox.event.OwnMailboxConnectionStatusEvent; @@ -39,6 +40,7 @@ public class MailboxSettingsManagerImplTest extends BrambleMockTestCase { private final SettingsManager settingsManager = context.mock(SettingsManager.class); + private final MailboxHook hook = context.mock(MailboxHook.class); private final MailboxSettingsManager manager = new MailboxSettingsManagerImpl(settingsManager); @@ -47,6 +49,8 @@ public class MailboxSettingsManagerImplTest extends BrambleMockTestCase { private final MailboxAuthToken token = new MailboxAuthToken(getRandomId()); private final List serverSupports = asList(new MailboxVersion(1, 0), new MailboxVersion(1, 1)); + private final MailboxProperties properties = new MailboxProperties(onion, + token, serverSupports); private final int[] serverSupportsInts = {1, 0, 1, 1}; private final ContactId contactId1 = new ContactId(random.nextInt()); private final ContactId contactId2 = new ContactId(random.nextInt()); @@ -98,17 +102,40 @@ public class MailboxSettingsManagerImplTest extends BrambleMockTestCase { expectedSettings.put(SETTINGS_KEY_TOKEN, token.toString()); expectedSettings.putIntArray(SETTINGS_KEY_SERVER_SUPPORTS, serverSupportsInts); - MailboxProperties properties = new MailboxProperties(onion, token, - serverSupports); + + manager.registerMailboxHook(hook); context.checking(new Expectations() {{ oneOf(settingsManager).mergeSettings(txn, expectedSettings, SETTINGS_NAMESPACE); + oneOf(hook).mailboxPaired(txn, properties); }}); manager.setOwnMailboxProperties(txn, properties); } + @Test + public void testRemovesProperties() throws Exception { + Transaction txn = new Transaction(null, false); + Settings expectedSettings = new Settings(); + expectedSettings.put(SETTINGS_KEY_ONION, ""); + expectedSettings.put(SETTINGS_KEY_TOKEN, ""); + expectedSettings.put(SETTINGS_KEY_ATTEMPTS, ""); + expectedSettings.put(SETTINGS_KEY_LAST_ATTEMPT, ""); + expectedSettings.put(SETTINGS_KEY_LAST_SUCCESS, ""); + expectedSettings.put(SETTINGS_KEY_SERVER_SUPPORTS, ""); + + manager.registerMailboxHook(hook); + + context.checking(new Expectations() {{ + oneOf(settingsManager).mergeSettings(txn, expectedSettings, + SETTINGS_NAMESPACE); + oneOf(hook).mailboxUnpaired(txn); + }}); + + manager.removeOwnMailboxProperties(txn); + } + @Test public void testReturnsDefaultStatusIfSettingsAreEmpty() throws Exception { Transaction txn = new Transaction(null, true); @@ -182,7 +209,7 @@ public class MailboxSettingsManagerImplTest extends BrambleMockTestCase { }}); manager.recordSuccessfulConnection(txn, now, versions); - hasEvent(txn, OwnMailboxConnectionStatusEvent.class); + assertTrue(hasEvent(txn, OwnMailboxConnectionStatusEvent.class)); } @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 9c84a7778..bdcc5a378 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 @@ -78,7 +78,6 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { private final BdfList someClientSupports; private final List newerClientSupportsList; private final BdfList newerClientSupports; - private final List someServerSupportsList; private final BdfList someServerSupports; private final BdfList emptyServerSupports = new BdfList(); private final MailboxProperties updateProps; @@ -100,8 +99,8 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { newerClientSupportsList.get(0).getMajor(), newerClientSupportsList.get(0).getMinor())); - someServerSupportsList = singletonList(new MailboxVersion( - rnd.nextInt(), rnd.nextInt())); + List someServerSupportsList = + singletonList(new MailboxVersion(rnd.nextInt(), rnd.nextInt())); someServerSupports = BdfList.of(BdfList.of( someServerSupportsList.get(0).getMajor(), someServerSupportsList.get(0).getMinor())); @@ -679,7 +678,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase { }}); MailboxUpdateManagerImpl t = createInstance(someClientSupportsList); - t.mailboxPaired(txn, ownProps.getOnion(), someServerSupportsList); + t.mailboxPaired(txn, ownProps); } @Test