Don't depend on briar for mailbox integration tests

Use transport properties instead of sending private messages
This commit is contained in:
Torsten Grote
2022-11-03 10:57:06 -03:00
parent a705caa5fa
commit b7e1a987fc
4 changed files with 43 additions and 31 deletions

View File

@@ -7,14 +7,11 @@ apply from: '../dagger.gradle'
dependencies { dependencies {
testImplementation project(path: ':bramble-api', configuration: 'default') testImplementation project(path: ':bramble-api', configuration: 'default')
testImplementation project(path: ':bramble-api', configuration: 'testOutput')
testImplementation project(path: ':bramble-core', configuration: 'default') testImplementation project(path: ':bramble-core', configuration: 'default')
testImplementation project(path: ':briar-api', configuration: 'default') testImplementation project(path: ':bramble-core', configuration: 'testOutput')
testImplementation project(path: ':briar-core', configuration: 'default')
testImplementation project(path: ':mailbox-core', configuration: 'default') testImplementation project(path: ':mailbox-core', configuration: 'default')
testImplementation project(path: ':mailbox-lib', configuration: 'default') testImplementation project(path: ':mailbox-lib', configuration: 'default')
testImplementation project(path: ':bramble-api', configuration: 'testOutput')
testImplementation project(path: ':bramble-core', configuration: 'testOutput')
testImplementation project(path: ':briar-core', configuration: 'testOutput')
testImplementation "junit:junit:$junit_version" testImplementation "junit:junit:$junit_version"
testImplementation "ch.qos.logback:logback-classic:1.2.11" testImplementation "ch.qos.logback:logback-classic:1.2.11"

View File

@@ -15,28 +15,29 @@ import org.briarproject.bramble.api.mailbox.MailboxPairingState;
import org.briarproject.bramble.api.mailbox.MailboxPairingTask; import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
import org.briarproject.bramble.api.mailbox.MailboxProperties; import org.briarproject.bramble.api.mailbox.MailboxProperties;
import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox; import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.properties.TransportProperties;
import org.briarproject.bramble.test.BrambleIntegrationTest; import org.briarproject.bramble.test.BrambleIntegrationTest;
import org.briarproject.bramble.test.TestDatabaseConfigModule; import org.briarproject.bramble.test.TestDatabaseConfigModule;
import org.briarproject.bramble.test.TestLogFormatter; import org.briarproject.bramble.test.TestLogFormatter;
import org.briarproject.bramble.test.TestThreadFactoryModule; import org.briarproject.bramble.test.TestThreadFactoryModule;
import org.briarproject.briar.api.messaging.PrivateMessage;
import org.briarproject.mailbox.lib.AbstractMailbox; import org.briarproject.mailbox.lib.AbstractMailbox;
import org.briarproject.mailbox.lib.TestMailbox; import org.briarproject.mailbox.lib.TestMailbox;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import java.io.File; import java.io.File;
import java.util.Map;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import static java.util.Collections.emptyList;
import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.concurrent.TimeUnit.SECONDS;
import static org.briarproject.bramble.api.mailbox.MailboxAuthToken.fromString; import static org.briarproject.bramble.api.mailbox.MailboxAuthToken.fromString;
import static org.briarproject.bramble.mailbox.MailboxIntegrationTestComponent.Helper.injectEagerSingletons; import static org.briarproject.bramble.mailbox.MailboxIntegrationTestComponent.Helper.injectEagerSingletons;
import static org.briarproject.bramble.mailbox.MailboxIntegrationTestUtils.createMailboxApi; import static org.briarproject.bramble.mailbox.MailboxIntegrationTestUtils.createMailboxApi;
import static org.briarproject.bramble.mailbox.MailboxTestUtils.getQrCodePayload; import static org.briarproject.bramble.mailbox.MailboxTestUtils.getQrCodePayload;
import static org.briarproject.bramble.test.TestUtils.getSecretKey; import static org.briarproject.bramble.test.TestUtils.getSecretKey;
import static org.briarproject.briar.api.autodelete.AutoDeleteConstants.NO_AUTO_DELETE_TIMER; import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
@@ -49,6 +50,7 @@ abstract class AbstractMailboxIntegrationTest
TestLogFormatter.use(); TestLogFormatter.use();
} }
private final TransportId transportId = new TransportId(getRandomString(4));
private final File dir1 = new File(testDir, "alice"); private final File dir1 = new File(testDir, "alice");
private final File dir2 = new File(testDir, "bob"); private final File dir2 = new File(testDir, "bob");
private final SecretKey rootKey = getSecretKey(); private final SecretKey rootKey = getSecretKey();
@@ -185,13 +187,12 @@ abstract class AbstractMailboxIntegrationTest
return update.getMailboxProperties(); return update.getMailboxProperties();
} }
void sendMessage(MailboxIntegrationTestComponent from, void broadcastMessage(MailboxIntegrationTestComponent from)
ContactId toContactId, String text) throws Exception { throws Exception {
GroupId g = from.getMessagingManager().getConversationId(toContactId); TransportProperties p = from.getTransportPropertyManager()
PrivateMessage m = from.getPrivateMessageFactory().createPrivateMessage( .getLocalProperties(transportId);
g, from.getClock().currentTimeMillis(), text, emptyList(), p.put(getRandomString(23), getRandomString(8));
NO_AUTO_DELETE_TIMER); from.getTransportPropertyManager().mergeLocalProperties(transportId, p);
from.getMessagingManager().addLocalMessage(m);
} }
void sync1To2(int num, boolean valid) throws Exception { void sync1To2(int num, boolean valid) throws Exception {
@@ -210,4 +211,11 @@ abstract class AbstractMailboxIntegrationTest
sendAcks(c2, c1, contact1From2.getId(), num); sendAcks(c2, c1, contact1From2.getId(), num);
} }
void assertNumMessages(MailboxIntegrationTestComponent c,
ContactId contactId, int num) throws DbException {
Map<ContactId, TransportProperties> p = c.getTransportPropertyManager()
.getRemoteProperties(transportId);
assertEquals(num, p.get(contactId).size());
}
} }

