mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-21 15:19:53 +01:00
Test that visibility change affects expected contacts.
This commit is contained in:
@@ -48,6 +48,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.briarproject.bramble.util.StringUtils;
|
import org.briarproject.bramble.util.StringUtils;
|
||||||
import org.jmock.Expectations;
|
import org.jmock.Expectations;
|
||||||
@@ -56,9 +57,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.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
|
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
|
||||||
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;
|
||||||
@@ -160,7 +164,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));
|
||||||
@@ -171,12 +175,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(
|
||||||
@@ -206,11 +210,11 @@ public class DatabaseComponentImplTest extends BrambleMockTestCase {
|
|||||||
assertEquals(contactId,
|
assertEquals(contactId,
|
||||||
db.addContact(transaction, author, localAuthorId, true,
|
db.addContact(transaction, author, localAuthorId, true,
|
||||||
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);
|
||||||
@@ -392,7 +396,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) {
|
||||||
@@ -413,7 +417,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) {
|
||||||
@@ -424,7 +428,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) {
|
||||||
@@ -1017,7 +1021,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 {
|
||||||
@@ -1187,7 +1191,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 {
|
||||||
@@ -1198,6 +1202,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));
|
||||||
@@ -1206,11 +1213,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);
|
||||||
@@ -1222,11 +1231,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));
|
||||||
@@ -1235,11 +1251,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);
|
||||||
@@ -1251,6 +1269,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
|
||||||
@@ -1282,8 +1304,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();
|
||||||
|
|||||||
Reference in New Issue
Block a user