diff --git a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java index dfdb6154c..20185a3aa 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java @@ -5,6 +5,7 @@ import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.ClientId; +import org.briarproject.briar.api.conversation.ConversationManager; import org.briarproject.briar.api.conversation.ConversationMessageHeader; import java.util.Collection; @@ -13,7 +14,8 @@ import java.util.List; import javax.annotation.Nullable; @NotNullByDefault -public interface SocialBackupManager { +public interface SocialBackupManager extends + ConversationManager.ConversationClient { /** * The unique ID of the social backup client. @@ -47,6 +49,7 @@ public interface SocialBackupManager { void createBackup(Transaction txn, List custodianIds, int threshold) throws DbException; + @Override Collection getMessageHeaders( Transaction txn, ContactId contactId) throws DbException; } diff --git a/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java index 15cff8af6..1480b268e 100644 --- a/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java @@ -2,7 +2,10 @@ package org.briarproject.briar.socialbackup; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.identity.Author; +import org.briarproject.bramble.api.sync.Group; +import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.test.TestDatabaseConfigModule; +import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.conversation.ConversationMessageHeader; import org.briarproject.briar.api.socialbackup.BackupMetadata; import org.briarproject.briar.api.socialbackup.ShardMessageHeader; @@ -30,6 +33,11 @@ public class SocialBackupIntegrationTest private SocialBackupManager socialBackupManager1; private SocialBackupManager socialBackupManager2; + private Group g1From0; + private Group g0From1; + private Group g2From0; + private Group g0From2; + @Before @Override public void setUp() throws Exception { @@ -37,6 +45,11 @@ public class SocialBackupIntegrationTest socialBackupManager0 = c0.getSocialBackupManager(); socialBackupManager1 = c1.getSocialBackupManager(); socialBackupManager2 = c2.getSocialBackupManager(); + + g1From0 = socialBackupManager0.getContactGroup(contact1From0); + g0From1 = socialBackupManager1.getContactGroup(contact0From1); + g2From0 = socialBackupManager0.getContactGroup(contact2From0); + g0From2 = socialBackupManager2.getContactGroup(contact0From2); } @Override @@ -119,6 +132,12 @@ public class SocialBackupIntegrationTest ShardMessageHeader s = (ShardMessageHeader) h; assertFalse(s.isLocal()); } + + // assert group counts + assertGroupCount(messageTracker0, g1From0.getId(), 1, 0); + assertGroupCount(messageTracker0, g2From0.getId(), 1, 0); + assertGroupCount(messageTracker1, g0From1.getId(), 1, 1); + assertGroupCount(messageTracker2, g0From2.getId(), 1, 1); } private Collection getMessages1At0() @@ -145,4 +164,11 @@ public class SocialBackupIntegrationTest .getMessageHeaders(txn, contactId0From2)); } + public static void assertGroupCount(MessageTracker tracker, GroupId g, + long msgCount, long unreadCount) throws DbException { + MessageTracker.GroupCount c1 = tracker.getGroupCount(g); + assertEquals(msgCount, c1.getMsgCount()); + assertEquals(unreadCount, c1.getUnreadCount()); + } + }