Merge branch '941-reblogged-rss-post-has-wrong-icon' into 'master'

Store RSS flag for wrapped blog posts

Closes #941

See merge request !524
This commit is contained in:
Torsten Grote
2017-04-17 18:23:41 +00:00
7 changed files with 84 additions and 41 deletions

View File

@@ -63,7 +63,7 @@ class BlogFactoryImpl implements BlogFactory {
@Override @Override
public Blog parseBlog(Group group) throws FormatException { public Blog parseBlog(Group group) throws FormatException {
byte[] descriptor = group.getDescriptor(); byte[] descriptor = group.getDescriptor();
// Author Name, Public Key // Author name, public key, RSS feed
BdfList blog = clientHelper.toList(descriptor); BdfList blog = clientHelper.toList(descriptor);
String name = blog.getString(0); String name = blog.getString(0);
if (name.length() > MAX_AUTHOR_NAME_LENGTH) if (name.length() > MAX_AUTHOR_NAME_LENGTH)
@@ -72,8 +72,7 @@ class BlogFactoryImpl implements BlogFactory {
if (publicKey.length > MAX_PUBLIC_KEY_LENGTH) if (publicKey.length > MAX_PUBLIC_KEY_LENGTH)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
Author author = Author author = authorFactory.createAuthor(name, publicKey);
authorFactory.createAuthor(name, publicKey);
boolean rssFeed = blog.getBoolean(2); boolean rssFeed = blog.getBoolean(2);
return new Blog(group, author, rssFeed); return new Blog(group, author, rssFeed);
} }

View File

@@ -373,6 +373,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
// Re-wrap wrapped post without adding another wrapping layer // Re-wrap wrapped post without adding another wrapping layer
wMessage = blogPostFactory.rewrapWrappedPost(groupId, body); wMessage = blogPostFactory.rewrapWrappedPost(groupId, body);
meta.put(KEY_TYPE, WRAPPED_POST.getInt()); meta.put(KEY_TYPE, WRAPPED_POST.getInt());
meta.put(KEY_RSS_FEED, pOriginalHeader.isRssFeed());
} else if (type == WRAPPED_COMMENT) { } else if (type == WRAPPED_COMMENT) {
BlogCommentHeader wComment = (BlogCommentHeader) pOriginalHeader; BlogCommentHeader wComment = (BlogCommentHeader) pOriginalHeader;
MessageId wrappedId = MessageId wrappedId =

View File

@@ -201,6 +201,7 @@ class BlogPostValidator extends BdfMessageValidator {
// Get and Validate the Wrapped Message // Get and Validate the Wrapped Message
Group wGroup = groupFactory Group wGroup = groupFactory
.createGroup(BlogManagerImpl.CLIENT_ID, descriptor); .createGroup(BlogManagerImpl.CLIENT_ID, descriptor);
Blog wBlog = blogFactory.parseBlog(wGroup);
BdfList wBodyList = BdfList.of(POST.getInt(), content, signature); BdfList wBodyList = BdfList.of(POST.getInt(), content, signature);
byte[] wBody = clientHelper.toByteArray(wBodyList); byte[] wBody = clientHelper.toByteArray(wBodyList);
Message wMessage = Message wMessage =
@@ -213,6 +214,7 @@ class BlogPostValidator extends BdfMessageValidator {
meta.put(KEY_ORIGINAL_MSG_ID, wMessage.getId()); meta.put(KEY_ORIGINAL_MSG_ID, wMessage.getId());
meta.put(KEY_TIMESTAMP, wTimestamp); meta.put(KEY_TIMESTAMP, wTimestamp);
meta.put(KEY_AUTHOR, c.getDictionary().getDictionary(KEY_AUTHOR)); meta.put(KEY_AUTHOR, c.getDictionary().getDictionary(KEY_AUTHOR));
meta.put(KEY_RSS_FEED, wBlog.isRssFeed());
return new BdfMessageContext(meta); return new BdfMessageContext(meta);
} }

View File

@@ -44,6 +44,7 @@ import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR_ID;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR_NAME; import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR_NAME;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_PUBLIC_KEY; import static org.briarproject.briar.api.blog.BlogConstants.KEY_PUBLIC_KEY;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_READ; import static org.briarproject.briar.api.blog.BlogConstants.KEY_READ;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_RSS_FEED;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIMESTAMP; import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIMESTAMP;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIME_RECEIVED; import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIME_RECEIVED;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_TYPE; import static org.briarproject.briar.api.blog.BlogConstants.KEY_TYPE;
@@ -198,12 +199,17 @@ public class BlogManagerImplTest extends BriarTestCase {
new BdfEntry(KEY_TYPE, POST.getInt()), new BdfEntry(KEY_TYPE, POST.getInt()),
new BdfEntry(KEY_TIMESTAMP, message.getTimestamp()), new BdfEntry(KEY_TIMESTAMP, message.getTimestamp()),
new BdfEntry(KEY_AUTHOR, authorMeta), new BdfEntry(KEY_AUTHOR, authorMeta),
new BdfEntry(KEY_READ, true) new BdfEntry(KEY_READ, true),
new BdfEntry(KEY_RSS_FEED, false)
); );
context.checking(new Expectations() {{ context.checking(new Expectations() {{
oneOf(db).startTransaction(false); oneOf(db).startTransaction(false);
will(returnValue(txn)); will(returnValue(txn));
oneOf(db).getGroup(txn, blog1.getId());
will(returnValue(blog1.getGroup()));
oneOf(blogFactory).parseBlog(blog1.getGroup());
will(returnValue(blog1));
oneOf(clientHelper) oneOf(clientHelper)
.addLocalMessage(txn, message, meta, true); .addLocalMessage(txn, message, meta, true);
oneOf(identityManager) oneOf(identityManager)

View File

@@ -2,6 +2,7 @@ package org.briarproject.briar.blog;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.LocalAuthor;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.test.TestDatabaseModule; import org.briarproject.bramble.test.TestDatabaseModule;
import org.briarproject.briar.api.blog.Blog; import org.briarproject.briar.api.blog.Blog;
@@ -22,6 +23,9 @@ import java.util.Iterator;
import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertNotNull; 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.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
import static org.briarproject.bramble.test.TestUtils.getRandomString; import static org.briarproject.bramble.test.TestUtils.getRandomString;
import static org.briarproject.briar.api.blog.MessageType.COMMENT; 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.POST;
@@ -35,6 +39,7 @@ public class BlogManagerIntegrationTest
private BlogManager blogManager0, blogManager1; private BlogManager blogManager0, blogManager1;
private Blog blog0, blog1, rssBlog; private Blog blog0, blog1, rssBlog;
private LocalAuthor rssAuthor;
@Rule @Rule
public ExpectedException thrown = ExpectedException.none(); public ExpectedException thrown = ExpectedException.none();
@@ -46,6 +51,10 @@ public class BlogManagerIntegrationTest
author0 = identityManager0.getLocalAuthor(); author0 = identityManager0.getLocalAuthor();
author1 = identityManager1.getLocalAuthor(); author1 = identityManager1.getLocalAuthor();
rssAuthor = c0.getAuthorFactory().createLocalAuthor(
getRandomString(MAX_AUTHOR_NAME_LENGTH),
getRandomBytes(MAX_PUBLIC_KEY_LENGTH),
getRandomBytes(123));
blogManager0 = c0.getBlogManager(); blogManager0 = c0.getBlogManager();
blogManager1 = c1.getBlogManager(); blogManager1 = c1.getBlogManager();
@@ -53,7 +62,7 @@ public class BlogManagerIntegrationTest
blog0 = blogFactory.createBlog(author0); blog0 = blogFactory.createBlog(author0);
blog1 = blogFactory.createBlog(author1); blog1 = blogFactory.createBlog(author1);
rssBlog = blogFactory.createFeedBlog(author0); rssBlog = blogFactory.createFeedBlog(rssAuthor);
Transaction txn = db0.startTransaction(false); Transaction txn = db0.startTransaction(false);
blogManager0.addBlog(txn, rssBlog); blogManager0.addBlog(txn, rssBlog);
db0.commitTransaction(txn); db0.commitTransaction(txn);
@@ -82,11 +91,12 @@ public class BlogManagerIntegrationTest
@Test @Test
public void testPersonalBlogInitialisation() throws Exception { public void testPersonalBlogInitialisation() throws Exception {
Collection<Blog> blogs0 = blogManager0.getBlogs(); Collection<Blog> blogs0 = blogManager0.getBlogs();
assertEquals(3, blogs0.size()); assertEquals(4, blogs0.size());
Iterator<Blog> i0 = blogs0.iterator(); Iterator<Blog> i0 = blogs0.iterator();
assertEquals(author0, i0.next().getAuthor()); assertEquals(author0, i0.next().getAuthor());
assertEquals(author1, i0.next().getAuthor()); assertEquals(author1, i0.next().getAuthor());
assertEquals(author2, i0.next().getAuthor()); assertEquals(author2, i0.next().getAuthor());
assertEquals(rssAuthor, i0.next().getAuthor());
Collection<Blog> blogs1 = blogManager1.getBlogs(); Collection<Blog> blogs1 = blogManager1.getBlogs();
assertEquals(2, blogs1.size()); assertEquals(2, blogs1.size());
@@ -103,11 +113,14 @@ public class BlogManagerIntegrationTest
assertEquals(blog0, blogManager1.getBlog(blog0.getId())); assertEquals(blog0, blogManager1.getBlog(blog0.getId()));
assertEquals(blog1, blogManager0.getBlog(blog1.getId())); assertEquals(blog1, blogManager0.getBlog(blog1.getId()));
assertEquals(blog1, blogManager1.getBlog(blog1.getId())); assertEquals(blog1, blogManager1.getBlog(blog1.getId()));
assertEquals(rssBlog, blogManager0.getBlog(rssBlog.getId()));
assertEquals(1, blogManager0.getBlogs(author0).size()); assertEquals(1, blogManager0.getBlogs(author0).size());
assertEquals(1, blogManager1.getBlogs(author0).size()); assertEquals(1, blogManager1.getBlogs(author0).size());
assertEquals(1, blogManager0.getBlogs(author1).size()); assertEquals(1, blogManager0.getBlogs(author1).size());
assertEquals(1, blogManager1.getBlogs(author1).size()); assertEquals(1, blogManager1.getBlogs(author1).size());
assertEquals(1, blogManager0.getBlogs(rssAuthor).size());
assertEquals(0, blogManager1.getBlogs(rssAuthor).size());
} }
@Test @Test
@@ -287,9 +300,8 @@ public class BlogManagerIntegrationTest
assertEquals(POST, headers1.iterator().next().getType()); assertEquals(POST, headers1.iterator().next().getType());
// 1 reblogs that blog post // 1 reblogs that blog post
blogManager1 blogManager1.addLocalComment(author1, blog1.getId(), null,
.addLocalComment(author1, blog1.getId(), null, headers1.iterator().next());
headers1.iterator().next());
// sync comment over // sync comment over
sync1To0(2, true); sync1To0(2, true);
@@ -312,8 +324,7 @@ public class BlogManagerIntegrationTest
sync0To1(3, true); sync0To1(3, true);
// check that comment arrived // check that comment arrived
headers1 = headers1 = blogManager1.getPostHeaders(blog0.getId());
blogManager1.getPostHeaders(blog0.getId());
assertEquals(2, headers1.size()); assertEquals(2, headers1.size());
// get header of comment // get header of comment
@@ -453,7 +464,7 @@ public class BlogManagerIntegrationTest
// make sure it got saved as an RSS feed post // make sure it got saved as an RSS feed post
headers = blogManager0.getPostHeaders(blog0.getId()); headers = blogManager0.getPostHeaders(blog0.getId());
assertEquals(2, headers.size()); assertEquals(2, headers.size());
for (BlogPostHeader h: headers) { for (BlogPostHeader h : headers) {
assertTrue(h instanceof BlogCommentHeader); assertTrue(h instanceof BlogCommentHeader);
assertEquals(COMMENT, h.getType()); assertEquals(COMMENT, h.getType());
assertTrue(((BlogCommentHeader) h).getRootPost().isRssFeed()); assertTrue(((BlogCommentHeader) h).getRootPost().isRssFeed());

View File

@@ -38,6 +38,7 @@ import static org.briarproject.briar.api.blog.BlogConstants.KEY_ORIGINAL_PARENT_
import static org.briarproject.briar.api.blog.BlogConstants.KEY_PARENT_MSG_ID; import static org.briarproject.briar.api.blog.BlogConstants.KEY_PARENT_MSG_ID;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_PUBLIC_KEY; import static org.briarproject.briar.api.blog.BlogConstants.KEY_PUBLIC_KEY;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_READ; import static org.briarproject.briar.api.blog.BlogConstants.KEY_READ;
import static org.briarproject.briar.api.blog.BlogConstants.KEY_RSS_FEED;
import static org.briarproject.briar.api.blog.BlogPostFactory.SIGNING_LABEL_COMMENT; import static org.briarproject.briar.api.blog.BlogPostFactory.SIGNING_LABEL_COMMENT;
import static org.briarproject.briar.api.blog.BlogPostFactory.SIGNING_LABEL_POST; import static org.briarproject.briar.api.blog.BlogPostFactory.SIGNING_LABEL_POST;
import static org.briarproject.briar.api.blog.MessageType.COMMENT; import static org.briarproject.briar.api.blog.MessageType.COMMENT;
@@ -50,7 +51,7 @@ import static org.junit.Assert.assertFalse;
public class BlogPostValidatorTest extends BriarTestCase { public class BlogPostValidatorTest extends BriarTestCase {
private final Mockery context = new Mockery(); private final Mockery context = new Mockery();
private final Blog blog; private final Blog blog, rssBlog;
private final BdfDictionary authorDict; private final BdfDictionary authorDict;
private final ClientId clientId; private final ClientId clientId;
private final byte[] descriptor; private final byte[] descriptor;
@@ -80,6 +81,7 @@ public class BlogPostValidatorTest extends BriarTestCase {
new BdfEntry(KEY_PUBLIC_KEY, author.getPublicKey()) new BdfEntry(KEY_PUBLIC_KEY, author.getPublicKey())
); );
blog = new Blog(group, author, false); blog = new Blog(group, author, false);
rssBlog = new Blog(group, author, true);
MessageId messageId = new MessageId(TestUtils.getRandomId()); MessageId messageId = new MessageId(TestUtils.getRandomId());
long timestamp = System.currentTimeMillis(); long timestamp = System.currentTimeMillis();
@@ -97,17 +99,28 @@ public class BlogPostValidatorTest extends BriarTestCase {
@Test @Test
public void testValidateProperBlogPost() public void testValidateProperBlogPost()
throws IOException, GeneralSecurityException { throws IOException, GeneralSecurityException {
testValidateProperBlogPost(blog, false);
}
@Test
public void testValidateProperRssBlogPost()
throws IOException, GeneralSecurityException {
testValidateProperBlogPost(rssBlog, true);
}
private void testValidateProperBlogPost(Blog b, boolean rssFeed)
throws IOException, GeneralSecurityException {
final byte[] sigBytes = TestUtils.getRandomBytes(42); final byte[] sigBytes = TestUtils.getRandomBytes(42);
BdfList m = BdfList.of(POST.getInt(), body, sigBytes); BdfList m = BdfList.of(POST.getInt(), body, sigBytes);
BdfList signed = BdfList signed = BdfList.of(b.getId(), message.getTimestamp(), body);
BdfList.of(blog.getId(), message.getTimestamp(), body); expectCrypto(b, SIGNING_LABEL_POST, signed, sigBytes);
expectCrypto(SIGNING_LABEL_POST, signed, sigBytes);
final BdfDictionary result = final BdfDictionary result =
validator.validateMessage(message, group, m).getDictionary(); validator.validateMessage(message, group, m).getDictionary();
assertEquals(authorDict, result.getDictionary(KEY_AUTHOR)); assertEquals(authorDict, result.getDictionary(KEY_AUTHOR));
assertFalse(result.getBoolean(KEY_READ)); assertFalse(result.getBoolean(KEY_READ));
assertEquals(rssFeed, result.getBoolean(KEY_RSS_FEED));
context.assertIsSatisfied(); context.assertIsSatisfied();
} }
@@ -137,14 +150,12 @@ public class BlogPostValidatorTest extends BriarTestCase {
MessageId pOriginalId = new MessageId(TestUtils.getRandomId()); MessageId pOriginalId = new MessageId(TestUtils.getRandomId());
MessageId currentId = new MessageId(TestUtils.getRandomId()); MessageId currentId = new MessageId(TestUtils.getRandomId());
final byte[] sigBytes = TestUtils.getRandomBytes(42); final byte[] sigBytes = TestUtils.getRandomBytes(42);
BdfList m = BdfList m = BdfList.of(COMMENT.getInt(), comment, pOriginalId,
BdfList.of(COMMENT.getInt(), comment, pOriginalId, currentId, currentId, sigBytes);
sigBytes);
BdfList signed = BdfList signed = BdfList.of(blog.getId(), message.getTimestamp(),
BdfList.of(blog.getId(), message.getTimestamp(), comment, comment, pOriginalId, currentId);
pOriginalId, currentId); expectCrypto(blog, SIGNING_LABEL_COMMENT, signed, sigBytes);
expectCrypto(SIGNING_LABEL_COMMENT, signed, sigBytes);
final BdfDictionary result = final BdfDictionary result =
validator.validateMessage(message, group, m).getDictionary(); validator.validateMessage(message, group, m).getDictionary();
@@ -164,14 +175,12 @@ public class BlogPostValidatorTest extends BriarTestCase {
MessageId originalId = new MessageId(TestUtils.getRandomId()); MessageId originalId = new MessageId(TestUtils.getRandomId());
MessageId currentId = new MessageId(TestUtils.getRandomId()); MessageId currentId = new MessageId(TestUtils.getRandomId());
final byte[] sigBytes = TestUtils.getRandomBytes(42); final byte[] sigBytes = TestUtils.getRandomBytes(42);
BdfList m = BdfList m = BdfList.of(COMMENT.getInt(), null, originalId, currentId,
BdfList.of(COMMENT.getInt(), null, originalId, currentId, sigBytes);
sigBytes);
BdfList signed = BdfList signed = BdfList.of(blog.getId(), message.getTimestamp(), null,
BdfList.of(blog.getId(), message.getTimestamp(), null, originalId, currentId);
originalId, currentId); expectCrypto(blog, SIGNING_LABEL_COMMENT, signed, sigBytes);
expectCrypto(SIGNING_LABEL_COMMENT, signed, sigBytes);
final BdfDictionary result = final BdfDictionary result =
validator.validateMessage(message, group, m).getDictionary(); validator.validateMessage(message, group, m).getDictionary();
@@ -182,22 +191,33 @@ public class BlogPostValidatorTest extends BriarTestCase {
@Test @Test
public void testValidateProperWrappedPost() public void testValidateProperWrappedPost()
throws IOException, GeneralSecurityException { throws IOException, GeneralSecurityException {
testValidateProperWrappedPost(blog, false);
}
@Test
public void testValidateProperWrappedRssPost()
throws IOException, GeneralSecurityException {
testValidateProperWrappedPost(rssBlog, true);
}
private void testValidateProperWrappedPost(final Blog b, boolean rssFeed)
throws IOException, GeneralSecurityException {
// group descriptor, timestamp, content, signature // group descriptor, timestamp, content, signature
final byte[] sigBytes = TestUtils.getRandomBytes(42); final byte[] sigBytes = TestUtils.getRandomBytes(42);
BdfList m = BdfList m = BdfList.of(WRAPPED_POST.getInt(), descriptor,
BdfList.of(WRAPPED_POST.getInt(), descriptor, message.getTimestamp(), body, sigBytes);
message.getTimestamp(), body, sigBytes);
BdfList signed = BdfList signed = BdfList.of(b.getId(), message.getTimestamp(), body);
BdfList.of(blog.getId(), message.getTimestamp(), body); expectCrypto(b, SIGNING_LABEL_POST, signed, sigBytes);
expectCrypto(SIGNING_LABEL_POST, signed, sigBytes);
final BdfList originalList = BdfList.of(POST.getInt(), body, sigBytes); final BdfList originalList = BdfList.of(POST.getInt(), body, sigBytes);
final byte[] originalBody = TestUtils.getRandomBytes(42); final byte[] originalBody = TestUtils.getRandomBytes(42);
context.checking(new Expectations() {{ context.checking(new Expectations() {{
oneOf(groupFactory).createGroup(clientId, descriptor); oneOf(groupFactory).createGroup(clientId, descriptor);
will(returnValue(blog.getGroup())); will(returnValue(b.getGroup()));
oneOf(blogFactory).parseBlog(b.getGroup());
will(returnValue(b));
oneOf(clientHelper).toByteArray(originalList); oneOf(clientHelper).toByteArray(originalList);
will(returnValue(originalBody)); will(returnValue(originalBody));
oneOf(messageFactory) oneOf(messageFactory)
@@ -210,6 +230,7 @@ public class BlogPostValidatorTest extends BriarTestCase {
validator.validateMessage(message, group, m).getDictionary(); validator.validateMessage(message, group, m).getDictionary();
assertEquals(authorDict, result.getDictionary(KEY_AUTHOR)); assertEquals(authorDict, result.getDictionary(KEY_AUTHOR));
assertEquals(rssFeed, result.getBoolean(KEY_RSS_FEED));
context.assertIsSatisfied(); context.assertIsSatisfied();
} }
@@ -229,7 +250,7 @@ public class BlogPostValidatorTest extends BriarTestCase {
BdfList signed = BdfList.of(blog.getId(), message.getTimestamp(), BdfList signed = BdfList.of(blog.getId(), message.getTimestamp(),
comment, originalId, oldId); comment, originalId, oldId);
expectCrypto(SIGNING_LABEL_COMMENT, signed, sigBytes); expectCrypto(blog, SIGNING_LABEL_COMMENT, signed, sigBytes);
final BdfList originalList = BdfList.of(COMMENT.getInt(), comment, final BdfList originalList = BdfList.of(COMMENT.getInt(), comment,
originalId, oldId, sigBytes); originalId, oldId, sigBytes);
@@ -257,11 +278,12 @@ public class BlogPostValidatorTest extends BriarTestCase {
context.assertIsSatisfied(); context.assertIsSatisfied();
} }
private void expectCrypto(final String label, final BdfList signed, private void expectCrypto(final Blog b, final String label,
final byte[] sig) throws IOException, GeneralSecurityException { final BdfList signed, final byte[] sig)
throws IOException, GeneralSecurityException {
context.checking(new Expectations() {{ context.checking(new Expectations() {{
oneOf(blogFactory).parseBlog(group); oneOf(blogFactory).parseBlog(group);
will(returnValue(blog)); will(returnValue(b));
oneOf(clientHelper) oneOf(clientHelper)
.verifySignature(label, sig, author.getPublicKey(), signed); .verifySignature(label, sig, author.getPublicKey(), signed);
}}); }});

View File

@@ -4,6 +4,7 @@ import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.identity.AuthorFactory;
import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.properties.TransportPropertyManager; import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -136,4 +137,5 @@ public interface BriarIntegrationTestComponent {
TransportPropertyManager getTransportPropertyManager(); TransportPropertyManager getTransportPropertyManager();
AuthorFactory getAuthorFactory();
} }