mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 20:29:52 +01:00
Use client versioning for private groups.
This commit is contained in:
@@ -10,7 +10,9 @@ import org.briarproject.bramble.api.db.Transaction;
|
||||
import org.briarproject.bramble.api.identity.Author;
|
||||
import org.briarproject.bramble.api.identity.AuthorId;
|
||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||
import org.briarproject.bramble.api.sync.ClientVersioningManager;
|
||||
import org.briarproject.bramble.api.sync.Group;
|
||||
import org.briarproject.bramble.api.sync.Group.Visibility;
|
||||
import org.briarproject.bramble.api.sync.GroupId;
|
||||
import org.briarproject.bramble.api.sync.Message;
|
||||
import org.briarproject.bramble.api.sync.MessageId;
|
||||
@@ -24,6 +26,7 @@ import org.briarproject.briar.api.privategroup.PrivateGroupManager;
|
||||
import org.jmock.Expectations;
|
||||
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_SIGNATURE_LENGTH;
|
||||
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
|
||||
import static org.briarproject.bramble.test.TestUtils.getAuthor;
|
||||
import static org.briarproject.bramble.test.TestUtils.getGroup;
|
||||
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
|
||||
@@ -47,6 +50,8 @@ public abstract class AbstractProtocolEngineTest extends BrambleMockTestCase {
|
||||
context.mock(DatabaseComponent.class);
|
||||
protected final ClientHelper clientHelper =
|
||||
context.mock(ClientHelper.class);
|
||||
protected final ClientVersioningManager clientVersioningManager =
|
||||
context.mock(ClientVersioningManager.class);
|
||||
protected final PrivateGroupFactory privateGroupFactory =
|
||||
context.mock(PrivateGroupFactory.class);
|
||||
protected final PrivateGroupManager privateGroupManager =
|
||||
@@ -181,10 +186,13 @@ public abstract class AbstractProtocolEngineTest extends BrambleMockTestCase {
|
||||
}});
|
||||
}
|
||||
|
||||
protected void expectSetPrivateGroupVisibility(Group.Visibility v)
|
||||
protected void expectSetPrivateGroupVisibility(Visibility v)
|
||||
throws Exception {
|
||||
expectGetContactId();
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(clientVersioningManager).getClientVisibility(txn, contactId,
|
||||
CLIENT_ID, CLIENT_VERSION);
|
||||
will(returnValue(SHARED));
|
||||
oneOf(db).setGroupVisibility(txn, contactId, privateGroupId, v);
|
||||
}});
|
||||
}
|
||||
|
||||
@@ -19,9 +19,10 @@ import static org.junit.Assert.assertEquals;
|
||||
public class CreatorProtocolEngineTest extends AbstractProtocolEngineTest {
|
||||
|
||||
private final CreatorProtocolEngine engine =
|
||||
new CreatorProtocolEngine(db, clientHelper, privateGroupManager,
|
||||
privateGroupFactory, groupMessageFactory, identityManager,
|
||||
messageParser, messageEncoder, messageTracker, clock);
|
||||
new CreatorProtocolEngine(db, clientHelper, clientVersioningManager,
|
||||
privateGroupManager, privateGroupFactory,
|
||||
groupMessageFactory, identityManager, messageParser,
|
||||
messageEncoder, messageTracker, clock);
|
||||
|
||||
private CreatorSession getDefaultSession(CreatorState state) {
|
||||
return new CreatorSession(contactGroupId, privateGroupId,
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.briarproject.bramble.api.db.Metadata;
|
||||
import org.briarproject.bramble.api.db.Transaction;
|
||||
import org.briarproject.bramble.api.identity.Author;
|
||||
import org.briarproject.bramble.api.identity.AuthorId;
|
||||
import org.briarproject.bramble.api.sync.ClientVersioningManager;
|
||||
import org.briarproject.bramble.api.sync.Group;
|
||||
import org.briarproject.bramble.api.sync.GroupId;
|
||||
import org.briarproject.bramble.api.sync.Message;
|
||||
@@ -69,6 +70,8 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
|
||||
|
||||
private final DatabaseComponent db = context.mock(DatabaseComponent.class);
|
||||
private final ClientHelper clientHelper = context.mock(ClientHelper.class);
|
||||
private final ClientVersioningManager clientVersioningManager =
|
||||
context.mock(ClientVersioningManager.class);
|
||||
private final ContactGroupFactory contactGroupFactory =
|
||||
context.mock(ContactGroupFactory.class);
|
||||
private final PrivateGroupFactory privateGroupFactory =
|
||||
@@ -140,11 +143,11 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
|
||||
}});
|
||||
MetadataParser metadataParser = context.mock(MetadataParser.class);
|
||||
MessageTracker messageTracker = context.mock(MessageTracker.class);
|
||||
groupInvitationManager =
|
||||
new GroupInvitationManagerImpl(db, clientHelper, metadataParser,
|
||||
messageTracker, contactGroupFactory,
|
||||
privateGroupFactory, privateGroupManager, messageParser,
|
||||
sessionParser, sessionEncoder, engineFactory);
|
||||
groupInvitationManager = new GroupInvitationManagerImpl(db,
|
||||
clientHelper, clientVersioningManager, metadataParser,
|
||||
messageTracker, contactGroupFactory, privateGroupFactory,
|
||||
privateGroupManager, messageParser, sessionParser,
|
||||
sessionEncoder, engineFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -184,6 +187,9 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
|
||||
CLIENT_VERSION, c);
|
||||
will(returnValue(contactGroup));
|
||||
oneOf(db).addGroup(txn, contactGroup);
|
||||
oneOf(clientVersioningManager).getClientVisibility(txn, contactId,
|
||||
CLIENT_ID, CLIENT_VERSION);
|
||||
will(returnValue(SHARED));
|
||||
oneOf(db).setGroupVisibility(txn, c.getId(), contactGroup.getId(),
|
||||
SHARED);
|
||||
oneOf(clientHelper)
|
||||
|
||||
@@ -38,9 +38,10 @@ import static org.junit.Assert.assertTrue;
|
||||
public class InviteeProtocolEngineTest extends AbstractProtocolEngineTest {
|
||||
|
||||
private final InviteeProtocolEngine engine =
|
||||
new InviteeProtocolEngine(db, clientHelper, privateGroupManager,
|
||||
privateGroupFactory, groupMessageFactory, identityManager,
|
||||
messageParser, messageEncoder, messageTracker, clock);
|
||||
new InviteeProtocolEngine(db, clientHelper, clientVersioningManager,
|
||||
privateGroupManager, privateGroupFactory,
|
||||
groupMessageFactory, identityManager, messageParser,
|
||||
messageEncoder, messageTracker, clock);
|
||||
private final LocalAuthor localAuthor = getLocalAuthor();
|
||||
|
||||
private InviteeSession getDefaultSession(InviteeState state) {
|
||||
@@ -238,6 +239,7 @@ public class InviteeProtocolEngineTest extends AbstractProtocolEngineTest {
|
||||
@Test
|
||||
public void testOnLeaveActionFromAccepted() throws Exception {
|
||||
expectSendLeaveMessage(false);
|
||||
expectSetPrivateGroupVisibility(INVISIBLE);
|
||||
InviteeSession session = getDefaultSession(ACCEPTED);
|
||||
InviteeSession newSession = engine.onLeaveAction(txn, session);
|
||||
|
||||
@@ -249,6 +251,7 @@ public class InviteeProtocolEngineTest extends AbstractProtocolEngineTest {
|
||||
@Test
|
||||
public void testOnLeaveActionFromJoined() throws Exception {
|
||||
expectSendLeaveMessage(false);
|
||||
expectSetPrivateGroupVisibility(INVISIBLE);
|
||||
InviteeSession session = getDefaultSession(JOINED);
|
||||
InviteeSession newSession = engine.onLeaveAction(txn, session);
|
||||
|
||||
|
||||
@@ -24,9 +24,10 @@ import static org.junit.Assert.assertTrue;
|
||||
public class PeerProtocolEngineTest extends AbstractProtocolEngineTest {
|
||||
|
||||
private final PeerProtocolEngine engine =
|
||||
new PeerProtocolEngine(db, clientHelper, privateGroupManager,
|
||||
privateGroupFactory, groupMessageFactory, identityManager,
|
||||
messageParser, messageEncoder, messageTracker, clock);
|
||||
new PeerProtocolEngine(db, clientHelper, clientVersioningManager,
|
||||
privateGroupManager, privateGroupFactory,
|
||||
groupMessageFactory, identityManager, messageParser,
|
||||
messageEncoder, messageTracker, clock);
|
||||
|
||||
private PeerSession getDefaultSession(PeerState state) {
|
||||
return new PeerSession(contactGroupId, privateGroupId,
|
||||
|
||||
Reference in New Issue
Block a user