Test that visibility change affects expected contacts.

This commit is contained in:
akwizgran
2018-02-19 16:25:02 +00:00
parent 7fe502e3cc
commit 439654e71d

View File

@@ -47,6 +47,7 @@ import org.briarproject.bramble.api.transport.IncomingKeys;
import org.briarproject.bramble.api.transport.OutgoingKeys; import org.briarproject.bramble.api.transport.OutgoingKeys;
import org.briarproject.bramble.api.transport.TransportKeys; import org.briarproject.bramble.api.transport.TransportKeys;
import org.briarproject.bramble.test.BrambleMockTestCase; import org.briarproject.bramble.test.BrambleMockTestCase;
import org.briarproject.bramble.test.CaptureArgumentAction;
import org.briarproject.bramble.test.TestUtils; import org.briarproject.bramble.test.TestUtils;
import org.jmock.Expectations; import org.jmock.Expectations;
import org.junit.Test; import org.junit.Test;
@@ -54,9 +55,12 @@ import org.junit.Test;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import static java.util.Collections.emptyMap;
import static java.util.Collections.singletonList;
import static java.util.Collections.singletonMap;
import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE; import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE;
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED; import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
import static org.briarproject.bramble.api.sync.Group.Visibility.VISIBLE; import static org.briarproject.bramble.api.sync.Group.Visibility.VISIBLE;
@@ -158,7 +162,7 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
ContactStatusChangedEvent.class))); ContactStatusChangedEvent.class)));
// getContacts() // getContacts()
oneOf(database).getContacts(txn); oneOf(database).getContacts(txn);
will(returnValue(Collections.singletonList(contact))); will(returnValue(singletonList(contact)));
// addGroup() // addGroup()
oneOf(database).containsGroup(txn, groupId); oneOf(database).containsGroup(txn, groupId);
will(returnValue(false)); will(returnValue(false));
@@ -169,12 +173,12 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
will(returnValue(true)); will(returnValue(true));
// getGroups() // getGroups()
oneOf(database).getGroups(txn, clientId); oneOf(database).getGroups(txn, clientId);
will(returnValue(Collections.singletonList(group))); will(returnValue(singletonList(group)));
// removeGroup() // removeGroup()
oneOf(database).containsGroup(txn, groupId); oneOf(database).containsGroup(txn, groupId);
will(returnValue(true)); will(returnValue(true));
oneOf(database).getGroupVisibility(txn, groupId); oneOf(database).getGroupVisibility(txn, groupId);
will(returnValue(Collections.emptyMap())); will(returnValue(emptyMap()));
oneOf(database).removeGroup(txn, groupId); oneOf(database).removeGroup(txn, groupId);
oneOf(eventBus).broadcast(with(any(GroupRemovedEvent.class))); oneOf(eventBus).broadcast(with(any(GroupRemovedEvent.class)));
oneOf(eventBus).broadcast(with(any( oneOf(eventBus).broadcast(with(any(
@@ -203,11 +207,11 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
db.addLocalAuthor(transaction, localAuthor); db.addLocalAuthor(transaction, localAuthor);
assertEquals(contactId, db.addContact(transaction, author, assertEquals(contactId, db.addContact(transaction, author,
localAuthor.getId(), true, true)); localAuthor.getId(), true, true));
assertEquals(Collections.singletonList(contact), assertEquals(singletonList(contact),
db.getContacts(transaction)); db.getContacts(transaction));
db.addGroup(transaction, group); // First time - listeners called db.addGroup(transaction, group); // First time - listeners called
db.addGroup(transaction, group); // Second time - not called db.addGroup(transaction, group); // Second time - not called
assertEquals(Collections.singletonList(group), assertEquals(singletonList(group),
db.getGroups(transaction, clientId)); db.getGroups(transaction, clientId));
db.removeGroup(transaction, group); db.removeGroup(transaction, group);
db.removeContact(transaction, contactId); db.removeContact(transaction, contactId);
@@ -389,7 +393,7 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
transaction = db.startTransaction(false); transaction = db.startTransaction(false);
try { try {
Ack a = new Ack(Collections.singletonList(messageId)); Ack a = new Ack(singletonList(messageId));
db.receiveAck(transaction, contactId, a); db.receiveAck(transaction, contactId, a);
fail(); fail();
} catch (NoSuchContactException expected) { } catch (NoSuchContactException expected) {
@@ -410,7 +414,7 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
transaction = db.startTransaction(false); transaction = db.startTransaction(false);
try { try {
Offer o = new Offer(Collections.singletonList(messageId)); Offer o = new Offer(singletonList(messageId));
db.receiveOffer(transaction, contactId, o); db.receiveOffer(transaction, contactId, o);
fail(); fail();
} catch (NoSuchContactException expected) { } catch (NoSuchContactException expected) {
@@ -421,7 +425,7 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
transaction = db.startTransaction(false); transaction = db.startTransaction(false);
try { try {
Request r = new Request(Collections.singletonList(messageId)); Request r = new Request(singletonList(messageId));
db.receiveRequest(transaction, contactId, r); db.receiveRequest(transaction, contactId, r);
fail(); fail();
} catch (NoSuchContactException expected) { } catch (NoSuchContactException expected) {
@@ -1016,7 +1020,7 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
Transaction transaction = db.startTransaction(false); Transaction transaction = db.startTransaction(false);
try { try {
Ack a = new Ack(Collections.singletonList(messageId)); Ack a = new Ack(singletonList(messageId));
db.receiveAck(transaction, contactId, a); db.receiveAck(transaction, contactId, a);
db.commitTransaction(transaction); db.commitTransaction(transaction);
} finally { } finally {
@@ -1186,7 +1190,7 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
Transaction transaction = db.startTransaction(false); Transaction transaction = db.startTransaction(false);
try { try {
Request r = new Request(Collections.singletonList(messageId)); Request r = new Request(singletonList(messageId));
db.receiveRequest(transaction, contactId, r); db.receiveRequest(transaction, contactId, r);
db.commitTransaction(transaction); db.commitTransaction(transaction);
} finally { } finally {
@@ -1197,6 +1201,9 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
@Test @Test
public void testChangingVisibilityFromInvisibleToVisibleCallsListeners() public void testChangingVisibilityFromInvisibleToVisibleCallsListeners()
throws Exception { throws Exception {
AtomicReference<GroupVisibilityUpdatedEvent> event =
new AtomicReference<>();
context.checking(new Expectations() {{ context.checking(new Expectations() {{
oneOf(database).startTransaction(); oneOf(database).startTransaction();
will(returnValue(txn)); will(returnValue(txn));
@@ -1205,11 +1212,13 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
oneOf(database).containsGroup(txn, groupId); oneOf(database).containsGroup(txn, groupId);
will(returnValue(true)); will(returnValue(true));
oneOf(database).getGroupVisibility(txn, contactId, groupId); oneOf(database).getGroupVisibility(txn, contactId, groupId);
will(returnValue(INVISIBLE)); // Not yet visible will(returnValue(INVISIBLE));
oneOf(database).addGroupVisibility(txn, contactId, groupId, false); oneOf(database).addGroupVisibility(txn, contactId, groupId, false);
oneOf(database).commitTransaction(txn); oneOf(database).commitTransaction(txn);
oneOf(eventBus).broadcast(with(any( oneOf(eventBus).broadcast(with(any(
GroupVisibilityUpdatedEvent.class))); GroupVisibilityUpdatedEvent.class)));
will(new CaptureArgumentAction<>(event,
GroupVisibilityUpdatedEvent.class, 0));
}}); }});
DatabaseComponent db = createDatabaseComponent(database, eventBus, DatabaseComponent db = createDatabaseComponent(database, eventBus,
shutdown); shutdown);
@@ -1221,11 +1230,18 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
} finally { } finally {
db.endTransaction(transaction); db.endTransaction(transaction);
} }
GroupVisibilityUpdatedEvent e = event.get();
assertNotNull(e);
assertEquals(singletonList(contactId), e.getAffectedContacts());
} }
@Test @Test
public void testChangingVisibilityFromVisibleToInvisibleCallsListeners() public void testChangingVisibilityFromVisibleToInvisibleCallsListeners()
throws Exception { throws Exception {
AtomicReference<GroupVisibilityUpdatedEvent> event =
new AtomicReference<>();
context.checking(new Expectations() {{ context.checking(new Expectations() {{
oneOf(database).startTransaction(); oneOf(database).startTransaction();
will(returnValue(txn)); will(returnValue(txn));
@@ -1234,11 +1250,13 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
oneOf(database).containsGroup(txn, groupId); oneOf(database).containsGroup(txn, groupId);
will(returnValue(true)); will(returnValue(true));
oneOf(database).getGroupVisibility(txn, contactId, groupId); oneOf(database).getGroupVisibility(txn, contactId, groupId);
will(returnValue(VISIBLE)); // Not yet visible will(returnValue(VISIBLE));
oneOf(database).removeGroupVisibility(txn, contactId, groupId); oneOf(database).removeGroupVisibility(txn, contactId, groupId);
oneOf(database).commitTransaction(txn); oneOf(database).commitTransaction(txn);
oneOf(eventBus).broadcast(with(any( oneOf(eventBus).broadcast(with(any(
GroupVisibilityUpdatedEvent.class))); GroupVisibilityUpdatedEvent.class)));
will(new CaptureArgumentAction<>(event,
GroupVisibilityUpdatedEvent.class, 0));
}}); }});
DatabaseComponent db = createDatabaseComponent(database, eventBus, DatabaseComponent db = createDatabaseComponent(database, eventBus,
shutdown); shutdown);
@@ -1250,6 +1268,10 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
} finally { } finally {
db.endTransaction(transaction); db.endTransaction(transaction);
} }
GroupVisibilityUpdatedEvent e = event.get();
assertNotNull(e);
assertEquals(singletonList(contactId), e.getAffectedContacts());
} }
@Test @Test
@@ -1281,8 +1303,8 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
@Test @Test
public void testTransportKeys() throws Exception { public void testTransportKeys() throws Exception {
TransportKeys transportKeys = createTransportKeys(); TransportKeys transportKeys = createTransportKeys();
Map<ContactId, TransportKeys> keys = Collections.singletonMap( Map<ContactId, TransportKeys> keys =
contactId, transportKeys); singletonMap(contactId, transportKeys);
context.checking(new Expectations() {{ context.checking(new Expectations() {{
// startTransaction() // startTransaction()
oneOf(database).startTransaction(); oneOf(database).startTransaction();