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.TransportProperties;
import org.briarproject.bramble.api.properties.TransportPropertyManager; import org.briarproject.bramble.api.properties.TransportPropertyManager;
import org.briarproject.bramble.api.sync.Group; 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.GroupId;
import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.api.system.Clock; 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.Blog;
import org.briarproject.briar.api.blog.BlogManager; import org.briarproject.briar.api.blog.BlogManager;
import org.briarproject.briar.api.blog.BlogPost; 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.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessage; import org.briarproject.briar.api.messaging.PrivateMessage;
import org.briarproject.briar.api.messaging.PrivateMessageFactory; import org.briarproject.briar.api.messaging.PrivateMessageFactory;
import org.briarproject.briar.api.test.TestAvatarCreator;
import org.briarproject.briar.api.test.TestDataCreator; import org.briarproject.briar.api.test.TestDataCreator;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@@ -66,6 +73,7 @@ public class TestDataCreatorImpl implements TestDataCreator {
private final AuthorFactory authorFactory; private final AuthorFactory authorFactory;
private final Clock clock; private final Clock clock;
private final GroupFactory groupFactory;
private final PrivateMessageFactory privateMessageFactory; private final PrivateMessageFactory privateMessageFactory;
private final BlogPostFactory blogPostFactory; private final BlogPostFactory blogPostFactory;
@@ -76,6 +84,8 @@ public class TestDataCreatorImpl implements TestDataCreator {
private final MessagingManager messagingManager; private final MessagingManager messagingManager;
private final BlogManager blogManager; private final BlogManager blogManager;
private final ForumManager forumManager; private final ForumManager forumManager;
private final TestAvatarCreator testAvatarCreator;
private final AvatarMessageEncoder avatarMessageEncoder;
@IoExecutor @IoExecutor
private final Executor ioExecutor; private final Executor ioExecutor;
@@ -85,14 +95,19 @@ public class TestDataCreatorImpl implements TestDataCreator {
@Inject @Inject
TestDataCreatorImpl(AuthorFactory authorFactory, Clock clock, TestDataCreatorImpl(AuthorFactory authorFactory, Clock clock,
GroupFactory groupFactory,
PrivateMessageFactory privateMessageFactory, PrivateMessageFactory privateMessageFactory,
BlogPostFactory blogPostFactory, DatabaseComponent db, BlogPostFactory blogPostFactory, DatabaseComponent db,
IdentityManager identityManager, ContactManager contactManager, IdentityManager identityManager, ContactManager contactManager,
TransportPropertyManager transportPropertyManager, TransportPropertyManager transportPropertyManager,
MessagingManager messagingManager, BlogManager blogManager, MessagingManager messagingManager, BlogManager blogManager,
ForumManager forumManager, @IoExecutor Executor ioExecutor) { ForumManager forumManager,
TestAvatarCreator testAvatarCreator,
AvatarMessageEncoder avatarMessageEncoder,
@IoExecutor Executor ioExecutor) {
this.authorFactory = authorFactory; this.authorFactory = authorFactory;
this.clock = clock; this.clock = clock;
this.groupFactory = groupFactory;
this.privateMessageFactory = privateMessageFactory; this.privateMessageFactory = privateMessageFactory;
this.blogPostFactory = blogPostFactory; this.blogPostFactory = blogPostFactory;
this.db = db; this.db = db;
@@ -102,6 +117,8 @@ public class TestDataCreatorImpl implements TestDataCreator {
this.messagingManager = messagingManager; this.messagingManager = messagingManager;
this.blogManager = blogManager; this.blogManager = blogManager;
this.forumManager = forumManager; this.forumManager = forumManager;
this.testAvatarCreator = testAvatarCreator;
this.avatarMessageEncoder = avatarMessageEncoder;
this.ioExecutor = ioExecutor; this.ioExecutor = ioExecutor;
} }
@@ -164,10 +181,11 @@ public class TestDataCreatorImpl implements TestDataCreator {
transportPropertyManager.addRemoteProperties(txn, contactId, props); transportPropertyManager.addRemoteProperties(txn, contactId, props);
return db.getContact(txn, contactId); return db.getContact(txn, contactId);
}); });
if (random.nextInt(3) < 2) addAvatar(contact);
if (LOG.isLoggable(INFO)) { if (LOG.isLoggable(INFO)) {
LOG.info("Added contact " + remote.getName() + LOG.info("Added contact " + remote.getName() +
" with transport properties: " + props.toString()); " with transport properties: " + props);
} }
localAuthors.put(contact, remote); localAuthors.put(contact, remote);
return contact; return contact;
@@ -250,13 +268,11 @@ public class TestDataCreatorImpl implements TestDataCreator {
if (random.nextInt(5) == 0) { if (random.nextInt(5) == 0) {
sb.append("10."); sb.append("10.");
sb.append(random.nextInt(2)).append('.'); sb.append(random.nextInt(2)).append('.');
sb.append(random.nextInt(2)).append('.');
sb.append(random.nextInt(255));
} else { } else {
sb.append("192.168."); 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 // port
sb.append(':').append(getRandomPortNumber()); sb.append(':').append(getRandomPortNumber());
return sb.toString(); return sb.toString();
@@ -276,6 +292,26 @@ public class TestDataCreatorImpl implements TestDataCreator {
return sb.toString(); 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 // TODO: Do this properly via clients without breaking encapsulation
private void shareGroup(ContactId contactId, GroupId groupId) private void shareGroup(ContactId contactId, GroupId groupId)
throws DbException { throws DbException {