diff --git a/.idea/runConfigurations/All_tests.xml b/.idea/runConfigurations/All_tests.xml
index 7d53e9dcc..b06a2885f 100644
--- a/.idea/runConfigurations/All_tests.xml
+++ b/.idea/runConfigurations/All_tests.xml
@@ -13,6 +13,7 @@
+
diff --git a/.idea/runConfigurations/All_tests_in_briar_api.xml b/.idea/runConfigurations/All_tests_in_briar_api.xml
new file mode 100644
index 000000000..50ba303f8
--- /dev/null
+++ b/.idea/runConfigurations/All_tests_in_briar_api.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
index fc471e141..0330d443c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.db.PendingContactExistsException;
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.AuthorInfo;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@@ -220,16 +219,6 @@ public interface ContactManager {
boolean contactExists(AuthorId remoteAuthorId, AuthorId localAuthorId)
throws DbException;
- /**
- * Returns the {@link AuthorInfo} for the given author.
- */
- AuthorInfo getAuthorInfo(AuthorId a) throws DbException;
-
- /**
- * Returns the {@link AuthorInfo} for the given author.
- */
- AuthorInfo getAuthorInfo(Transaction txn, AuthorId a) throws DbException;
-
interface ContactHook {
/**
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
index c3cc67750..3c11e80f6 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
@@ -20,9 +20,7 @@ import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.event.EventListener;
import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.identity.AuthorInfo;
import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.transport.KeyManager;
@@ -40,10 +38,6 @@ import javax.inject.Inject;
import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNKNOWN;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
import static org.briarproject.bramble.util.StringUtils.toUtf8;
@ThreadSafe
@@ -261,25 +255,6 @@ class ContactManagerImpl implements ContactManager, EventListener {
db.removeContact(txn, c);
}
- @Override
- public AuthorInfo getAuthorInfo(AuthorId a) throws DbException {
- return db.transactionWithResult(true, txn -> getAuthorInfo(txn, a));
- }
-
- @Override
- public AuthorInfo getAuthorInfo(Transaction txn, AuthorId authorId)
- throws DbException {
- LocalAuthor localAuthor = identityManager.getLocalAuthor(txn);
- if (localAuthor.getId().equals(authorId))
- return new AuthorInfo(OURSELVES);
- Collection contacts = db.getContactsByAuthorId(txn, authorId);
- if (contacts.isEmpty()) return new AuthorInfo(UNKNOWN);
- if (contacts.size() > 1) throw new AssertionError();
- Contact c = contacts.iterator().next();
- if (c.isVerified()) return new AuthorInfo(VERIFIED, c.getAlias());
- else return new AuthorInfo(UNVERIFIED, c.getAlias());
- }
-
@Override
public void eventOccurred(Event e) {
if (e instanceof PendingContactStateChangedEvent) {
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java
index c828f2698..bb4631dc1 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactManagerImplTest.java
@@ -8,18 +8,15 @@ import org.briarproject.bramble.api.contact.PendingContactState;
import org.briarproject.bramble.api.crypto.KeyPair;
import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.db.DatabaseComponent;
-import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.NoSuchContactException;
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.AuthorInfo;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.transport.KeyManager;
import org.briarproject.bramble.test.BrambleMockTestCase;
import org.briarproject.bramble.test.DbExpectations;
-import org.jmock.Expectations;
import org.junit.Before;
import org.junit.Test;
@@ -31,10 +28,6 @@ import static java.util.Collections.singletonList;
import static org.briarproject.bramble.api.contact.HandshakeLinkConstants.BASE32_LINK_BYTES;
import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNKNOWN;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
import static org.briarproject.bramble.test.TestUtils.getAgreementPrivateKey;
import static org.briarproject.bramble.test.TestUtils.getAgreementPublicKey;
import static org.briarproject.bramble.test.TestUtils.getAuthor;
@@ -46,7 +39,6 @@ import static org.briarproject.bramble.test.TestUtils.getSecretKey;
import static org.briarproject.bramble.util.StringUtils.getRandomBase32String;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class ContactManagerImplTest extends BrambleMockTestCase {
@@ -212,75 +204,6 @@ public class ContactManagerImplTest extends BrambleMockTestCase {
assertTrue(contactManager.contactExists(remote.getId(), local));
}
- @Test
- public void testGetAuthorInfo() throws Exception {
- Transaction txn = new Transaction(null, true);
-
- context.checking(new DbExpectations() {{
- oneOf(identityManager).getLocalAuthor(txn);
- will(returnValue(localAuthor));
- oneOf(db).getContactsByAuthorId(txn, remote.getId());
- will(returnValue(singletonList(contact)));
- }});
-
- AuthorInfo authorInfo =
- contactManager.getAuthorInfo(txn, remote.getId());
- assertEquals(UNVERIFIED, authorInfo.getStatus());
- assertEquals(contact.getAlias(), authorInfo.getAlias());
- }
-
- @Test
- public void testGetAuthorInfoTransaction() throws DbException {
- Transaction txn = new Transaction(null, true);
-
- // check unknown author
- context.checking(new Expectations() {{
- oneOf(identityManager).getLocalAuthor(txn);
- will(returnValue(localAuthor));
- oneOf(db).getContactsByAuthorId(txn, remote.getId());
- will(returnValue(emptyList()));
- }});
-
- AuthorInfo authorInfo =
- contactManager.getAuthorInfo(txn, remote.getId());
- assertEquals(UNKNOWN, authorInfo.getStatus());
- assertNull(authorInfo.getAlias());
-
- // check unverified contact
- checkAuthorInfoContext(txn, remote.getId(), singletonList(contact));
- authorInfo = contactManager.getAuthorInfo(txn, remote.getId());
- assertEquals(UNVERIFIED, authorInfo.getStatus());
- assertEquals(contact.getAlias(), authorInfo.getAlias());
-
- // check verified contact
- Contact verified = getContact(remote, local, true);
- checkAuthorInfoContext(txn, remote.getId(), singletonList(verified));
- authorInfo = contactManager.getAuthorInfo(txn, remote.getId());
- assertEquals(VERIFIED, authorInfo.getStatus());
- assertEquals(verified.getAlias(), authorInfo.getAlias());
-
- // check ourselves
- context.checking(new Expectations() {{
- oneOf(identityManager).getLocalAuthor(txn);
- will(returnValue(localAuthor));
- never(db).getContactsByAuthorId(txn, remote.getId());
- }});
-
- authorInfo = contactManager.getAuthorInfo(txn, localAuthor.getId());
- assertEquals(OURSELVES, authorInfo.getStatus());
- assertNull(authorInfo.getAlias());
- }
-
- private void checkAuthorInfoContext(Transaction txn, AuthorId authorId,
- Collection contacts) throws DbException {
- context.checking(new Expectations() {{
- oneOf(identityManager).getLocalAuthor(txn);
- will(returnValue(localAuthor));
- oneOf(db).getContactsByAuthorId(txn, authorId);
- will(returnValue(contacts));
- }});
- }
-
@Test
public void testGetHandshakeLink() throws Exception {
Transaction txn = new Transaction(null, true);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
index 6f83e06fc..d2ee9dc7f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
@@ -47,6 +47,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.feed.FeedManager;
import org.briarproject.briar.api.forum.ForumManager;
import org.briarproject.briar.api.forum.ForumSharingManager;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessageFactory;
@@ -94,6 +95,8 @@ public interface AndroidComponent
IdentityManager identityManager();
+ AuthorManager authorManager();
+
PluginManager pluginManager();
EventBus eventBus();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java
index 7f5ef0de5..7afaa77b4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.android.blog;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.blog.BlogPostHeader;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumPostItem.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumPostItem.java
index 03df1b0a0..7366725de 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumPostItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumPostItem.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.android.forum;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.android.threaded.ThreadItem;
import org.briarproject.briar.api.forum.ForumPostHeader;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageItem.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageItem.java
index 315beff27..308f3d498 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageItem.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.android.privategroup.conversation;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.R;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java
index e6c1e9c98..6ee712071 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java
@@ -10,7 +10,7 @@ import org.briarproject.briar.android.threaded.ThreadItemAdapter.ThreadItemListe
import androidx.annotation.UiThread;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
@UiThread
@NotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java
index 00ba7e97e..f7f361216 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.android.privategroup.list;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java
index 25857fca5..041305a37 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.event.EventListener;
import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.identity.AuthorInfo;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
@@ -24,6 +23,8 @@ import org.briarproject.briar.android.viewmodel.DbViewModel;
import org.briarproject.briar.android.viewmodel.LiveResult;
import org.briarproject.briar.api.android.AndroidNotificationManager;
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.privategroup.GroupMessageHeader;
import org.briarproject.briar.api.privategroup.PrivateGroup;
import org.briarproject.briar.api.privategroup.PrivateGroupManager;
@@ -64,7 +65,7 @@ class GroupListViewModel extends DbViewModel implements EventListener {
private final PrivateGroupManager groupManager;
private final GroupInvitationManager groupInvitationManager;
- private final ContactManager contactManager;
+ private final AuthorManager authorManager;
private final AndroidNotificationManager notificationManager;
private final EventBus eventBus;
@@ -81,12 +82,12 @@ class GroupListViewModel extends DbViewModel implements EventListener {
AndroidExecutor androidExecutor,
PrivateGroupManager groupManager,
GroupInvitationManager groupInvitationManager,
- ContactManager contactManager,
+ AuthorManager authorManager,
AndroidNotificationManager notificationManager, EventBus eventBus) {
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
this.groupManager = groupManager;
this.groupInvitationManager = groupInvitationManager;
- this.contactManager = contactManager;
+ this.authorManager = authorManager;
this.notificationManager = notificationManager;
this.eventBus = eventBus;
this.eventBus.addListener(this);
@@ -157,7 +158,7 @@ class GroupListViewModel extends DbViewModel implements EventListener {
if (authorInfos.containsKey(authorId)) {
authorInfo = requireNonNull(authorInfos.get(authorId));
} else {
- authorInfo = contactManager.getAuthorInfo(txn, authorId);
+ authorInfo = authorManager.getAuthorInfo(txn, authorId);
authorInfos.put(authorId, authorInfo);
}
GroupCount count = groupManager.getGroupCount(txn, id);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java
index a83c2c9a3..2b57b4e69 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.privategroup.memberlist;
import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.identity.AuthorInfo.Status;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo.Status;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.privategroup.GroupMember;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
index c0713a0cd..dd3d958b7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
@@ -13,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
@UiThread
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java
index 4a9a51640..0d3d69205 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.android.threaded;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.MessageTree.MessageNode;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java
index 61de039ee..24a78fe3a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java
@@ -9,7 +9,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.briar.R;
import org.briarproject.briar.android.util.UiUtils;
@@ -24,8 +24,8 @@ import im.delight.android.identicons.IdenticonDrawable;
import static android.content.Context.LAYOUT_INFLATER_SERVICE;
import static android.graphics.Typeface.BOLD;
import static android.util.TypedValue.COMPLEX_UNIT_PX;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
import static org.briarproject.briar.android.util.UiUtils.resolveAttribute;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TrustIndicatorView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TrustIndicatorView.java
index fb045db00..ec1fc98ac 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/TrustIndicatorView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TrustIndicatorView.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.android.view;
import android.content.Context;
import android.util.AttributeSet;
-import org.briarproject.bramble.api.identity.AuthorInfo.Status;
+import org.briarproject.briar.api.identity.AuthorInfo.Status;
import org.briarproject.briar.R;
import androidx.annotation.UiThread;
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
index 8c04d85b4..50c4c80fc 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
@@ -6,7 +6,7 @@ import junit.framework.Assert;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
import org.briarproject.briar.android.threaded.ThreadItemAdapter;
@@ -25,7 +25,7 @@ import org.robolectric.annotation.Config;
import java.util.Arrays;
import static junit.framework.Assert.assertEquals;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNKNOWN;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNKNOWN;
import static org.briarproject.bramble.test.TestUtils.getAuthor;
import static org.briarproject.bramble.test.TestUtils.getRandomId;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/privategroup/list/GroupListViewModelTest.java b/briar-android/src/test/java/org/briarproject/briar/android/privategroup/list/GroupListViewModelTest.java
index 8030995b0..bfdc0c126 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/privategroup/list/GroupListViewModelTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/privategroup/list/GroupListViewModelTest.java
@@ -3,14 +3,12 @@ package org.briarproject.briar.android.privategroup.list;
import android.app.Application;
import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.db.TransactionManager;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.identity.AuthorInfo;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.sync.Group;
import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -20,6 +18,8 @@ import org.briarproject.bramble.test.ImmediateExecutor;
import org.briarproject.briar.android.AndroidExecutorTestImpl;
import org.briarproject.briar.android.viewmodel.LiveResult;
import org.briarproject.briar.api.android.AndroidNotificationManager;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.privategroup.PrivateGroup;
import org.briarproject.briar.api.privategroup.PrivateGroupManager;
import org.briarproject.briar.api.privategroup.event.GroupDissolvedEvent;
@@ -67,8 +67,8 @@ public class GroupListViewModelTest extends BrambleMockTestCase {
context.mock(PrivateGroupManager.class);
private final GroupInvitationManager groupInvitationManager =
context.mock(GroupInvitationManager.class);
- private final ContactManager contactManager =
- context.mock(ContactManager.class);
+ private final AuthorManager authorManager =
+ context.mock(AuthorManager.class);
private final AndroidNotificationManager notificationManager =
context.mock(AndroidNotificationManager.class);
private final EventBus eventBus = context.mock(EventBus.class);
@@ -105,7 +105,7 @@ public class GroupListViewModelTest extends BrambleMockTestCase {
new AndroidExecutorTestImpl(dbExecutor);
viewModel = new GroupListViewModel(app, dbExecutor, lifecycleManager,
db, androidExecutor, groupManager, groupInvitationManager,
- contactManager, notificationManager, eventBus);
+ authorManager, notificationManager, eventBus);
}
@Test
@@ -199,7 +199,7 @@ public class GroupListViewModelTest extends BrambleMockTestCase {
AuthorInfo authorInfo, GroupCount groupCount, boolean dissolved)
throws DbException {
context.checking(new DbExpectations() {{
- oneOf(contactManager)
+ oneOf(authorManager)
.getAuthorInfo(txn, privateGroup.getCreator().getId());
will(returnValue(authorInfo));
oneOf(groupManager).getGroupCount(txn, privateGroup.getId());
diff --git a/briar-api/build.gradle b/briar-api/build.gradle
index 6331e5edd..a4410603d 100644
--- a/briar-api/build.gradle
+++ b/briar-api/build.gradle
@@ -10,4 +10,7 @@ dependencies {
implementation project(path: ':bramble-api', configuration: 'default')
signature 'org.codehaus.mojo.signature:java16:1.1@signature'
+
+ testImplementation project(path: ':bramble-api', configuration: 'testOutput')
+ testImplementation 'junit:junit:4.13.1'
}
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java
index 16bf16ab8..02ab6a2d5 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.api.blog;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java
index ba6ad20a3..4d99b10f9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.api.blog;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java
index 3a975f5c2..9957d8dfa 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java
@@ -1,8 +1,8 @@
package org.briarproject.briar.api.client;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.identity.AuthorInfo.Status;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo.Status;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.MessageId;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java
index ae8304d4a..ebf93b621 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.api.forum;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.PostHeader;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorInfo.java b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorInfo.java
similarity index 92%
rename from bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorInfo.java
rename to briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorInfo.java
index 26f4f3398..21c4f9dcb 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorInfo.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorInfo.java
@@ -1,4 +1,4 @@
-package org.briarproject.bramble.api.identity;
+package org.briarproject.briar.api.identity;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@@ -50,6 +50,7 @@ public class AuthorInfo {
public boolean equals(Object o) {
if (!(o instanceof AuthorInfo)) return false;
AuthorInfo info = (AuthorInfo) o;
+ //noinspection EqualsReplaceableByObjectsCall
return status == info.status &&
(alias == null ? info.alias == null : alias.equals(info.alias));
}
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorManager.java b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorManager.java
new file mode 100644
index 000000000..b04b38759
--- /dev/null
+++ b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorManager.java
@@ -0,0 +1,21 @@
+package org.briarproject.briar.api.identity;
+
+import org.briarproject.bramble.api.db.DbException;
+import org.briarproject.bramble.api.db.Transaction;
+import org.briarproject.bramble.api.identity.AuthorId;
+import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+
+@NotNullByDefault
+public interface AuthorManager {
+
+ /**
+ * Returns the {@link AuthorInfo} for the given author.
+ */
+ AuthorInfo getAuthorInfo(AuthorId a) throws DbException;
+
+ /**
+ * Returns the {@link AuthorInfo} for the given author.
+ */
+ AuthorInfo getAuthorInfo(Transaction txn, AuthorId a) throws DbException;
+
+}
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
index fbb341ce0..c6a5db547 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.api.introduction;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java
index 18c68c159..4b1777611 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.api.introduction;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java
index 6080b6a9e..5f842f020 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.api.privategroup;
import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import javax.annotation.Nullable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java
index 7174114c5..724b077cb 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java
@@ -1,7 +1,7 @@
package org.briarproject.briar.api.privategroup;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
diff --git a/bramble-api/src/test/java/org/briarproject/bramble/api/identity/AuthorInfoTest.java b/briar-api/src/test/java/org/briarproject/briar/api/identity/AuthorInfoTest.java
similarity index 79%
rename from bramble-api/src/test/java/org/briarproject/bramble/api/identity/AuthorInfoTest.java
rename to briar-api/src/test/java/org/briarproject/briar/api/identity/AuthorInfoTest.java
index 9c059c84e..ace93a1f8 100644
--- a/bramble-api/src/test/java/org/briarproject/bramble/api/identity/AuthorInfoTest.java
+++ b/briar-api/src/test/java/org/briarproject/briar/api/identity/AuthorInfoTest.java
@@ -1,10 +1,10 @@
-package org.briarproject.bramble.api.identity;
+package org.briarproject.briar.api.identity;
import org.briarproject.bramble.test.BrambleTestCase;
import org.junit.Test;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
diff --git a/briar-core/src/main/java/org/briarproject/briar/BriarCoreEagerSingletons.java b/briar-core/src/main/java/org/briarproject/briar/BriarCoreEagerSingletons.java
index 3d42616b5..aa93617ee 100644
--- a/briar-core/src/main/java/org/briarproject/briar/BriarCoreEagerSingletons.java
+++ b/briar-core/src/main/java/org/briarproject/briar/BriarCoreEagerSingletons.java
@@ -3,6 +3,7 @@ package org.briarproject.briar;
import org.briarproject.briar.blog.BlogModule;
import org.briarproject.briar.feed.FeedModule;
import org.briarproject.briar.forum.ForumModule;
+import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.introduction.IntroductionModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.privategroup.PrivateGroupModule;
@@ -19,6 +20,8 @@ public interface BriarCoreEagerSingletons {
void inject(GroupInvitationModule.EagerSingletons init);
+ void inject(IdentityModule.EagerSingletons init);
+
void inject(IntroductionModule.EagerSingletons init);
void inject(MessagingModule.EagerSingletons init);
@@ -37,6 +40,7 @@ public interface BriarCoreEagerSingletons {
c.inject(new MessagingModule.EagerSingletons());
c.inject(new PrivateGroupModule.EagerSingletons());
c.inject(new SharingModule.EagerSingletons());
+ c.inject(new IdentityModule.EagerSingletons());
c.inject(new IntroductionModule.EagerSingletons());
}
}
diff --git a/briar-core/src/main/java/org/briarproject/briar/BriarCoreModule.java b/briar-core/src/main/java/org/briarproject/briar/BriarCoreModule.java
index 5ba057706..19b952d74 100644
--- a/briar-core/src/main/java/org/briarproject/briar/BriarCoreModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/BriarCoreModule.java
@@ -5,6 +5,7 @@ import org.briarproject.briar.client.BriarClientModule;
import org.briarproject.briar.feed.DnsModule;
import org.briarproject.briar.feed.FeedModule;
import org.briarproject.briar.forum.ForumModule;
+import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.introduction.IntroductionModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.privategroup.PrivateGroupModule;
@@ -21,6 +22,7 @@ import dagger.Module;
DnsModule.class,
ForumModule.class,
GroupInvitationModule.class,
+ IdentityModule.class,
IntroductionModule.class,
MessagingModule.class,
PrivateGroupModule.class,
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
index 009b5030d..cd6f2f428 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.client.BdfIncomingMessageHook;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.contact.ContactManager.ContactHook;
import org.briarproject.bramble.api.data.BdfDictionary;
import org.briarproject.bramble.api.data.BdfEntry;
@@ -15,7 +14,6 @@ import org.briarproject.bramble.api.db.DbException;
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.AuthorInfo;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
@@ -33,6 +31,8 @@ import org.briarproject.briar.api.blog.BlogPostFactory;
import org.briarproject.briar.api.blog.BlogPostHeader;
import org.briarproject.briar.api.blog.MessageType;
import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
@@ -50,7 +50,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
import javax.annotation.Nullable;
import javax.inject.Inject;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_COMMENT;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_ORIGINAL_MSG_ID;
@@ -65,25 +64,26 @@ import static org.briarproject.briar.api.blog.MessageType.COMMENT;
import static org.briarproject.briar.api.blog.MessageType.POST;
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
@NotNullByDefault
class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
OpenDatabaseHook, ContactHook {
- private final ContactManager contactManager;
private final IdentityManager identityManager;
+ private final AuthorManager authorManager;
private final BlogFactory blogFactory;
private final BlogPostFactory blogPostFactory;
private final List removeHooks;
@Inject
- BlogManagerImpl(DatabaseComponent db, ContactManager contactManager,
- IdentityManager identityManager, ClientHelper clientHelper,
+ BlogManagerImpl(DatabaseComponent db, IdentityManager identityManager,
+ AuthorManager authorManager, ClientHelper clientHelper,
MetadataParser metadataParser, BlogFactory blogFactory,
BlogPostFactory blogPostFactory) {
super(db, clientHelper, metadataParser);
- this.contactManager = contactManager;
this.identityManager = identityManager;
+ this.authorManager = authorManager;
this.blogFactory = blogFactory;
this.blogPostFactory = blogPostFactory;
removeHooks = new CopyOnWriteArrayList<>();
@@ -519,7 +519,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
Map authorInfos = new HashMap<>();
for (AuthorId authorId : authors) {
authorInfos.put(authorId,
- contactManager.getAuthorInfo(txn, authorId));
+ authorManager.getAuthorInfo(txn, authorId));
}
// get post headers
for (Entry entry : metadata.entrySet()) {
@@ -586,7 +586,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
} else if (authorInfos.containsKey(author.getId())) {
authorInfo = authorInfos.get(author.getId());
} else {
- authorInfo = contactManager.getAuthorInfo(txn, author.getId());
+ authorInfo = authorManager.getAuthorInfo(txn, author.getId());
}
boolean read = meta.getBoolean(KEY_READ, false);
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
index 17935ab7b..103aeafc5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
@@ -3,7 +3,6 @@ package org.briarproject.briar.forum;
import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.client.BdfIncomingMessageHook;
import org.briarproject.bramble.api.client.ClientHelper;
-import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.data.BdfDictionary;
import org.briarproject.bramble.api.data.BdfList;
import org.briarproject.bramble.api.data.MetadataParser;
@@ -12,7 +11,6 @@ import org.briarproject.bramble.api.db.DbException;
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.AuthorInfo;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.Group;
@@ -28,6 +26,8 @@ import org.briarproject.briar.api.forum.ForumPost;
import org.briarproject.briar.api.forum.ForumPostFactory;
import org.briarproject.briar.api.forum.ForumPostHeader;
import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
@@ -45,30 +45,30 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
import javax.inject.Inject;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
import static org.briarproject.briar.api.forum.ForumConstants.KEY_AUTHOR;
import static org.briarproject.briar.api.forum.ForumConstants.KEY_LOCAL;
import static org.briarproject.briar.api.forum.ForumConstants.KEY_PARENT;
import static org.briarproject.briar.api.forum.ForumConstants.KEY_TIMESTAMP;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
@ThreadSafe
@NotNullByDefault
class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
- private final ContactManager contactManager;
+ private final AuthorManager authorManager;
private final ForumFactory forumFactory;
private final ForumPostFactory forumPostFactory;
private final MessageTracker messageTracker;
private final List removeHooks;
@Inject
- ForumManagerImpl(DatabaseComponent db, ContactManager contactManager,
- ClientHelper clientHelper, MetadataParser metadataParser,
+ ForumManagerImpl(DatabaseComponent db, ClientHelper clientHelper,
+ MetadataParser metadataParser, AuthorManager authorManager,
ForumFactory forumFactory, ForumPostFactory forumPostFactory,
MessageTracker messageTracker) {
super(db, clientHelper, metadataParser);
- this.contactManager = contactManager;
+ this.authorManager = authorManager;
this.forumFactory = forumFactory;
this.forumPostFactory = forumPostFactory;
this.messageTracker = messageTracker;
@@ -213,7 +213,7 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
// get information for all authors
Map authorInfos = new HashMap<>();
for (AuthorId id : authors) {
- authorInfos.put(id, contactManager.getAuthorInfo(txn, id));
+ authorInfos.put(id, authorManager.getAuthorInfo(txn, id));
}
// Parse the metadata
for (Entry entry :
@@ -275,7 +275,7 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
Author author = clientHelper.parseAndValidateAuthor(authorList);
AuthorInfo authorInfo = authorInfos.get(author.getId());
if (authorInfo == null)
- authorInfo = contactManager.getAuthorInfo(txn, author.getId());
+ authorInfo = authorManager.getAuthorInfo(txn, author.getId());
boolean read = meta.getBoolean(MSG_KEY_READ);
return new ForumPostHeader(id, parentId, timestamp, author, authorInfo,
diff --git a/briar-core/src/main/java/org/briarproject/briar/identity/AuthorManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/identity/AuthorManagerImpl.java
new file mode 100644
index 000000000..595d7e51b
--- /dev/null
+++ b/briar-core/src/main/java/org/briarproject/briar/identity/AuthorManagerImpl.java
@@ -0,0 +1,56 @@
+package org.briarproject.briar.identity;
+
+import org.briarproject.bramble.api.contact.Contact;
+import org.briarproject.bramble.api.db.DatabaseComponent;
+import org.briarproject.bramble.api.db.DbException;
+import org.briarproject.bramble.api.db.Transaction;
+import org.briarproject.bramble.api.identity.AuthorId;
+import org.briarproject.bramble.api.identity.IdentityManager;
+import org.briarproject.bramble.api.identity.LocalAuthor;
+import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
+
+import java.util.Collection;
+
+import javax.annotation.concurrent.ThreadSafe;
+import javax.inject.Inject;
+
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNKNOWN;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
+
+@ThreadSafe
+@NotNullByDefault
+class AuthorManagerImpl implements AuthorManager {
+
+ private final DatabaseComponent db;
+ private final IdentityManager identityManager;
+
+ @Inject
+ AuthorManagerImpl(DatabaseComponent db, IdentityManager identityManager) {
+ this.db = db;
+ this.identityManager = identityManager;
+ }
+
+ @Override
+ public AuthorInfo getAuthorInfo(AuthorId a) throws DbException {
+ return db.transactionWithResult(true, txn -> getAuthorInfo(txn, a));
+ }
+
+ @Override
+ public AuthorInfo getAuthorInfo(Transaction txn, AuthorId authorId)
+ throws DbException {
+ LocalAuthor localAuthor = identityManager.getLocalAuthor(txn);
+ if (localAuthor.getId().equals(authorId))
+ return new AuthorInfo(OURSELVES);
+ Collection contacts = db.getContactsByAuthorId(txn, authorId);
+ if (contacts.isEmpty()) return new AuthorInfo(UNKNOWN);
+ if (contacts.size() > 1) throw new AssertionError();
+ Contact c = contacts.iterator().next();
+ if (c.isVerified()) return new AuthorInfo(VERIFIED, c.getAlias());
+ else return new AuthorInfo(UNVERIFIED, c.getAlias());
+ }
+
+}
diff --git a/briar-core/src/main/java/org/briarproject/briar/identity/IdentityModule.java b/briar-core/src/main/java/org/briarproject/briar/identity/IdentityModule.java
new file mode 100644
index 000000000..d0c4f2c85
--- /dev/null
+++ b/briar-core/src/main/java/org/briarproject/briar/identity/IdentityModule.java
@@ -0,0 +1,25 @@
+package org.briarproject.briar.identity;
+
+import org.briarproject.briar.api.identity.AuthorManager;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module
+public class IdentityModule {
+
+ public static class EagerSingletons {
+ @Inject
+ AuthorManager authorManager;
+ }
+
+ @Provides
+ @Singleton
+ AuthorManager provideAuthorManager(AuthorManagerImpl authorManager) {
+ return authorManager;
+ }
+
+}
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
index b84f62463..37b84e516 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
@@ -12,7 +12,6 @@ import org.briarproject.bramble.api.db.DbException;
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.AuthorInfo;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.TransportId;
@@ -22,6 +21,8 @@ import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.introduction.IntroductionResponse;
import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent;
@@ -48,6 +49,7 @@ abstract class AbstractProtocolEngine
protected final ContactGroupFactory contactGroupFactory;
protected final MessageTracker messageTracker;
protected final IdentityManager identityManager;
+ protected final AuthorManager authorManager;
protected final MessageParser messageParser;
protected final MessageEncoder messageEncoder;
protected final Clock clock;
@@ -59,6 +61,7 @@ abstract class AbstractProtocolEngine
ContactGroupFactory contactGroupFactory,
MessageTracker messageTracker,
IdentityManager identityManager,
+ AuthorManager authorManager,
MessageParser messageParser,
MessageEncoder messageEncoder,
Clock clock) {
@@ -68,6 +71,7 @@ abstract class AbstractProtocolEngine
this.contactGroupFactory = contactGroupFactory;
this.messageTracker = messageTracker;
this.identityManager = identityManager;
+ this.authorManager = authorManager;
this.messageParser = messageParser;
this.messageEncoder = messageEncoder;
this.clock = clock;
@@ -152,7 +156,7 @@ abstract class AbstractProtocolEngine
AuthorId localAuthorId = identityManager.getLocalAuthor(txn).getId();
Contact c = contactManager.getContact(txn, sender, localAuthorId);
AuthorInfo otherAuthorInfo =
- contactManager.getAuthorInfo(txn, otherAuthor.getId());
+ authorManager.getAuthorInfo(txn, otherAuthor.getId());
IntroductionResponse response =
new IntroductionResponse(m.getMessageId(), m.getGroupId(),
m.getTimestamp(), false, false, false, false,
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
index 33750f358..8d7dd4a46 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
@@ -14,7 +14,6 @@ import org.briarproject.bramble.api.db.ContactExistsException;
import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.identity.AuthorInfo;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@@ -29,6 +28,8 @@ import org.briarproject.bramble.api.transport.KeySetId;
import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.ProtocolStateException;
import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent;
@@ -71,6 +72,7 @@ class IntroduceeProtocolEngine
ContactGroupFactory contactGroupFactory,
MessageTracker messageTracker,
IdentityManager identityManager,
+ AuthorManager authorManager,
MessageParser messageParser,
MessageEncoder messageEncoder,
Clock clock,
@@ -78,8 +80,8 @@ class IntroduceeProtocolEngine
KeyManager keyManager,
TransportPropertyManager transportPropertyManager) {
super(db, clientHelper, contactManager, contactGroupFactory,
- messageTracker, identityManager, messageParser, messageEncoder,
- clock);
+ messageTracker, identityManager, authorManager, messageParser,
+ messageEncoder, clock);
this.crypto = crypto;
this.keyManager = keyManager;
this.transportPropertyManager = transportPropertyManager;
@@ -254,7 +256,7 @@ class IntroduceeProtocolEngine
Contact c = contactManager.getContact(txn, s.getIntroducer().getId(),
localAuthor.getId());
AuthorInfo authorInfo =
- contactManager.getAuthorInfo(txn, m.getAuthor().getId());
+ authorManager.getAuthorInfo(txn, m.getAuthor().getId());
IntroductionRequest request = new IntroductionRequest(m.getMessageId(),
m.getGroupId(), m.getTimestamp(), false, false, false, false,
s.getSessionId(), m.getAuthor(), m.getText(), false,
@@ -443,13 +445,11 @@ class IntroduceeProtocolEngine
s.getRemote().author.getId(), localAuthor.getId());
// add the keys to the new contact
- //noinspection ConstantConditions
keys = keyManager.addRotationKeys(txn, c.getId(),
new SecretKey(s.getMasterKey()), timestamp,
s.getLocal().alice, false);
// add signed transport properties for the contact
- //noinspection ConstantConditions
transportPropertyManager.addRemoteProperties(txn, c.getId(),
s.getRemote().transportProperties);
} catch (ContactExistsException e) {
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
index fa468a939..39f2faf5a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
@@ -15,6 +15,7 @@ import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.ProtocolStateException;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
import org.briarproject.briar.introduction.IntroducerSession.Introducee;
@@ -48,12 +49,13 @@ class IntroducerProtocolEngine
ContactGroupFactory contactGroupFactory,
MessageTracker messageTracker,
IdentityManager identityManager,
+ AuthorManager authorManager,
MessageParser messageParser,
MessageEncoder messageEncoder,
Clock clock) {
super(db, clientHelper, contactManager, contactGroupFactory,
- messageTracker, identityManager, messageParser, messageEncoder,
- clock);
+ messageTracker, identityManager, authorManager, messageParser,
+ messageEncoder, clock);
}
@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
index 2ee085969..dd88159c8 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
@@ -16,7 +16,6 @@ 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.identity.AuthorInfo;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
@@ -33,6 +32,8 @@ import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.SessionId;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.conversation.DeletionResult;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.introduction.IntroductionRequest;
import org.briarproject.briar.api.introduction.IntroductionResponse;
@@ -83,6 +84,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
private final IntroduceeProtocolEngine introduceeEngine;
private final IntroductionCrypto crypto;
private final IdentityManager identityManager;
+ private final AuthorManager authorManager;
private final Group localGroup;
@@ -101,7 +103,8 @@ class IntroductionManagerImpl extends ConversationClientImpl
IntroducerProtocolEngine introducerEngine,
IntroduceeProtocolEngine introduceeEngine,
IntroductionCrypto crypto,
- IdentityManager identityManager) {
+ IdentityManager identityManager,
+ AuthorManager authorManager) {
super(db, clientHelper, metadataParser, messageTracker);
this.clientVersioningManager = clientVersioningManager;
this.contactGroupFactory = contactGroupFactory;
@@ -113,6 +116,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
this.introduceeEngine = introduceeEngine;
this.crypto = crypto;
this.identityManager = identityManager;
+ this.authorManager = authorManager;
this.localGroup =
contactGroupFactory.createLocalGroup(CLIENT_ID, MAJOR_VERSION);
}
@@ -455,7 +459,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
Author author = rm.getAuthor();
AuthorInfo authorInfo = authorInfos.get(author.getId());
if (authorInfo == null) {
- authorInfo = contactManager.getAuthorInfo(txn, author.getId());
+ authorInfo = authorManager.getAuthorInfo(txn, author.getId());
authorInfos.put(author.getId(), authorInfo);
}
return new IntroductionRequest(m, contactGroupId, meta.getTimestamp(),
@@ -494,7 +498,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
} else throw new AssertionError();
AuthorInfo authorInfo = authorInfos.get(author.getId());
if (authorInfo == null) {
- authorInfo = contactManager.getAuthorInfo(txn, author.getId());
+ authorInfo = authorManager.getAuthorInfo(txn, author.getId());
authorInfos.put(author.getId(), authorInfo);
}
return new IntroductionResponse(m, contactGroupId, meta.getTimestamp(),
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
index 72d1ae12e..bdbd3ea36 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
@@ -15,8 +15,6 @@ import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.identity.AuthorInfo.Status;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@@ -27,6 +25,9 @@ import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.client.MessageTracker;
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
import org.briarproject.briar.api.client.ProtocolStateException;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorInfo.Status;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.privategroup.GroupMember;
import org.briarproject.briar.api.privategroup.GroupMessage;
import org.briarproject.briar.api.privategroup.GroupMessageHeader;
@@ -54,9 +55,9 @@ import java.util.concurrent.CopyOnWriteArrayList;
import javax.annotation.concurrent.ThreadSafe;
import javax.inject.Inject;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
import static org.briarproject.briar.api.privategroup.MessageType.POST;
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
@@ -84,6 +85,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
private final PrivateGroupFactory privateGroupFactory;
private final ContactManager contactManager;
private final IdentityManager identityManager;
+ private final AuthorManager authorManager;
private final MessageTracker messageTracker;
private final List hooks;
@@ -92,11 +94,12 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
MetadataParser metadataParser, DatabaseComponent db,
PrivateGroupFactory privateGroupFactory,
ContactManager contactManager, IdentityManager identityManager,
- MessageTracker messageTracker) {
+ AuthorManager authorManager, MessageTracker messageTracker) {
super(db, clientHelper, metadataParser);
this.privateGroupFactory = privateGroupFactory;
this.contactManager = contactManager;
this.identityManager = identityManager;
+ this.authorManager = authorManager;
this.messageTracker = messageTracker;
hooks = new CopyOnWriteArrayList<>();
}
@@ -336,7 +339,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
// get information for all authors
Map authorInfos = new HashMap<>();
for (AuthorId id : authors) {
- authorInfos.put(id, contactManager.getAuthorInfo(txn, id));
+ authorInfos.put(id, authorManager.getAuthorInfo(txn, id));
}
// get current visibilities for join messages
Map visibilities = getMembers(txn, g);
@@ -378,7 +381,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
if (authorInfos.containsKey(member.getId())) {
authorInfo = authorInfos.get(member.getId());
} else {
- authorInfo = contactManager.getAuthorInfo(txn, member.getId());
+ authorInfo = authorManager.getAuthorInfo(txn, member.getId());
}
boolean read = meta.getBoolean(KEY_READ);
@@ -408,7 +411,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
for (Entry m : authors.entrySet()) {
Author a = m.getKey();
AuthorInfo authorInfo =
- contactManager.getAuthorInfo(txn, a.getId());
+ authorManager.getAuthorInfo(txn, a.getId());
Status status = authorInfo.getStatus();
Visibility v = m.getValue();
ContactId c = null;
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
index 6922337fc..fb700e667 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
@@ -3,7 +3,6 @@ package org.briarproject.briar.blog;
import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.data.BdfDictionary;
import org.briarproject.bramble.api.data.BdfEntry;
import org.briarproject.bramble.api.data.BdfList;
@@ -15,7 +14,6 @@ import org.briarproject.bramble.api.db.EventAction;
import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.identity.AuthorInfo;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.sync.Group;
@@ -28,14 +26,13 @@ import org.briarproject.briar.api.blog.BlogPost;
import org.briarproject.briar.api.blog.BlogPostFactory;
import org.briarproject.briar.api.blog.BlogPostHeader;
import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.test.BriarTestCase;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.junit.Test;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
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,6 +56,9 @@ import static org.briarproject.briar.api.blog.MessageType.COMMENT;
import static org.briarproject.briar.api.blog.MessageType.POST;
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
@@ -69,8 +69,8 @@ public class BlogManagerImplTest extends BriarTestCase {
private final Mockery context = new Mockery();
private final BlogManagerImpl blogManager;
private final DatabaseComponent db = context.mock(DatabaseComponent.class);
- private final ContactManager contactManager =
- context.mock(ContactManager.class);
+ private final AuthorManager authorManager =
+ context.mock(AuthorManager.class);
private final IdentityManager identityManager =
context.mock(IdentityManager.class);
private final ClientHelper clientHelper = context.mock(ClientHelper.class);
@@ -90,7 +90,7 @@ public class BlogManagerImplTest extends BriarTestCase {
public BlogManagerImplTest() {
MetadataParser metadataParser = context.mock(MetadataParser.class);
- blogManager = new BlogManagerImpl(db, contactManager, identityManager,
+ blogManager = new BlogManagerImpl(db, identityManager, authorManager,
clientHelper, metadataParser, blogFactory, blogPostFactory);
localAuthor1 = getLocalAuthor();
@@ -180,7 +180,7 @@ public class BlogManagerImplTest extends BriarTestCase {
context.checking(new Expectations() {{
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
will(returnValue(localAuthor1));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
will(returnValue(verifiedInfo));
}});
@@ -291,7 +291,7 @@ public class BlogManagerImplTest extends BriarTestCase {
false);
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
will(returnValue(localAuthor1));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
will(returnValue(ourselvesInfo));
oneOf(db).commitTransaction(txn);
oneOf(db).endTransaction(txn);
@@ -413,13 +413,13 @@ public class BlogManagerImplTest extends BriarTestCase {
// Create the headers for the comment and its parent
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
will(returnValue(localAuthor1));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
will(returnValue(ourselvesInfo));
oneOf(clientHelper).getMessageMetadataAsDictionary(txn, messageId);
will(returnValue(postMeta));
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
will(returnValue(localAuthor1));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
will(returnValue(ourselvesInfo));
oneOf(db).commitTransaction(txn);
oneOf(db).endTransaction(txn);
@@ -523,14 +523,14 @@ public class BlogManagerImplTest extends BriarTestCase {
// Create the headers for the comment and the wrapped post
oneOf(clientHelper).parseAndValidateAuthor(authorList2);
will(returnValue(localAuthor2));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor2.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor2.getId());
will(returnValue(ourselvesInfo));
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
wrappedPostId);
will(returnValue(wrappedPostMeta));
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
will(returnValue(localAuthor1));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
will(returnValue(verifiedInfo));
oneOf(db).commitTransaction(txn);
oneOf(db).endTransaction(txn);
@@ -634,7 +634,7 @@ public class BlogManagerImplTest extends BriarTestCase {
// Create the headers for the comment and the wrapped post
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
will(returnValue(localAuthor1));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
will(returnValue(ourselvesInfo));
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
wrappedPostId);
@@ -775,14 +775,14 @@ public class BlogManagerImplTest extends BriarTestCase {
// the rewrapped post
oneOf(clientHelper).parseAndValidateAuthor(authorList2);
will(returnValue(localAuthor2));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor2.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor2.getId());
will(returnValue(ourselvesInfo));
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
wrappedCommentId);
will(returnValue(wrappedCommentMeta));
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
will(returnValue(localAuthor1));
- oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
+ oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
will(returnValue(verifiedInfo));
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
rewrappedPostId);
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
index 3140a5aad..94fad0819 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
@@ -21,7 +21,7 @@ import java.util.Iterator;
import static junit.framework.Assert.assertNotNull;
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.briarproject.briar.api.blog.MessageType.COMMENT;
import static org.briarproject.briar.api.blog.MessageType.POST;
diff --git a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java
index c323504fe..4ad9aa683 100644
--- a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java
@@ -10,6 +10,7 @@ import org.briarproject.briar.api.blog.BlogManager;
import org.briarproject.briar.api.feed.FeedManager;
import org.briarproject.briar.blog.BlogModule;
import org.briarproject.briar.client.BriarClientModule;
+import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.test.TestDnsModule;
import javax.inject.Singleton;
@@ -23,6 +24,7 @@ import dagger.Component;
BlogModule.class,
BriarClientModule.class,
FeedModule.class,
+ IdentityModule.class,
TestDnsModule.class,
TestSocksModule.class,
})
diff --git a/briar-core/src/test/java/org/briarproject/briar/identity/AuthorManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/identity/AuthorManagerImplTest.java
new file mode 100644
index 000000000..b8dcf74ea
--- /dev/null
+++ b/briar-core/src/test/java/org/briarproject/briar/identity/AuthorManagerImplTest.java
@@ -0,0 +1,115 @@
+package org.briarproject.briar.identity;
+
+import org.briarproject.bramble.api.contact.Contact;
+import org.briarproject.bramble.api.db.DatabaseComponent;
+import org.briarproject.bramble.api.db.DbException;
+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.identity.LocalAuthor;
+import org.briarproject.bramble.test.BrambleMockTestCase;
+import org.briarproject.bramble.test.DbExpectations;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.jmock.Expectations;
+import org.junit.Test;
+
+import java.util.Collection;
+
+import static java.util.Collections.emptyList;
+import static java.util.Collections.singletonList;
+import static org.briarproject.bramble.test.TestUtils.getAuthor;
+import static org.briarproject.bramble.test.TestUtils.getContact;
+import static org.briarproject.bramble.test.TestUtils.getLocalAuthor;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNKNOWN;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+public class AuthorManagerImplTest extends BrambleMockTestCase {
+
+ private final DatabaseComponent db = context.mock(DatabaseComponent.class);
+ private final IdentityManager identityManager =
+ context.mock(IdentityManager.class);
+
+ private final Author remote = getAuthor();
+ private final LocalAuthor localAuthor = getLocalAuthor();
+ private final AuthorId local = localAuthor.getId();
+ private final boolean verified = false;
+ private final Contact contact = getContact(remote, local, verified);
+
+ private final AuthorManagerImpl authorManager =
+ new AuthorManagerImpl(db, identityManager);
+
+ @Test
+ public void testGetAuthorInfo() throws Exception {
+ Transaction txn = new Transaction(null, true);
+
+ context.checking(new DbExpectations() {{
+ oneOf(identityManager).getLocalAuthor(txn);
+ will(returnValue(localAuthor));
+ oneOf(db).getContactsByAuthorId(txn, remote.getId());
+ will(returnValue(singletonList(contact)));
+ }});
+
+ AuthorInfo authorInfo =
+ authorManager.getAuthorInfo(txn, remote.getId());
+ assertEquals(UNVERIFIED, authorInfo.getStatus());
+ assertEquals(contact.getAlias(), authorInfo.getAlias());
+ }
+
+ @Test
+ public void testGetAuthorInfoTransaction() throws DbException {
+ Transaction txn = new Transaction(null, true);
+
+ // check unknown author
+ context.checking(new Expectations() {{
+ oneOf(identityManager).getLocalAuthor(txn);
+ will(returnValue(localAuthor));
+ oneOf(db).getContactsByAuthorId(txn, remote.getId());
+ will(returnValue(emptyList()));
+ }});
+
+ AuthorInfo authorInfo =
+ authorManager.getAuthorInfo(txn, remote.getId());
+ assertEquals(UNKNOWN, authorInfo.getStatus());
+ assertNull(authorInfo.getAlias());
+
+ // check unverified contact
+ checkAuthorInfoContext(txn, remote.getId(), singletonList(contact));
+ authorInfo = authorManager.getAuthorInfo(txn, remote.getId());
+ assertEquals(UNVERIFIED, authorInfo.getStatus());
+ assertEquals(contact.getAlias(), authorInfo.getAlias());
+
+ // check verified contact
+ Contact verified = getContact(remote, local, true);
+ checkAuthorInfoContext(txn, remote.getId(), singletonList(verified));
+ authorInfo = authorManager.getAuthorInfo(txn, remote.getId());
+ assertEquals(VERIFIED, authorInfo.getStatus());
+ assertEquals(verified.getAlias(), authorInfo.getAlias());
+
+ // check ourselves
+ context.checking(new Expectations() {{
+ oneOf(identityManager).getLocalAuthor(txn);
+ will(returnValue(localAuthor));
+ never(db).getContactsByAuthorId(txn, remote.getId());
+ }});
+
+ authorInfo = authorManager.getAuthorInfo(txn, localAuthor.getId());
+ assertEquals(OURSELVES, authorInfo.getStatus());
+ assertNull(authorInfo.getAlias());
+ }
+
+ private void checkAuthorInfoContext(Transaction txn, AuthorId authorId,
+ Collection contacts) throws DbException {
+ context.checking(new Expectations() {{
+ oneOf(identityManager).getLocalAuthor(txn);
+ will(returnValue(localAuthor));
+ oneOf(db).getContactsByAuthorId(txn, authorId);
+ will(returnValue(contacts));
+ }});
+ }
+
+}
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
index 88b437e51..7cd5b9226 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java
@@ -6,6 +6,7 @@ import org.briarproject.briar.avatar.AvatarModule;
import org.briarproject.briar.blog.BlogModule;
import org.briarproject.briar.client.BriarClientModule;
import org.briarproject.briar.forum.ForumModule;
+import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.privategroup.PrivateGroupModule;
import org.briarproject.briar.privategroup.invitation.GroupInvitationModule;
@@ -25,6 +26,7 @@ import dagger.Component;
BriarClientModule.class,
ForumModule.class,
GroupInvitationModule.class,
+ IdentityModule.class,
IntroductionModule.class,
MessagingModule.class,
PrivateGroupModule.class,
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java
index 634bd69f7..ae5d406f1 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java
@@ -5,6 +5,7 @@ import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule;
import org.briarproject.briar.client.BriarClientModule;
import org.briarproject.briar.forum.ForumModule;
+import org.briarproject.briar.identity.IdentityModule;
import javax.inject.Singleton;
@@ -16,6 +17,7 @@ import dagger.Component;
BrambleCoreModule.class,
BriarClientModule.class,
ForumModule.class,
+ IdentityModule.class,
MessagingModule.class
})
interface MessageSizeIntegrationTestComponent
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
index de3ea5400..51e7dcc57 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
@@ -24,7 +24,7 @@ import java.util.Collection;
import javax.annotation.Nullable;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_CONTACT;
import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_US;
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
index 52dd29b2e..8a87fbe20 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
@@ -20,7 +20,7 @@ import org.junit.Test;
import java.util.Collection;
-import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
import static org.briarproject.bramble.test.TestUtils.getRandomId;
diff --git a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
index 8f5ea0526..f09838228 100644
--- a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
@@ -29,6 +29,7 @@ import org.briarproject.briar.avatar.AvatarModule;
import org.briarproject.briar.blog.BlogModule;
import org.briarproject.briar.client.BriarClientModule;
import org.briarproject.briar.forum.ForumModule;
+import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.introduction.IntroductionModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.privategroup.PrivateGroupModule;
@@ -48,6 +49,7 @@ import dagger.Component;
BriarClientModule.class,
ForumModule.class,
GroupInvitationModule.class,
+ IdentityModule.class,
IntroductionModule.class,
MessagingModule.class,
PrivateGroupModule.class,
@@ -66,6 +68,8 @@ public interface BriarIntegrationTestComponent
void inject(GroupInvitationModule.EagerSingletons init);
+ void inject(IdentityModule.EagerSingletons init);
+
void inject(IntroductionModule.EagerSingletons init);
void inject(MessagingModule.EagerSingletons init);
@@ -128,6 +132,7 @@ public interface BriarIntegrationTestComponent
c.inject(new BlogModule.EagerSingletons());
c.inject(new ForumModule.EagerSingletons());
c.inject(new GroupInvitationModule.EagerSingletons());
+ c.inject(new IdentityModule.EagerSingletons());
c.inject(new IntroductionModule.EagerSingletons());
c.inject(new MessagingModule.EagerSingletons());
c.inject(new PrivateGroupModule.EagerSingletons());
diff --git a/briar-headless/src/main/java/org/briarproject/bramble/identity/OutputAuthor.kt b/briar-headless/src/main/java/org/briarproject/bramble/identity/OutputAuthor.kt
index cbdb0387e..baff61c9a 100644
--- a/briar-headless/src/main/java/org/briarproject/bramble/identity/OutputAuthor.kt
+++ b/briar-headless/src/main/java/org/briarproject/bramble/identity/OutputAuthor.kt
@@ -1,7 +1,7 @@
package org.briarproject.bramble.identity
import org.briarproject.bramble.api.identity.Author
-import org.briarproject.bramble.api.identity.AuthorInfo
+import org.briarproject.briar.api.identity.AuthorInfo
import org.briarproject.briar.headless.json.JsonDict
fun Author.output() = JsonDict(
diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt
index da84fb47e..aae2aa100 100644
--- a/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt
+++ b/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt
@@ -6,8 +6,8 @@ import io.mockk.Runs
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
-import org.briarproject.bramble.api.identity.AuthorInfo
-import org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES
+import org.briarproject.briar.api.identity.AuthorInfo
+import org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES
import org.briarproject.bramble.api.sync.MessageId
import org.briarproject.bramble.identity.output
import org.briarproject.bramble.util.StringUtils.getRandomString
diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt
index 2dbc6614c..221b95001 100644
--- a/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt
+++ b/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt
@@ -6,8 +6,8 @@ import io.mockk.CapturingSlot
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
-import org.briarproject.bramble.api.identity.AuthorInfo
-import org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED
+import org.briarproject.briar.api.identity.AuthorInfo
+import org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED
import org.briarproject.bramble.test.ImmediateExecutor
import org.briarproject.bramble.test.TestUtils.getRandomId
import org.briarproject.briar.api.client.SessionId
diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt
index 84c7c5ec2..a3a9d49c4 100644
--- a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt
+++ b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt
@@ -7,9 +7,9 @@ import io.javalin.plugin.json.JavalinJson.toJson
import io.mockk.*
import org.briarproject.bramble.api.contact.ContactId
import org.briarproject.bramble.api.db.NoSuchContactException
-import org.briarproject.bramble.api.identity.AuthorInfo
-import org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED
-import org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED
+import org.briarproject.briar.api.identity.AuthorInfo
+import org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED
+import org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED
import org.briarproject.bramble.api.sync.MessageId
import org.briarproject.bramble.api.sync.event.MessagesAckedEvent
import org.briarproject.bramble.api.sync.event.MessagesSentEvent