mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Set our own mailbox status right after pairing
This commit is contained in:
@@ -6,6 +6,7 @@ import org.briarproject.bramble.api.event.EventExecutor;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@@ -19,6 +20,7 @@ class MailboxPairingTaskFactoryImpl implements MailboxPairingTaskFactory {
|
||||
private final Executor eventExecutor;
|
||||
private final TransactionManager db;
|
||||
private final CryptoComponent crypto;
|
||||
private final Clock clock;
|
||||
private final MailboxApi api;
|
||||
private final MailboxSettingsManager mailboxSettingsManager;
|
||||
|
||||
@@ -27,11 +29,13 @@ class MailboxPairingTaskFactoryImpl implements MailboxPairingTaskFactory {
|
||||
@EventExecutor Executor eventExecutor,
|
||||
TransactionManager db,
|
||||
CryptoComponent crypto,
|
||||
Clock clock,
|
||||
MailboxApi api,
|
||||
MailboxSettingsManager mailboxSettingsManager) {
|
||||
this.eventExecutor = eventExecutor;
|
||||
this.db = db;
|
||||
this.crypto = crypto;
|
||||
this.clock = clock;
|
||||
this.api = api;
|
||||
this.mailboxSettingsManager = mailboxSettingsManager;
|
||||
}
|
||||
@@ -39,6 +43,6 @@ class MailboxPairingTaskFactoryImpl implements MailboxPairingTaskFactory {
|
||||
@Override
|
||||
public MailboxPairingTask createPairingTask(String qrCodePayload) {
|
||||
return new MailboxPairingTaskImpl(qrCodePayload, eventExecutor, db,
|
||||
crypto, api, mailboxSettingsManager);
|
||||
crypto, clock, api, mailboxSettingsManager);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxProperties;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
|
||||
import org.briarproject.bramble.mailbox.MailboxApi.MailboxAlreadyPairedException;
|
||||
|
||||
@@ -44,6 +45,7 @@ class MailboxPairingTaskImpl implements MailboxPairingTask {
|
||||
private final Executor eventExecutor;
|
||||
private final TransactionManager db;
|
||||
private final CryptoComponent crypto;
|
||||
private final Clock clock;
|
||||
private final MailboxApi api;
|
||||
private final MailboxSettingsManager mailboxSettingsManager;
|
||||
|
||||
@@ -59,12 +61,14 @@ class MailboxPairingTaskImpl implements MailboxPairingTask {
|
||||
@EventExecutor Executor eventExecutor,
|
||||
TransactionManager db,
|
||||
CryptoComponent crypto,
|
||||
Clock clock,
|
||||
MailboxApi api,
|
||||
MailboxSettingsManager mailboxSettingsManager) {
|
||||
this.payload = payload;
|
||||
this.eventExecutor = eventExecutor;
|
||||
this.db = db;
|
||||
this.crypto = crypto;
|
||||
this.clock = clock;
|
||||
this.api = api;
|
||||
this.mailboxSettingsManager = mailboxSettingsManager;
|
||||
state = new MailboxPairingState.QrCodeReceived(payload);
|
||||
@@ -108,10 +112,13 @@ class MailboxPairingTaskImpl implements MailboxPairingTask {
|
||||
MailboxAuthToken ownerToken = api.setup(mailboxProperties);
|
||||
MailboxProperties ownerProperties = new MailboxProperties(
|
||||
mailboxProperties.getBaseUrl(), ownerToken, true);
|
||||
db.transaction(false, txn -> mailboxSettingsManager
|
||||
.setOwnMailboxProperties(txn, ownerProperties));
|
||||
long time = clock.currentTimeMillis();
|
||||
db.transaction(false, txn -> {
|
||||
mailboxSettingsManager
|
||||
.setOwnMailboxProperties(txn, ownerProperties);
|
||||
mailboxSettingsManager.recordSuccessfulConnection(txn, time);
|
||||
});
|
||||
setState(new MailboxPairingState.Paired());
|
||||
// TODO already do mailboxSettingsManager.setOwnMailboxStatus() ?
|
||||
}
|
||||
|
||||
private void onMailboxError(Exception e, MailboxPairingState state) {
|
||||
|
||||
@@ -9,6 +9,7 @@ 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.MailboxSettingsManager;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.bramble.test.BrambleMockTestCase;
|
||||
import org.briarproject.bramble.test.DbExpectations;
|
||||
import org.briarproject.bramble.test.ImmediateExecutor;
|
||||
@@ -35,11 +36,12 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase {
|
||||
private final TransactionManager db =
|
||||
context.mock(TransactionManager.class);
|
||||
private final CryptoComponent crypto = context.mock(CryptoComponent.class);
|
||||
private final Clock clock = context.mock(Clock.class);
|
||||
private final MailboxApi api = context.mock(MailboxApi.class);
|
||||
private final MailboxSettingsManager mailboxSettingsManager =
|
||||
context.mock(MailboxSettingsManager.class);
|
||||
private final MailboxPairingTaskFactory factory =
|
||||
new MailboxPairingTaskFactoryImpl(executor, db, crypto, api,
|
||||
new MailboxPairingTaskFactoryImpl(executor, db, crypto, clock, api,
|
||||
mailboxSettingsManager);
|
||||
|
||||
private final String onion = getRandomString(56);
|
||||
@@ -50,6 +52,7 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase {
|
||||
private final MailboxAuthToken ownerToken =
|
||||
new MailboxAuthToken(getRandomId());
|
||||
private final String validPayload = getValidPayload();
|
||||
private final long time = System.currentTimeMillis();
|
||||
private final MailboxProperties setupProperties =
|
||||
new MailboxProperties(onionAddress, setupToken, true);
|
||||
private final MailboxProperties ownerProperties =
|
||||
@@ -88,12 +91,15 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase {
|
||||
will(returnValue(onion));
|
||||
oneOf(api).setup(with(matches(setupProperties)));
|
||||
will(returnValue(ownerToken));
|
||||
oneOf(clock).currentTimeMillis();
|
||||
will(returnValue(time));
|
||||
}});
|
||||
Transaction txn = new Transaction(null, false);
|
||||
context.checking(new DbExpectations() {{
|
||||
oneOf(db).transaction(with(false), withDbRunnable(txn));
|
||||
oneOf(mailboxSettingsManager).setOwnMailboxProperties(
|
||||
with(txn), with(matches(ownerProperties)));
|
||||
oneOf(mailboxSettingsManager).recordSuccessfulConnection(txn, time);
|
||||
}});
|
||||
|
||||
AtomicInteger i = new AtomicInteger(0);
|
||||
@@ -153,6 +159,8 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase {
|
||||
will(returnValue(onion));
|
||||
oneOf(api).setup(with(matches(setupProperties)));
|
||||
will(returnValue(ownerToken));
|
||||
oneOf(clock).currentTimeMillis();
|
||||
will(returnValue(time));
|
||||
}});
|
||||
Transaction txn = new Transaction(null, false);
|
||||
context.checking(new DbExpectations() {{
|
||||
|
||||
Reference in New Issue
Block a user