mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 20:29:52 +01:00
Move responsibility for pre-sharing blogs to sharing manager
to have all the code related to that in one place, so it is easier to maintain and to spot bugs. This also checks that only blogs without an existing sharing session are shared and initialized again. It extends an existing test to catch the missing check. This removes some debugging information from the previous commit to not leak private information via the sharing sessions. Fixes #979
This commit is contained in:
@@ -31,15 +31,11 @@ import org.jmock.Expectations;
|
||||
import org.jmock.Mockery;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.briarproject.bramble.api.identity.Author.Status.NONE;
|
||||
import static org.briarproject.bramble.api.identity.Author.Status.OURSELVES;
|
||||
import static org.briarproject.bramble.api.identity.Author.Status.VERIFIED;
|
||||
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.api.sync.Group.Visibility.SHARED;
|
||||
import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_LENGTH;
|
||||
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
|
||||
import static org.briarproject.bramble.test.TestUtils.getRandomId;
|
||||
@@ -117,29 +113,12 @@ public class BlogManagerImplTest extends BriarTestCase {
|
||||
public void testCreateLocalState() throws DbException {
|
||||
final Transaction txn = new Transaction(null, false);
|
||||
|
||||
final ContactId contactId = new ContactId(0);
|
||||
|
||||
Contact contact = new Contact(contactId, blog2.getAuthor(),
|
||||
blog1.getAuthor().getId(), true, true);
|
||||
final Collection<Contact> contacts = Collections.singletonList(contact);
|
||||
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(identityManager).getLocalAuthor(txn);
|
||||
will(returnValue(blog1.getAuthor()));
|
||||
oneOf(blogFactory).createBlog(blog1.getAuthor());
|
||||
will(returnValue(blog1));
|
||||
oneOf(db).addGroup(txn, blog1.getGroup());
|
||||
oneOf(db).getContacts(txn);
|
||||
will(returnValue(contacts));
|
||||
oneOf(blogFactory).createBlog(blog2.getAuthor());
|
||||
will(returnValue(blog2));
|
||||
oneOf(db).addGroup(txn, blog2.getGroup());
|
||||
oneOf(db).setGroupVisibility(txn, contactId, blog2.getId(), SHARED);
|
||||
oneOf(identityManager).getLocalAuthor(txn);
|
||||
will(returnValue(blog1.getAuthor()));
|
||||
oneOf(blogFactory).createBlog(blog1.getAuthor());
|
||||
will(returnValue(blog1));
|
||||
oneOf(db).setGroupVisibility(txn, contactId, blog1.getId(), SHARED);
|
||||
}});
|
||||
|
||||
blogManager.createLocalState(txn);
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.jodah.concurrentunit.Waiter;
|
||||
import org.briarproject.bramble.api.contact.Contact;
|
||||
import org.briarproject.bramble.api.db.DbException;
|
||||
import org.briarproject.bramble.api.db.NoSuchGroupException;
|
||||
import org.briarproject.bramble.api.db.Transaction;
|
||||
import org.briarproject.bramble.api.event.Event;
|
||||
import org.briarproject.bramble.api.event.EventListener;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
@@ -492,6 +493,26 @@ public class BlogSharingIntegrationTest
|
||||
// 1 can again share blog 1 with 0
|
||||
assertTrue(
|
||||
blogSharingManager1.canBeShared(blog1.getId(), contact0From1));
|
||||
|
||||
// re-create local state (simulates sign-out and sign-in)
|
||||
Transaction txn0 = db0.startTransaction(false);
|
||||
((BlogSharingManagerImpl) blogSharingManager0).createLocalState(txn0);
|
||||
db0.commitTransaction(txn0);
|
||||
db0.endTransaction(txn0);
|
||||
Transaction txn1 = db1.startTransaction(false);
|
||||
((BlogSharingManagerImpl) blogSharingManager1).createLocalState(txn1);
|
||||
db1.commitTransaction(txn1);
|
||||
db1.endTransaction(txn1);
|
||||
|
||||
// ensure there's no error with the sessions by checking shareability
|
||||
assertFalse(
|
||||
blogSharingManager0.canBeShared(blog1.getId(), contact1From0));
|
||||
assertTrue(
|
||||
blogSharingManager1.canBeShared(blog1.getId(), contact0From1));
|
||||
|
||||
// contacts should still be able to remove each other without errors
|
||||
contactManager0.removeContact(contactId1From0);
|
||||
contactManager1.removeContact(contactId0From1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user