Allow sync clients to defer delivery of messages.

This commit is contained in:
akwizgran
2021-05-31 17:12:07 +01:00
committed by Torsten Grote
parent f82c2517fb
commit 12245d960c
19 changed files with 219 additions and 143 deletions

View File

@@ -44,6 +44,7 @@ import javax.annotation.Nullable;
import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE;
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
import static org.briarproject.bramble.api.sync.Group.Visibility.VISIBLE;
import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.ACCEPT_DO_NOT_SHARE;
import static org.briarproject.bramble.test.TestUtils.getContact;
import static org.briarproject.bramble.test.TestUtils.getGroup;
import static org.briarproject.bramble.test.TestUtils.getLocalAuthor;
@@ -59,7 +60,6 @@ import static org.briarproject.briar.api.avatar.AvatarManager.MAJOR_VERSION;
import static org.briarproject.briar.avatar.AvatarConstants.GROUP_KEY_CONTACT_ID;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_KEY_VERSION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
public class AvatarManagerImplTest extends BrambleMockTestCase {
@@ -196,7 +196,8 @@ public class AvatarManagerImplTest extends BrambleMockTestCase {
null);
expectGetContactId(txn, contactGroupId, contact.getId());
assertFalse(avatarManager.incomingMessage(txn, contactMsg, meta));
assertEquals(ACCEPT_DO_NOT_SHARE,
avatarManager.incomingMessage(txn, contactMsg, meta));
assertEquals(1, txn.getActions().size());
Event event = ((EventAction) txn.getActions().get(0)).getEvent();
AvatarUpdatedEvent avatarUpdatedEvent = (AvatarUpdatedEvent) event;
@@ -230,7 +231,8 @@ public class AvatarManagerImplTest extends BrambleMockTestCase {
expectFindLatest(txn, contactGroupId, latestMsgId, latest);
expectGetContactId(txn, contactGroupId, contact.getId());
assertFalse(avatarManager.incomingMessage(txn, contactMsg, meta));
assertEquals(ACCEPT_DO_NOT_SHARE,
avatarManager.incomingMessage(txn, contactMsg, meta));
// event to broadcast
assertEquals(1, txn.getActions().size());
@@ -260,7 +262,8 @@ public class AvatarManagerImplTest extends BrambleMockTestCase {
}});
expectFindLatest(txn, contactGroupId, latestMsgId, latest);
assertFalse(avatarManager.incomingMessage(txn, contactMsg, meta));
assertEquals(ACCEPT_DO_NOT_SHARE,
avatarManager.incomingMessage(txn, contactMsg, meta));
// no event to broadcast
assertEquals(0, txn.getActions().size());
@@ -271,7 +274,8 @@ public class AvatarManagerImplTest extends BrambleMockTestCase {
throws DbException, InvalidMessageException {
Transaction txn = new Transaction(null, false);
expectGetOurGroup(txn);
avatarManager.incomingMessage(txn, ourMsg, meta);
assertEquals(ACCEPT_DO_NOT_SHARE,
avatarManager.incomingMessage(txn, ourMsg, meta));
}
@Test

View File

@@ -33,6 +33,7 @@ import org.jmock.Expectations;
import org.jmock.Mockery;
import org.junit.Test;
import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.ACCEPT_SHARE;
import static org.briarproject.bramble.test.TestUtils.getContact;
import static org.briarproject.bramble.test.TestUtils.getGroup;
import static org.briarproject.bramble.test.TestUtils.getLocalAuthor;
@@ -184,7 +185,8 @@ public class BlogManagerImplTest extends BriarTestCase {
will(returnValue(verifiedInfo));
}});
blogManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_SHARE,
blogManager.incomingMessage(txn, message, body, meta));
context.assertIsSatisfied();
assertEquals(1, txn.getActions().size());
@@ -225,7 +227,8 @@ public class BlogManagerImplTest extends BriarTestCase {
will(returnValue(rssLocalAuthor));
}});
blogManager.incomingMessage(txn, rssMessage, body, meta);
assertEquals(ACCEPT_SHARE,
blogManager.incomingMessage(txn, rssMessage, body, meta));
context.assertIsSatisfied();
assertEquals(1, txn.getActions().size());

View File

@@ -47,6 +47,7 @@ import javax.annotation.Nullable;
import static java.util.Arrays.asList;
import static junit.framework.TestCase.fail;
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.ACCEPT_DO_NOT_SHARE;
import static org.briarproject.bramble.test.TestUtils.getAuthor;
import static org.briarproject.bramble.test.TestUtils.getContact;
import static org.briarproject.bramble.test.TestUtils.getGroup;
@@ -275,43 +276,50 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
@Test
public void testIncomingFirstInviteMessage() throws Exception {
expectFirstIncomingMessage(Role.INVITEE, INVITE);
groupInvitationManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_DO_NOT_SHARE, groupInvitationManager
.incomingMessage(txn, message, body, meta));
}
@Test
public void testIncomingFirstJoinMessage() throws Exception {
expectFirstIncomingMessage(Role.PEER, JOIN);
groupInvitationManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_DO_NOT_SHARE, groupInvitationManager
.incomingMessage(txn, message, body, meta));
}
@Test
public void testIncomingInviteMessage() throws Exception {
expectIncomingMessage(Role.INVITEE, INVITE);
groupInvitationManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_DO_NOT_SHARE, groupInvitationManager
.incomingMessage(txn, message, body, meta));
}
@Test
public void testIncomingJoinMessage() throws Exception {
expectIncomingMessage(Role.INVITEE, JOIN);
groupInvitationManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_DO_NOT_SHARE, groupInvitationManager
.incomingMessage(txn, message, body, meta));
}
@Test
public void testIncomingJoinMessageForCreator() throws Exception {
expectIncomingMessage(Role.CREATOR, JOIN);
groupInvitationManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_DO_NOT_SHARE, groupInvitationManager
.incomingMessage(txn, message, body, meta));
}
@Test
public void testIncomingLeaveMessage() throws Exception {
expectIncomingMessage(Role.INVITEE, LEAVE);
groupInvitationManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_DO_NOT_SHARE, groupInvitationManager
.incomingMessage(txn, message, body, meta));
}
@Test
public void testIncomingAbortMessage() throws Exception {
expectIncomingMessage(Role.INVITEE, ABORT);
groupInvitationManager.incomingMessage(txn, message, body, meta);
assertEquals(ACCEPT_DO_NOT_SHARE, groupInvitationManager
.incomingMessage(txn, message, body, meta));
}
private void expectFirstIncomingMessage(Role role, MessageType type)