diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java index cad04aa7ea64eb23156db131649029475e9e12a5..845e69c69443a06216ce90515bb66af1cba47c22 100644 --- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java @@ -116,7 +116,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager, @Override public void removingContact(Transaction txn, Contact c) throws DbException { Blog b = blogFactory.createBlog(c.getAuthor()); - removeBlog(txn, b); + if (db.containsGroup(txn, b.getId())) removeBlog(txn, b); } @Override diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java index 3678f1aba2bfa5e2a794935ceee7843f6a19a0da..b3c8c7586282d96f934b32505a9c6d7fc7c6a36f 100644 --- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java @@ -157,6 +157,8 @@ public class BlogManagerImplTest extends BriarTestCase { context.checking(new Expectations() {{ oneOf(blogFactory).createBlog(blog2.getAuthor()); will(returnValue(blog2)); + oneOf(db).containsGroup(txn, blog2.getId()); + will(returnValue(true)); oneOf(identityManager).getLocalAuthor(txn); will(returnValue(blog1.getAuthor())); oneOf(db).removeGroup(txn, blog2.getGroup()); @@ -166,6 +168,25 @@ public class BlogManagerImplTest extends BriarTestCase { context.assertIsSatisfied(); } + @Test + public void testRemovingContactAfterRemovingBlog() throws DbException { + final Transaction txn = new Transaction(null, false); + + final ContactId contactId = new ContactId(0); + Contact contact = new Contact(contactId, blog2.getAuthor(), + blog1.getAuthor().getId(), true, true); + + context.checking(new Expectations() {{ + oneOf(blogFactory).createBlog(blog2.getAuthor()); + will(returnValue(blog2)); + oneOf(db).containsGroup(txn, blog2.getId()); + will(returnValue(false)); + }}); + + blogManager.removingContact(txn, contact); + context.assertIsSatisfied(); + } + @Test public void testIncomingMessage() throws DbException, FormatException { final Transaction txn = new Transaction(null, false);