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 {
testImplementation project(path: ':bramble-api', configuration: 'default')
testImplementation project(path: ':bramble-api', configuration: 'testOutput')
testImplementation project(path: ':bramble-core', configuration: 'default')
testImplementation project(path: ':briar-api', configuration: 'default')
testImplementation project(path: ':briar-core', configuration: 'default')
testImplementation project(path: ':bramble-core', configuration: 'testOutput')
testImplementation project(path: ':mailbox-core', 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 "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.MailboxProperties;
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.TestDatabaseConfigModule;
import org.briarproject.bramble.test.TestLogFormatter;
import org.briarproject.bramble.test.TestThreadFactoryModule;
import org.briarproject.briar.api.messaging.PrivateMessage;
import org.briarproject.mailbox.lib.AbstractMailbox;
import org.briarproject.mailbox.lib.TestMailbox;
import org.junit.After;
import org.junit.Before;
import java.io.File;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import static java.util.Collections.emptyList;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.briarproject.bramble.api.mailbox.MailboxAuthToken.fromString;
import static org.briarproject.bramble.mailbox.MailboxIntegrationTestComponent.Helper.injectEagerSingletons;
import static org.briarproject.bramble.mailbox.MailboxIntegrationTestUtils.createMailboxApi;
import static org.briarproject.bramble.mailbox.MailboxTestUtils.getQrCodePayload;
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.fail;
@@ -49,6 +50,7 @@ abstract class AbstractMailboxIntegrationTest
TestLogFormatter.use();
}
private final TransportId transportId = new TransportId(getRandomString(4));
private final File dir1 = new File(testDir, "alice");
private final File dir2 = new File(testDir, "bob");
private final SecretKey rootKey = getSecretKey();
@@ -185,13 +187,12 @@ abstract class AbstractMailboxIntegrationTest
return update.getMailboxProperties();
}
void sendMessage(MailboxIntegrationTestComponent from,
ContactId toContactId, String text) throws Exception {
GroupId g = from.getMessagingManager().getConversationId(toContactId);
PrivateMessage m = from.getPrivateMessageFactory().createPrivateMessage(
g, from.getClock().currentTimeMillis(), text, emptyList(),
NO_AUTO_DELETE_TIMER);
from.getMessagingManager().addLocalMessage(m);
void broadcastMessage(MailboxIntegrationTestComponent from)
throws Exception {
TransportProperties p = from.getTransportPropertyManager()
.getLocalProperties(transportId);
p.put(getRandomString(23), getRandomString(8));
from.getTransportPropertyManager().mergeLocalProperties(transportId, p);
}
void sync1To2(int num, boolean valid) throws Exception {
@@ -210,4 +211,11 @@ abstract class AbstractMailboxIntegrationTest
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());
// send message and wait for it to arrive via mailbox
sendMessage(c1, contact2From1.getId(), "test");
broadcastMessage(c1);
// wait until file arrived on mailbox
retryUntilSuccessOrTimeout(5_000, 500, () -> {
@@ -50,10 +50,8 @@ public class MailboxIntegrationTest extends AbstractMailboxIntegrationTest {
// this might require 2nd download cycle after Tor reachability period
awaitPendingMessageDelivery(1);
// assert that private message arrived for c2
int size = getFromDb(c2, txn -> c2.getMessagingManager()
.getMessageHeaders(txn, contact1From2.getId()).size());
assertEquals(1, size);
// assert that message arrived for c2
assertNumMessages(c2, contact1From2.getId(), 1);
// all files were deleted from mailbox
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.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.MailboxSettingsManager;
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.BrambleIntegrationTestComponent;
import org.briarproject.bramble.test.MailboxTestPluginConfigModule;
import org.briarproject.bramble.test.TestDnsModule;
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;
@@ -23,14 +25,23 @@ import dagger.Component;
@Component(modules = {
BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class,
BriarCoreModule.class,
TestModularMailboxModule.class,
MailboxTestPluginConfigModule.class,
TestSocksModule.class,
TestDnsModule.class,
})
interface MailboxIntegrationTestComponent extends
BriarIntegrationTestComponent {
BrambleIntegrationTestComponent {
LifecycleManager getLifecycleManager();
DatabaseComponent getDatabaseComponent();
ContactManager getContactManager();
AuthorFactory getAuthorFactory();
Clock getClock();
MailboxManager getMailboxManager();
@@ -38,15 +49,13 @@ interface MailboxIntegrationTestComponent extends
MailboxUpdateManager getMailboxUpdateManager();
PluginManager getPluginManager();
TransportPropertyManager getTransportPropertyManager();
class Helper {
static void injectEagerSingletons(
MailboxIntegrationTestComponent c) {
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(c);
c.inject(new IdentityModule.EagerSingletons());
c.inject(new MessagingModule.EagerSingletons());
}
}
}