Make current tests independent of real CLIENT_SUPPORTS

This commit is contained in:
Daniel Lublin
2022-05-19 08:28:19 +02:00
parent 4467f9e260
commit c59524df65
4 changed files with 70 additions and 60 deletions

View File

@@ -7,10 +7,13 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.mailbox.MailboxManager;
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
import org.briarproject.bramble.api.mailbox.MailboxVersion;
import org.briarproject.bramble.api.sync.validation.ValidationManager;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -20,6 +23,7 @@ import dagger.Provides;
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.CLIENT_ID;
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.MAJOR_VERSION;
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.MINOR_VERSION;
import static org.briarproject.bramble.mailbox.MailboxApi.CLIENT_SUPPORTS;
@Module
public class MailboxModule {
@@ -66,6 +70,11 @@ public class MailboxModule {
return validator;
}
@Provides
List<MailboxVersion> provideClientSupports() {
return CLIENT_SUPPORTS;
}
@Provides
@Singleton
MailboxUpdateManager provideMailboxUpdateManager(

View File

@@ -46,13 +46,13 @@ import javax.annotation.Nullable;
import javax.inject.Inject;
import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.ACCEPT_DO_NOT_SHARE;
import static org.briarproject.bramble.mailbox.MailboxApi.CLIENT_SUPPORTS;
@NotNullByDefault
class MailboxUpdateManagerImpl implements MailboxUpdateManager,
OpenDatabaseHook, ContactHook, ClientVersioningHook,
IncomingMessageHook, MailboxHook {
private final List<MailboxVersion> clientSupports;
private final DatabaseComponent db;
private final ClientHelper clientHelper;
private final ClientVersioningManager clientVersioningManager;
@@ -64,12 +64,14 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager,
private final Group localGroup;
@Inject
MailboxUpdateManagerImpl(DatabaseComponent db, ClientHelper clientHelper,
MailboxUpdateManagerImpl(List<MailboxVersion> clientSupports,
DatabaseComponent db, ClientHelper clientHelper,
ClientVersioningManager clientVersioningManager,
MetadataParser metadataParser,
ContactGroupFactory contactGroupFactory, Clock clock,
MailboxSettingsManager mailboxSettingsManager,
CryptoComponent crypto) {
this.clientSupports = clientSupports;
this.db = db;
this.clientHelper = clientHelper;
this.clientVersioningManager = clientVersioningManager;
@@ -90,7 +92,7 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager,
txn, localGroup.getId());
BdfList sent = meta.getList(GROUP_KEY_SENT_CLIENT_SUPPORTS);
if (clientHelper.parseMailboxVersionList(sent)
.equals(CLIENT_SUPPORTS)) {
.equals(clientSupports)) {
return;
}
} catch (FormatException e) {
@@ -103,10 +105,9 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager,
MailboxUpdate updated;
if (latest.hasMailbox()) {
updated = new MailboxUpdateWithMailbox(
(MailboxUpdateWithMailbox) latest,
CLIENT_SUPPORTS);
(MailboxUpdateWithMailbox) latest, clientSupports);
} else {
updated = new MailboxUpdate(CLIENT_SUPPORTS);
updated = new MailboxUpdate(clientSupports);
}
Group g = getContactGroup(c);
storeMessageReplaceLatest(txn, g.getId(), updated);
@@ -122,7 +123,7 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager,
try {
BdfDictionary meta = BdfDictionary.of(new BdfEntry(
GROUP_KEY_SENT_CLIENT_SUPPORTS,
encodeSupportsList(CLIENT_SUPPORTS)));
encodeSupportsList(clientSupports)));
clientHelper.mergeGroupMetadata(txn, localGroup.getId(), meta);
} catch (FormatException e) {
throw new DbException();
@@ -242,7 +243,7 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager,
List<MailboxVersion> serverSupports, String ownOnion)
throws DbException {
MailboxUpdate u = new MailboxUpdateWithMailbox(
CLIENT_SUPPORTS, serverSupports, ownOnion,
clientSupports, serverSupports, ownOnion,
new MailboxAuthToken(crypto.generateUniqueId().getBytes()),
new MailboxFolderId(crypto.generateUniqueId().getBytes()),
new MailboxFolderId(crypto.generateUniqueId().getBytes()));
@@ -259,7 +260,7 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager,
private void sendUpdateNoMailbox(Transaction txn, Contact c)
throws DbException {
Group g = getContactGroup(c);
MailboxUpdate u = new MailboxUpdate(CLIENT_SUPPORTS);
MailboxUpdate u = new MailboxUpdate(clientSupports);
storeMessageReplaceLatest(txn, g.getId(), u);
}

View File

@@ -12,6 +12,7 @@ import org.briarproject.bramble.api.mailbox.MailboxProperties;
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
import org.briarproject.bramble.api.mailbox.MailboxUpdate;
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
import org.briarproject.bramble.api.mailbox.MailboxVersion;
import org.briarproject.bramble.api.mailbox.OwnMailboxConnectionStatusEvent;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.test.BrambleMockTestCase;
@@ -29,7 +30,6 @@ import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicInteger;
import static java.util.Collections.singletonList;
import static org.briarproject.bramble.mailbox.MailboxApi.CLIENT_SUPPORTS;
import static org.briarproject.bramble.test.TestUtils.getContact;
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
import static org.briarproject.bramble.test.TestUtils.getRandomId;
@@ -107,7 +107,8 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase {
}});
Contact contact1 = getContact();
Transaction txn = new Transaction(null, false);
MailboxUpdate updateNoMailbox = new MailboxUpdate(CLIENT_SUPPORTS);
MailboxUpdate updateNoMailbox = new MailboxUpdate(
singletonList(new MailboxVersion(47, 11)));
context.checking(new DbExpectations() {{
oneOf(db).transaction(with(false), withDbRunnable(txn));
oneOf(mailboxSettingsManager).setOwnMailboxProperties(

View File

@@ -45,7 +45,6 @@ import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_KEY
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_KEY_OUTBOXID;
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.mailbox.MailboxApi.CLIENT_SUPPORTS;
import static org.briarproject.bramble.test.TestUtils.getContact;
import static org.briarproject.bramble.test.TestUtils.getGroup;
import static org.briarproject.bramble.test.TestUtils.getMessage;
@@ -75,33 +74,33 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
private final Group localGroup = getGroup(CLIENT_ID, MAJOR_VERSION);
private final BdfDictionary propsDict;
private final BdfDictionary emptyPropsDict = new BdfDictionary();
private final BdfList realClientSupports;
private final BdfList someClientSupports;
private final List<MailboxVersion> someClientSupportsList;
private final BdfList emptyServerSupports;
private final BdfList someServerSupports;
private final BdfList someClientSupports;
private final List<MailboxVersion> someServerSupportsList;
private final BdfList someServerSupports;
private final BdfList emptyServerSupports = new BdfList();
private final MailboxUpdateWithMailbox updateWithMailbox;
private final MailboxUpdate updateNoMailbox;
private final MailboxProperties ownProps;
public MailboxUpdateManagerImplTest() {
someClientSupports = BdfList.of(BdfList.of(1, 0));
someClientSupportsList = singletonList(new MailboxVersion(1, 0));
emptyServerSupports = new BdfList();
someServerSupports = BdfList.of(BdfList.of(1, 0));
someServerSupportsList = singletonList(new MailboxVersion(1, 0));
realClientSupports = new BdfList();
for (MailboxVersion v : CLIENT_SUPPORTS) {
realClientSupports.add(BdfList.of(v.getMajor(), v.getMinor()));
}
someClientSupportsList = singletonList(new MailboxVersion(47, 11));
someClientSupports = BdfList.of(BdfList.of(
someClientSupportsList.get(0).getMajor(),
someClientSupportsList.get(0).getMinor()));
someServerSupportsList = singletonList(new MailboxVersion(42, 0));
someServerSupports = BdfList.of(BdfList.of(
someServerSupportsList.get(0).getMajor(),
someServerSupportsList.get(0).getMinor()));
updateNoMailbox = new MailboxUpdate(someClientSupportsList);
ownProps = new MailboxProperties("http://bar.onion",
new MailboxAuthToken(getRandomId()), true,
someServerSupportsList);
updateWithMailbox = new MailboxUpdateWithMailbox(
singletonList(new MailboxVersion(1, 0)),
singletonList(new MailboxVersion(1, 0)),
ownProps.getOnion(),
updateWithMailbox = new MailboxUpdateWithMailbox(someClientSupportsList,
someServerSupportsList, ownProps.getOnion(),
new MailboxAuthToken(getRandomId()),
new MailboxFolderId(getRandomId()),
new MailboxFolderId(getRandomId()));
@@ -113,18 +112,18 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
.getBytes());
propsDict.put(PROP_KEY_OUTBOXID, updateWithMailbox.getOutboxId()
.getBytes());
updateNoMailbox = new MailboxUpdate(someClientSupportsList);
}
private MailboxUpdateManagerImpl createInstance() {
private MailboxUpdateManagerImpl createInstance(
List<MailboxVersion> clientSupports) {
context.checking(new Expectations() {{
oneOf(contactGroupFactory).createLocalGroup(CLIENT_ID,
MAJOR_VERSION);
will(returnValue(localGroup));
}});
return new MailboxUpdateManagerImpl(db, clientHelper,
clientVersioningManager, metadataParser, contactGroupFactory,
clock, mailboxSettingsManager, crypto);
return new MailboxUpdateManagerImpl(clientSupports, db,
clientHelper, clientVersioningManager, metadataParser,
contactGroupFactory, clock, mailboxSettingsManager, crypto);
}
@Test
@@ -135,7 +134,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
Map<MessageId, BdfDictionary> messageMetadata = new LinkedHashMap<>();
BdfDictionary sentDict = BdfDictionary.of(new BdfEntry(
GROUP_KEY_SENT_CLIENT_SUPPORTS,
realClientSupports));
someClientSupports));
context.checking(new Expectations() {{
oneOf(db).containsGroup(txn, localGroup.getId());
@@ -164,14 +163,14 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
contactGroup.getId());
will(returnValue(messageMetadata));
expectStoreMessage(txn, contactGroup.getId(), 1, realClientSupports,
expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports,
emptyServerSupports, emptyPropsDict, true);
oneOf(clientHelper).mergeGroupMetadata(txn, localGroup.getId(),
sentDict);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.onDatabaseOpened(txn);
}
@@ -184,7 +183,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
Map<MessageId, BdfDictionary> messageMetadata = new LinkedHashMap<>();
BdfDictionary sentDict = BdfDictionary.of(new BdfEntry(
GROUP_KEY_SENT_CLIENT_SUPPORTS,
realClientSupports));
someClientSupports));
context.checking(new Expectations() {{
oneOf(db).containsGroup(txn, localGroup.getId());
@@ -219,14 +218,14 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
contactGroup.getId());
will(returnValue(messageMetadata));
expectStoreMessage(txn, contactGroup.getId(), 1, realClientSupports,
expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports,
someServerSupports, propsDict, true);
oneOf(clientHelper).mergeGroupMetadata(txn, localGroup.getId(),
sentDict);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.onDatabaseOpened(txn);
}
@@ -242,7 +241,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
new LinkedHashMap<>();
BdfDictionary sentDict = BdfDictionary.of(new BdfEntry(
GROUP_KEY_SENT_CLIENT_SUPPORTS,
realClientSupports));
someClientSupports));
context.checking(new Expectations() {{
oneOf(db).containsGroup(txn, localGroup.getId());
@@ -271,14 +270,14 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
contactGroup.getId());
will(returnValue(emptyMessageMetadata));
expectStoreMessage(txn, contactGroup.getId(), 1, realClientSupports,
expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports,
emptyServerSupports, emptyPropsDict, true);
oneOf(clientHelper).mergeGroupMetadata(txn, localGroup.getId(),
sentDict);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.onDatabaseOpened(txn);
context.checking(new Expectations() {{
@@ -287,11 +286,11 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(clientHelper).getGroupMetadataAsDictionary(txn,
localGroup.getId());
will(returnValue(sentDict));
oneOf(clientHelper).parseMailboxVersionList(realClientSupports);
will(returnValue(CLIENT_SUPPORTS));
oneOf(clientHelper).parseMailboxVersionList(someClientSupports);
will(returnValue(someClientSupportsList));
}});
t = createInstance();
t = createInstance(someClientSupportsList);
t.onDatabaseOpened(txn);
}
@@ -324,11 +323,11 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
contactGroup.getId());
will(returnValue(messageMetadata));
expectStoreMessage(txn, contactGroup.getId(), 1, realClientSupports,
expectStoreMessage(txn, contactGroup.getId(), 1, someClientSupports,
emptyServerSupports, emptyPropsDict, true);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.addingContact(txn, contact);
}
@@ -371,7 +370,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
someServerSupports, propsDict, true);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.addingContact(txn, contact);
}
@@ -388,7 +387,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(db).removeGroup(txn, contactGroup);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.removingContact(txn, contact);
}
@@ -430,7 +429,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(db).resetUnackedMessagesToSend(txn, contact.getId());
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
assertEquals(ACCEPT_DO_NOT_SHARE,
t.incomingMessage(txn, message, meta));
assertTrue(hasEvent(txn, RemoteMailboxUpdateEvent.class));
@@ -482,7 +481,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(db).resetUnackedMessagesToSend(txn, contact.getId());
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
assertEquals(ACCEPT_DO_NOT_SHARE,
t.incomingMessage(txn, message, meta));
assertTrue(hasEvent(txn, RemoteMailboxUpdateEvent.class));
@@ -516,7 +515,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(db).deleteMessageMetadata(txn, message.getId());
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
assertEquals(ACCEPT_DO_NOT_SHARE,
t.incomingMessage(txn, message, meta));
assertFalse(hasEvent(txn, RemoteMailboxUpdateEvent.class));
@@ -562,7 +561,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(db).removeMessage(txn, latestId);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.mailboxPaired(txn, ownProps.getOnion(), someServerSupportsList);
}
@@ -600,7 +599,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
oneOf(db).removeMessage(txn, latestId);
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
t.mailboxUnpaired(txn);
}
@@ -635,7 +634,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
will(returnValue(updateWithMailbox));
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
MailboxUpdate remote = t.getRemoteUpdate(txn, contact.getId());
assertTrue(mailboxUpdateEqual(remote, updateWithMailbox));
}
@@ -660,7 +659,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
will(returnValue(emptyMessageMetadata));
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
assertNull(t.getRemoteUpdate(txn, contact.getId()));
}
@@ -695,7 +694,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
will(returnValue(updateNoMailbox));
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
MailboxUpdate remote = t.getRemoteUpdate(txn, contact.getId());
assertTrue(mailboxUpdateEqual(remote, updateNoMailbox));
}
@@ -731,7 +730,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
will(returnValue(updateWithMailbox));
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
MailboxUpdate local = t.getLocalUpdate(txn, contact.getId());
assertTrue(mailboxUpdateEqual(local, updateWithMailbox));
}
@@ -767,7 +766,7 @@ public class MailboxUpdateManagerImplTest extends BrambleMockTestCase {
will(returnValue(updateNoMailbox));
}});
MailboxUpdateManagerImpl t = createInstance();
MailboxUpdateManagerImpl t = createInstance(someClientSupportsList);
MailboxUpdate local = t.getLocalUpdate(txn, contact.getId());
assertTrue(mailboxUpdateEqual(local, updateNoMailbox));
}