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