Skip to content
Snippets Groups Projects
Verified Commit b7e1a987 authored by Torsten Grote's avatar Torsten Grote
Browse files

Don't depend on briar for mailbox integration tests

Use transport properties instead of sending private messages
parent a705caa5
No related branches found
No related tags found
No related merge requests found
......@@ -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"
......
......@@ -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());
}
}
......@@ -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());
......
......@@ -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());
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment