Updated group-related events and exceptions.

This commit is contained in:
akwizgran
2016-01-27 17:29:17 +00:00
parent 9d537dce00
commit 3837efca6b
23 changed files with 159 additions and 226 deletions

View File

@@ -10,13 +10,15 @@ import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.MessageExistsException;
import org.briarproject.api.db.Metadata;
import org.briarproject.api.db.NoSuchContactException;
import org.briarproject.api.db.NoSuchGroupException;
import org.briarproject.api.db.NoSuchLocalAuthorException;
import org.briarproject.api.db.NoSuchMessageException;
import org.briarproject.api.db.NoSuchSubscriptionException;
import org.briarproject.api.db.NoSuchTransportException;
import org.briarproject.api.db.StorageStatus;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.LocalSubscriptionsUpdatedEvent;
import org.briarproject.api.event.GroupAddedEvent;
import org.briarproject.api.event.GroupRemovedEvent;
import org.briarproject.api.event.GroupVisibilityUpdatedEvent;
import org.briarproject.api.event.MessageAddedEvent;
import org.briarproject.api.event.MessageRequestedEvent;
import org.briarproject.api.event.MessageToAckEvent;
@@ -25,8 +27,6 @@ import org.briarproject.api.event.MessageValidatedEvent;
import org.briarproject.api.event.MessagesAckedEvent;
import org.briarproject.api.event.MessagesSentEvent;
import org.briarproject.api.event.SettingsUpdatedEvent;
import org.briarproject.api.event.SubscriptionAddedEvent;
import org.briarproject.api.event.SubscriptionRemovedEvent;
import org.briarproject.api.identity.Author;
import org.briarproject.api.identity.AuthorId;
import org.briarproject.api.identity.LocalAuthor;
@@ -146,8 +146,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
oneOf(database).containsGroup(txn, groupId);
will(returnValue(false));
oneOf(database).addGroup(txn, group);
will(returnValue(true));
oneOf(eventBus).broadcast(with(any(SubscriptionAddedEvent.class)));
oneOf(eventBus).broadcast(with(any(GroupAddedEvent.class)));
// addGroup() again
oneOf(database).containsGroup(txn, groupId);
will(returnValue(true));
@@ -160,10 +159,9 @@ public class DatabaseComponentImplTest extends BriarTestCase {
oneOf(database).getVisibility(txn, groupId);
will(returnValue(Collections.emptyList()));
oneOf(database).removeGroup(txn, groupId);
oneOf(eventBus).broadcast(with(any(GroupRemovedEvent.class)));
oneOf(eventBus).broadcast(with(any(
SubscriptionRemovedEvent.class)));
oneOf(eventBus).broadcast(with(any(
LocalSubscriptionsUpdatedEvent.class)));
GroupVisibilityUpdatedEvent.class)));
// removeContact()
oneOf(database).containsContact(txn, contactId);
will(returnValue(true));
@@ -222,7 +220,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
}
@Test
public void testLocalMessagesAreNotStoredUnlessSubscribed()
public void testLocalMessagesAreNotStoredUnlessGroupExists()
throws Exception {
Mockery context = new Mockery();
@SuppressWarnings("unchecked")
@@ -244,7 +242,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
try {
db.addLocalMessage(message, clientId, metadata, true);
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
@@ -446,7 +444,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
}
@Test
public void testVariousMethodsThrowExceptionIfSubscriptionIsMissing()
public void testVariousMethodsThrowExceptionIfGroupIsMissing()
throws Exception {
Mockery context = new Mockery();
@SuppressWarnings("unchecked")
@@ -454,7 +452,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
final EventBus eventBus = context.mock(EventBus.class);
context.checking(new Expectations() {{
// Check whether the subscription is in the DB (which it's not)
// Check whether the group is in the DB (which it's not)
exactly(7).of(database).startTransaction();
will(returnValue(txn));
exactly(7).of(database).containsGroup(txn, groupId);
@@ -470,49 +468,49 @@ public class DatabaseComponentImplTest extends BriarTestCase {
try {
db.getGroup(groupId);
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
try {
db.getGroupMetadata(groupId);
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
try {
db.getMessageStatus(contactId, groupId);
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
try {
db.getVisibility(groupId);
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
try {
db.mergeGroupMetadata(groupId, metadata);
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
try {
db.removeGroup(group);
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
try {
db.setVisibility(groupId, Collections.<ContactId>emptyList());
fail();
} catch (NoSuchSubscriptionException expected) {
} catch (NoSuchGroupException expected) {
// Expected
}
@@ -1039,7 +1037,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
oneOf(database).setVisibleToAll(txn, groupId, false);
oneOf(database).commitTransaction(txn);
oneOf(eventBus).broadcast(with(any(
LocalSubscriptionsUpdatedEvent.class)));
GroupVisibilityUpdatedEvent.class)));
}});
DatabaseComponent db = createDatabaseComponent(database, eventBus,
shutdown);
@@ -1103,7 +1101,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
oneOf(database).setVisibleToAll(txn, groupId, false);
oneOf(database).commitTransaction(txn);
oneOf(eventBus).broadcast(with(any(
LocalSubscriptionsUpdatedEvent.class)));
GroupVisibilityUpdatedEvent.class)));
// setVisibleToAll()
oneOf(database).startTransaction();
will(returnValue(txn));
@@ -1117,7 +1115,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
oneOf(database).addVisibility(txn, contactId1, groupId);
oneOf(database).commitTransaction(txn);
oneOf(eventBus).broadcast(with(any(
LocalSubscriptionsUpdatedEvent.class)));
GroupVisibilityUpdatedEvent.class)));
}});
DatabaseComponent db = createDatabaseComponent(database, eventBus,
shutdown);

View File

@@ -146,15 +146,15 @@ public class H2DatabaseTest extends BriarTestCase {
}
@Test
public void testUnsubscribingRemovesMessage() throws Exception {
public void testRemovingGroupRemovesMessage() throws Exception {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Subscribe to a group and store a message
// Add a group and a message
db.addGroup(txn, group);
db.addMessage(txn, message, VALID, true);
// Unsubscribing from the group should remove the message
// Removing the group should remove the message
assertTrue(db.containsMessage(txn, messageId));
db.removeGroup(txn, groupId);
assertFalse(db.containsMessage(txn, messageId));
@@ -168,7 +168,7 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact, subscribe to a group and store a message
// Add a contact, a group and a message
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
@@ -281,7 +281,7 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact, subscribe to a group and store a message
// Add a contact, a group and a message
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
@@ -307,14 +307,14 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact, subscribe to a group and store a message
// Add a contact, a group and a message
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
db.addMessage(txn, message, VALID, true);
db.addStatus(txn, contactId, messageId, false, false);
// The subscription is not visible to the contact, so the message
// The group is not visible to the contact, so the message
// should not be sendable
Collection<MessageId> ids = db.getMessagesToSend(txn, contactId,
ONE_MEGABYTE);
@@ -322,7 +322,7 @@ public class H2DatabaseTest extends BriarTestCase {
ids = db.getMessagesToOffer(txn, contactId, 100);
assertTrue(ids.isEmpty());
// Making the subscription visible should make the message sendable
// Making the group visible should make the message sendable
db.addVisibility(txn, contactId, groupId);
ids = db.getMessagesToSend(txn, contactId, ONE_MEGABYTE);
assertEquals(Collections.singletonList(messageId), ids);
@@ -345,7 +345,7 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact and subscribe to a group
// Add a contact and a group
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
@@ -381,7 +381,7 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact, subscribe to a group and store a message
// Add a contact, a group and a message
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
@@ -545,7 +545,7 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact and subscribe to a group
// Add a contact and a group
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
@@ -559,7 +559,7 @@ public class H2DatabaseTest extends BriarTestCase {
}
@Test
public void testContainsVisibleMessageRequiresLocalSubscription()
public void testContainsVisibleMessageRequiresGroupInDatabase()
throws Exception {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
@@ -568,7 +568,7 @@ public class H2DatabaseTest extends BriarTestCase {
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
// There's no local subscription for the group
// The group is not in the database
assertFalse(db.containsVisibleMessage(txn, contactId, messageId));
db.commitTransaction(txn);
@@ -576,19 +576,19 @@ public class H2DatabaseTest extends BriarTestCase {
}
@Test
public void testContainsVisibleMessageRequiresVisibileSubscription()
public void testContainsVisibleMessageRequiresVisibileGroup()
throws Exception {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact, subscribe to a group and store a message
// Add a contact, a group and a message
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
db.addMessage(txn, message, VALID, true);
db.addStatus(txn, contactId, messageId, false, false);
// The subscription is not visible
// The group is not visible
assertFalse(db.containsVisibleMessage(txn, contactId, messageId));
db.commitTransaction(txn);
@@ -600,7 +600,7 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact and subscribe to a group
// Add a contact and a group
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
db.addGroup(txn, group);
@@ -622,7 +622,7 @@ public class H2DatabaseTest extends BriarTestCase {
}
@Test
public void testMultipleSubscriptionsAndUnsubscriptions() throws Exception {
public void testMultipleGroupChanges() throws Exception {
// Create some groups
List<Group> groups = new ArrayList<Group>();
for (int i = 0; i < 100; i++) {
@@ -635,7 +635,7 @@ public class H2DatabaseTest extends BriarTestCase {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add a contact and subscribe to the groups
// Add a contact and the groups
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
for (Group g : groups) db.addGroup(txn, g);
@@ -951,7 +951,7 @@ public class H2DatabaseTest extends BriarTestCase {
db.addLocalAuthor(txn, localAuthor);
assertEquals(contactId, db.addContact(txn, author, localAuthorId));
// Subscribe to a group and make it visible to the contact
// Add a group and make it visible to the contact
db.addGroup(txn, group);
db.addVisibility(txn, contactId, groupId);