View File

@@ -38,7 +38,7 @@ public class MailboxIntegrationTest extends AbstractMailboxIntegrationTest {
assertNotNull(props2.getInboxId()); assertNotNull(props2.getInboxId());
// send message and wait for it to arrive via mailbox // send message and wait for it to arrive via mailbox
sendMessage(c1, contact2From1.getId(), "test"); broadcastMessage(c1);
// wait until file arrived on mailbox // wait until file arrived on mailbox
retryUntilSuccessOrTimeout(5_000, 500, () -> { retryUntilSuccessOrTimeout(5_000, 500, () -> {
@@ -50,10 +50,8 @@ public class MailboxIntegrationTest extends AbstractMailboxIntegrationTest {
// this might require 2nd download cycle after Tor reachability period // this might require 2nd download cycle after Tor reachability period
awaitPendingMessageDelivery(1); awaitPendingMessageDelivery(1);
// assert that private message arrived for c2 // assert that message arrived for c2
int size = getFromDb(c2, txn -> c2.getMessagingManager() assertNumMessages(c2, contact1From2.getId(), 1);
.getMessageHeaders(txn, contact1From2.getId()).size());
assertEquals(1, size);
// all files were deleted from mailbox // all files were deleted from mailbox
assertEquals(0, api.getFiles(props2, props2.getInboxId()).size()); assertEquals(0, api.getFiles(props2, props2.getInboxId()).size());

View File

@@ -2,18 +2,20 @@ package org.briarproject.bramble.mailbox;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.identity.AuthorFactory;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.mailbox.MailboxManager; import org.briarproject.bramble.api.mailbox.MailboxManager;
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager; import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager; import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
import org.briarproject.bramble.api.plugin.PluginManager; import org.briarproject.bramble.api.properties.TransportPropertyManager;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.BrambleIntegrationTestComponent;
import org.briarproject.bramble.test.MailboxTestPluginConfigModule; import org.briarproject.bramble.test.MailboxTestPluginConfigModule;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
import org.briarproject.bramble.test.TestSocksModule; import org.briarproject.bramble.test.TestSocksModule;
import org.briarproject.briar.BriarCoreModule;
import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.test.BriarIntegrationTestComponent;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -23,14 +25,23 @@ import dagger.Component;
@Component(modules = { @Component(modules = {
BrambleCoreIntegrationTestModule.class, BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
BriarCoreModule.class,
TestModularMailboxModule.class, TestModularMailboxModule.class,
MailboxTestPluginConfigModule.class, MailboxTestPluginConfigModule.class,
TestSocksModule.class, TestSocksModule.class,
TestDnsModule.class, TestDnsModule.class,
}) })
interface MailboxIntegrationTestComponent extends interface MailboxIntegrationTestComponent extends
BriarIntegrationTestComponent { BrambleIntegrationTestComponent {
LifecycleManager getLifecycleManager();
DatabaseComponent getDatabaseComponent();
ContactManager getContactManager();
AuthorFactory getAuthorFactory();
Clock getClock();
MailboxManager getMailboxManager(); MailboxManager getMailboxManager();
@@ -38,15 +49,13 @@ interface MailboxIntegrationTestComponent extends
MailboxUpdateManager getMailboxUpdateManager(); MailboxUpdateManager getMailboxUpdateManager();
PluginManager getPluginManager(); TransportPropertyManager getTransportPropertyManager();
class Helper { class Helper {
static void injectEagerSingletons( static void injectEagerSingletons(
MailboxIntegrationTestComponent c) { MailboxIntegrationTestComponent c) {
BrambleCoreIntegrationTestEagerSingletons.Helper BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(c); .injectEagerSingletons(c);
c.inject(new IdentityModule.EagerSingletons());
c.inject(new MessagingModule.EagerSingletons());
} }
} }
} }