[core] fix wrong order of message status flags in conversation headers

This commit is contained in:
Torsten Grote
2018-11-15 14:39:05 -02:00
parent f4b06e1fb3
commit 3053e3cfa7
23 changed files with 117 additions and 42 deletions

View File

@@ -453,7 +453,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
authorInfos.put(author.getId(), authorInfo);
}
return new IntroductionRequest(m, contactGroupId, meta.getTimestamp(),
meta.isLocal(), status.isSent(), status.isSeen(), meta.isRead(),
meta.isLocal(), meta.isRead(), status.isSent(), status.isSeen(),
sessionId, author, text, !meta.isAvailableToAnswer(),
authorInfo);
}
@@ -487,7 +487,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
authorInfos.put(author.getId(), authorInfo);
}
return new IntroductionResponse(m, contactGroupId, meta.getTimestamp(),
meta.isLocal(), status.isSent(), status.isSeen(), meta.isRead(),
meta.isLocal(), meta.isRead(), status.isSent(), status.isSeen(),
sessionId, accept, author, authorInfo, role);
}

View File

@@ -414,8 +414,8 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
boolean canBeOpened = meta.wasAccepted() &&
db.containsGroup(txn, invite.getPrivateGroupId());
return new GroupInvitationRequest(m, contactGroupId,
meta.getTimestamp(), meta.isLocal(), status.isSent(),
status.isSeen(), meta.isRead(), sessionId, pg,
meta.getTimestamp(), meta.isLocal(), meta.isRead(),
status.isSent(), status.isSeen(), sessionId, pg,
invite.getText(), meta.isAvailableToAnswer(), canBeOpened);
}
@@ -424,10 +424,9 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
MessageStatus status, boolean accept) {
SessionId sessionId = getSessionId(meta.getPrivateGroupId());
return new GroupInvitationResponse(m, contactGroupId,
meta.getTimestamp(), meta.isLocal(), status.isSent(),
status.isSeen(), meta.isRead(), sessionId, accept,
meta.getPrivateGroupId()
);
meta.getTimestamp(), meta.isLocal(), meta.isRead(),
status.isSent(), status.isSeen(), sessionId, accept,
meta.getPrivateGroupId());
}
@Override

View File

@@ -329,7 +329,7 @@ class InviteeProtocolEngine extends AbstractProtocolEngine<InviteeSession> {
PrivateGroup pg) {
SessionId sessionId = new SessionId(m.getPrivateGroupId().getBytes());
return new GroupInvitationRequest(m.getId(), m.getContactGroupId(),
m.getTimestamp(), false, false, true, false, sessionId, pg,
m.getTimestamp(), false, false, false, false, sessionId, pg,
m.getText(), true, false);
}

View File

@@ -23,7 +23,7 @@ public class BlogInvitationFactoryImpl
ContactId c, boolean available, boolean canBeOpened) {
SessionId sessionId = new SessionId(m.getShareableId().getBytes());
return new BlogInvitationRequest(m.getId(), m.getContactGroupId(),
m.getTimestamp(), local, sent, seen, read, sessionId,
m.getTimestamp(), local, read, sent, seen, sessionId,
m.getShareable(), m.getText(), available, canBeOpened);
}
@@ -32,8 +32,8 @@ public class BlogInvitationFactoryImpl
GroupId contactGroupId, long time, boolean local, boolean sent,
boolean seen, boolean read, boolean accept, GroupId shareableId) {
SessionId sessionId = new SessionId(shareableId.getBytes());
return new BlogInvitationResponse(id, contactGroupId, time, local, sent,
seen, read, sessionId, accept, shareableId);
return new BlogInvitationResponse(id, contactGroupId, time, local, read,
sent, seen, sessionId, accept, shareableId);
}
}

View File

@@ -23,7 +23,7 @@ public class ForumInvitationFactoryImpl
ContactId c, boolean available, boolean canBeOpened) {
SessionId sessionId = new SessionId(m.getShareableId().getBytes());
return new ForumInvitationRequest(m.getId(), m.getContactGroupId(),
m.getTimestamp(), local, sent, seen, read, sessionId,
m.getTimestamp(), local, read, sent, seen, sessionId,
m.getShareable(), m.getText(), available, canBeOpened);
}
@@ -33,7 +33,7 @@ public class ForumInvitationFactoryImpl
boolean seen, boolean read, boolean accept, GroupId shareableId) {
SessionId sessionId = new SessionId(shareableId.getBytes());
return new ForumInvitationResponse(id, contactGroupId, time, local,
sent, seen, read, sessionId, accept, shareableId);
read, sent, seen, sessionId, accept, shareableId);
}
}

View File

@@ -25,6 +25,7 @@ import org.briarproject.bramble.test.TestDatabaseModule;
import org.briarproject.briar.api.client.ProtocolStateException;
import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.conversation.ConversationResponse;
import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.introduction.IntroductionResponse;
@@ -138,6 +139,18 @@ public class IntroductionIntegrationTest
assertGroupCount(messageTracker0, g1.getId(), 1, 0);
assertGroupCount(messageTracker0, g2.getId(), 1, 0);
// check that request message states are correct
Collection<ConversationMessageHeader> messages =
db0.transactionWithResult(true, txn -> introductionManager0
.getMessageHeaders(txn, contactId1From0));
assertEquals(1, messages.size());
assertMessageState(messages.iterator().next(), true, false, false);
messages =
db0.transactionWithResult(true, txn -> introductionManager0
.getMessageHeaders(txn, contactId2From0));
assertEquals(1, messages.size());
assertMessageState(messages.iterator().next(), true, false, false);
// sync first REQUEST message
sync0To1(1, true);
eventWaiter.await(TIMEOUT, 1);
@@ -146,6 +159,17 @@ public class IntroductionIntegrationTest
listener1.getRequest().getName());
assertGroupCount(messageTracker1, g1.getId(), 2, 1);
// check that accept message state is correct
messages =
db1.transactionWithResult(true, txn -> introductionManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size());
for (ConversationMessageHeader h : messages) {
if (h instanceof ConversationResponse) {
assertMessageState(h, true, false, false);
}
}
// sync second REQUEST message
sync0To2(1, true);
eventWaiter.await(TIMEOUT, 1);

