mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-14 11:49:04 +01:00
Methods for creating, adding and removing forums have been moved to the `ForumManager`. In order to still handle removing forums properly, a `RemoveForumHook` has been introduced. Methods for sharing forums with all current and future contacts have been removed along with the localGroup where this information was saved. The `ShareForumActivity` now has the proper label. The `SessionId` and the `ProtocolEngine` have been moved to the `clients` package. This addresses part of #322 and part of what has been discussed in #320.
96 lines
3.4 KiB
Java
96 lines
3.4 KiB
Java
package org.briarproject.introduction;
|
|
|
|
import org.briarproject.BriarTestCase;
|
|
import org.briarproject.TestUtils;
|
|
import org.briarproject.api.FormatException;
|
|
import org.briarproject.api.clients.ClientHelper;
|
|
import org.briarproject.api.clients.MessageQueueManager;
|
|
import org.briarproject.api.clients.PrivateGroupFactory;
|
|
import org.briarproject.api.data.BdfDictionary;
|
|
import org.briarproject.api.data.BdfEntry;
|
|
import org.briarproject.api.data.BdfList;
|
|
import org.briarproject.api.data.MetadataEncoder;
|
|
import org.briarproject.api.db.DatabaseComponent;
|
|
import org.briarproject.api.db.DbException;
|
|
import org.briarproject.api.db.Metadata;
|
|
import org.briarproject.api.db.Transaction;
|
|
import org.briarproject.api.clients.SessionId;
|
|
import org.briarproject.api.sync.ClientId;
|
|
import org.briarproject.api.sync.Group;
|
|
import org.briarproject.api.sync.GroupId;
|
|
import org.briarproject.api.system.Clock;
|
|
import org.jmock.Expectations;
|
|
import org.jmock.Mockery;
|
|
import org.junit.Test;
|
|
|
|
import static junit.framework.Assert.assertFalse;
|
|
import static org.briarproject.api.introduction.IntroductionConstants.GROUP_ID;
|
|
import static org.briarproject.api.introduction.IntroductionConstants.SESSION_ID;
|
|
import static org.briarproject.api.introduction.IntroductionConstants.TYPE;
|
|
import static org.briarproject.api.introduction.IntroductionConstants.TYPE_ACK;
|
|
|
|
public class MessageSenderTest extends BriarTestCase {
|
|
|
|
final Mockery context;
|
|
final MessageSender messageSender;
|
|
final DatabaseComponent db;
|
|
final PrivateGroupFactory privateGroupFactory;
|
|
final ClientHelper clientHelper;
|
|
final MetadataEncoder metadataEncoder;
|
|
final MessageQueueManager messageQueueManager;
|
|
final Clock clock;
|
|
|
|
public MessageSenderTest() {
|
|
context = new Mockery();
|
|
db = context.mock(DatabaseComponent.class);
|
|
privateGroupFactory = context.mock(PrivateGroupFactory.class);
|
|
clientHelper = context.mock(ClientHelper.class);
|
|
metadataEncoder =
|
|
context.mock(MetadataEncoder.class);
|
|
messageQueueManager =
|
|
context.mock(MessageQueueManager.class);
|
|
clock = context.mock(Clock.class);
|
|
|
|
messageSender =
|
|
new MessageSender(db, clientHelper, clock, metadataEncoder,
|
|
messageQueueManager);
|
|
}
|
|
|
|
@Test
|
|
public void testSendMessage() throws DbException, FormatException {
|
|
final Transaction txn = new Transaction(null, false);
|
|
final Group privateGroup = new Group(new GroupId(TestUtils.getRandomId()),
|
|
new ClientId(TestUtils.getRandomId()), new byte[0]);
|
|
final SessionId sessionId = new SessionId(TestUtils.getRandomId());
|
|
final long time = 42L;
|
|
final BdfDictionary msg = BdfDictionary.of(
|
|
new BdfEntry(TYPE, TYPE_ACK),
|
|
new BdfEntry(GROUP_ID, privateGroup.getId()),
|
|
new BdfEntry(SESSION_ID, sessionId)
|
|
);
|
|
final BdfList bodyList =
|
|
BdfList.of(TYPE_ACK, msg.getRaw(SESSION_ID));
|
|
final byte[] body = TestUtils.getRandomBytes(8);
|
|
final Metadata metadata = new Metadata();
|
|
|
|
context.checking(new Expectations() {{
|
|
oneOf(clientHelper).toByteArray(bodyList);
|
|
will(returnValue(body));
|
|
oneOf(db).getGroup(txn, privateGroup.getId());
|
|
will(returnValue(privateGroup));
|
|
oneOf(metadataEncoder).encode(msg);
|
|
will(returnValue(metadata));
|
|
oneOf(clock).currentTimeMillis();
|
|
will(returnValue(time));
|
|
oneOf(messageQueueManager)
|
|
.sendMessage(txn, privateGroup, time, body, metadata);
|
|
}});
|
|
|
|
messageSender.sendMessage(txn, msg);
|
|
|
|
context.assertIsSatisfied();
|
|
assertFalse(txn.isComplete());
|
|
}
|
|
|
|
}
|