Create test avatars when creating test contacts

This commit is contained in:
Torsten Grote
2020-11-27 13:52:33 -03:00
parent 6e5af2d3d3
commit 05f4d63356

View File

@@ -20,9 +20,13 @@ import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.properties.TransportProperties;
import org.briarproject.bramble.api.properties.TransportPropertyManager;
import org.briarproject.bramble.api.sync.Group;
import org.briarproject.bramble.api.sync.GroupFactory;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.briar.api.avatar.AvatarManager;
import org.briarproject.briar.api.avatar.AvatarMessageEncoder;
import org.briarproject.briar.api.blog.Blog;
import org.briarproject.briar.api.blog.BlogManager;
import org.briarproject.briar.api.blog.BlogPost;
@@ -33,8 +37,11 @@ import org.briarproject.briar.api.forum.ForumPost;
import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessage;
import org.briarproject.briar.api.messaging.PrivateMessageFactory;
import org.briarproject.briar.api.test.TestAvatarCreator;
import org.briarproject.briar.api.test.TestDataCreator;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -66,6 +73,7 @@ public class TestDataCreatorImpl implements TestDataCreator {
private final AuthorFactory authorFactory;
private final Clock clock;
private final GroupFactory groupFactory;
private final PrivateMessageFactory privateMessageFactory;
private final BlogPostFactory blogPostFactory;
@@ -76,6 +84,8 @@ public class TestDataCreatorImpl implements TestDataCreator {
private final MessagingManager messagingManager;
private final BlogManager blogManager;
private final ForumManager forumManager;
private final TestAvatarCreator testAvatarCreator;
private final AvatarMessageEncoder avatarMessageEncoder;
@IoExecutor
private final Executor ioExecutor;
@@ -85,14 +95,19 @@ public class TestDataCreatorImpl implements TestDataCreator {
@Inject
TestDataCreatorImpl(AuthorFactory authorFactory, Clock clock,
GroupFactory groupFactory,
PrivateMessageFactory privateMessageFactory,
BlogPostFactory blogPostFactory, DatabaseComponent db,
IdentityManager identityManager, ContactManager contactManager,
TransportPropertyManager transportPropertyManager,
MessagingManager messagingManager, BlogManager blogManager,
ForumManager forumManager, @IoExecutor Executor ioExecutor) {
ForumManager forumManager,
TestAvatarCreator testAvatarCreator,
AvatarMessageEncoder avatarMessageEncoder,
@IoExecutor Executor ioExecutor) {
this.authorFactory = authorFactory;
this.clock = clock;
this.groupFactory = groupFactory;
this.privateMessageFactory = privateMessageFactory;
this.blogPostFactory = blogPostFactory;
this.db = db;
@@ -102,6 +117,8 @@ public class TestDataCreatorImpl implements TestDataCreator {
this.messagingManager = messagingManager;
this.blogManager = blogManager;
this.forumManager = forumManager;
this.testAvatarCreator = testAvatarCreator;
this.avatarMessageEncoder = avatarMessageEncoder;
this.ioExecutor = ioExecutor;
}
@@ -164,10 +181,11 @@ public class TestDataCreatorImpl implements TestDataCreator {
transportPropertyManager.addRemoteProperties(txn, contactId, props);
return db.getContact(txn, contactId);
});
if (random.nextInt(3) < 2) addAvatar(contact);
if (LOG.isLoggable(INFO)) {
LOG.info("Added contact " + remote.getName() +
" with transport properties: " + props.toString());
" with transport properties: " + props);
}
localAuthors.put(contact, remote);
return contact;
@@ -250,13 +268,11 @@ public class TestDataCreatorImpl implements TestDataCreator {
if (random.nextInt(5) == 0) {
sb.append("10.");
sb.append(random.nextInt(2)).append('.');
sb.append(random.nextInt(2)).append('.');
sb.append(random.nextInt(255));
} else {
sb.append("192.168.");
sb.append(random.nextInt(2)).append('.');
sb.append(random.nextInt(255));
}
sb.append(random.nextInt(2)).append('.');
sb.append(random.nextInt(255));
// port
sb.append(':').append(getRandomPortNumber());
return sb.toString();
@@ -276,6 +292,26 @@ public class TestDataCreatorImpl implements TestDataCreator {
return sb.toString();
}
private void addAvatar(Contact c) throws DbException {
AuthorId authorId = c.getAuthor().getId();
GroupId groupId = groupFactory.createGroup(AvatarManager.CLIENT_ID,
AvatarManager.MAJOR_VERSION, authorId.getBytes()).getId();
InputStream is = testAvatarCreator.getAvatarInputStream();
if (is == null) return;
Message m;
try {
m = avatarMessageEncoder.encodeUpdateMessage(groupId, 0,
"image/jpeg", is).getFirst();
} catch (IOException e) {
throw new DbException(e);
}
db.transaction(false, txn -> {
// TODO: Do this properly via clients without breaking encapsulation
db.setGroupVisibility(txn, c.getId(), groupId, SHARED);
db.receiveMessage(txn, c.getId(), m);
});
}
// TODO: Do this properly via clients without breaking encapsulation
private void shareGroup(ContactId contactId, GroupId groupId)
throws DbException {