View File

@@ -163,14 +163,21 @@ public class GroupInvitationIntegrationTest
long timestamp = clock.currentTimeMillis();
sendInvitation(timestamp, null);
// check that invitation message state is correct
Collection<ConversationMessageHeader> messages =
db0.transactionWithResult(true, txn -> groupInvitationManager0
.getMessageHeaders(txn, contactId1From0));
assertEquals(1, messages.size());
assertMessageState(messages.iterator().next(), true, false, false);
sync0To1(1, true);
assertFalse(groupInvitationManager1.getInvitations().isEmpty());
groupInvitationManager1
.respondToInvitation(contactId0From1, privateGroup0, true);
Collection<ConversationMessageHeader> messages =
db1.transactionWithResult(true, txn -> groupInvitationManager1
messages = db1.transactionWithResult(true,
txn -> groupInvitationManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size());
boolean foundResponse = false;
@@ -178,6 +185,7 @@ public class GroupInvitationIntegrationTest
if (m instanceof GroupInvitationResponse) {
foundResponse = true;
GroupInvitationResponse response = (GroupInvitationResponse) m;
assertMessageState(response, true, false, false);
assertEquals(privateGroup0.getId(), response.getShareableId());
assertTrue(response.wasAccepted());
} else {

View File

@@ -19,6 +19,7 @@ import org.briarproject.briar.api.blog.BlogSharingManager;
import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.conversation.ConversationResponse;
import org.briarproject.briar.test.BriarIntegrationTest;
import org.briarproject.briar.test.BriarIntegrationTestComponent;
import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
@@ -128,12 +129,29 @@ public class BlogSharingIntegrationTest
MAJOR_VERSION, contact1From0).getId();
assertGroupCount(messageTracker0, g, 1, 0);
// check that request message state is correct
Collection<ConversationMessageHeader> messages =
db0.transactionWithResult(true, txn -> blogSharingManager0
.getMessageHeaders(txn, contactId1From0));
assertEquals(1, messages.size());
assertMessageState(messages.iterator().next(), true, false, false);
// sync first request message
sync0To1(1, true);
eventWaiter.await(TIMEOUT, 1);
assertTrue(listener1.requestReceived);
assertGroupCount(messageTracker1, g, 2, 1);
// check that accept message state is correct
messages = db1.transactionWithResult(true, txn -> blogSharingManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size());
for (ConversationMessageHeader h : messages) {
if (h instanceof ConversationResponse) {
assertMessageState(h, true, false, false);
}
}
// sync response back
sync1To0(1, true);
eventWaiter.await(TIMEOUT, 1);

View File

@@ -13,6 +13,7 @@ import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.test.TestDatabaseModule;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.conversation.ConversationResponse;
import org.briarproject.briar.api.forum.Forum;
import org.briarproject.briar.api.forum.ForumInvitationRequest;
import org.briarproject.briar.api.forum.ForumInvitationResponse;
@@ -114,11 +115,28 @@ public class ForumSharingIntegrationTest
.sendInvitation(forum0.getId(), contactId1From0, "Hi!",
clock.currentTimeMillis());
// check that request message state is correct
Collection<ConversationMessageHeader> messages =
db0.transactionWithResult(true, txn -> forumSharingManager0
.getMessageHeaders(txn, contactId1From0));
assertEquals(1, messages.size());
assertMessageState(messages.iterator().next(), true, false, false);
// sync first request message
sync0To1(1, true);
eventWaiter.await(TIMEOUT, 1);
assertTrue(listener1.requestReceived);
// check that accept message state is correct
messages = db1.transactionWithResult(true, txn -> forumSharingManager1
.getMessageHeaders(txn, contactId0From1));
assertEquals(2, messages.size());
for (ConversationMessageHeader h : messages) {
if (h instanceof ConversationResponse) {
assertMessageState(h, true, false, false);
}
}
// sync response back
sync1To0(1, true);
eventWaiter.await(TIMEOUT, 1);

View File

@@ -40,6 +40,7 @@ import org.briarproject.bramble.versioning.VersioningModule;
import org.briarproject.briar.api.blog.BlogFactory;
import org.briarproject.briar.api.blog.BlogPostFactory;
import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.forum.ForumPostFactory;
import org.briarproject.briar.api.privategroup.GroupMessageFactory;
import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
@@ -330,6 +331,13 @@ public abstract class BriarIntegrationTest<C extends BriarIntegrationTestCompone
}
}
protected void assertMessageState(ConversationMessageHeader h, boolean read,
boolean sent, boolean seen) {
assertEquals("read", read, h.isRead());
assertEquals("sent", sent, h.isSent());
assertEquals("seen", seen, h.isSeen());
}
@After
public void tearDown() throws Exception {
stopLifecycles();