X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FWebOfTrustUpdaterTest.java;h=c8057c53978f96b9cf2af6c85741c6ad395ec361;hb=f9ec36b55750b14c7aec195e7f3ff092a570003d;hp=0589d9d4816b88c9061ec0bba2ee869affeec4b7;hpb=d249bcc142a9e351e1774ac326ff5e961e1813d9;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/core/WebOfTrustUpdaterTest.java b/src/test/java/net/pterodactylus/sone/core/WebOfTrustUpdaterTest.java index 0589d9d..c8057c5 100644 --- a/src/test/java/net/pterodactylus/sone/core/WebOfTrustUpdaterTest.java +++ b/src/test/java/net/pterodactylus/sone/core/WebOfTrustUpdaterTest.java @@ -1,5 +1,6 @@ package net.pterodactylus.sone.core; +import static java.lang.Thread.sleep; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.Matchers.eq; @@ -9,6 +10,8 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import net.pterodactylus.sone.core.WebOfTrustUpdater.AddContextJob; +import net.pterodactylus.sone.core.WebOfTrustUpdater.RemoveContextJob; +import net.pterodactylus.sone.core.WebOfTrustUpdater.WebOfTrustUpdateJob; import net.pterodactylus.sone.freenet.plugin.PluginException; import net.pterodactylus.sone.freenet.wot.OwnIdentity; import net.pterodactylus.sone.freenet.wot.WebOfTrustConnector; @@ -26,7 +29,37 @@ public class WebOfTrustUpdaterTest { private final WebOfTrustConnector webOfTrustConnector = mock(WebOfTrustConnector.class); private final WebOfTrustUpdater webOfTrustUpdater = new WebOfTrustUpdater(webOfTrustConnector); private final OwnIdentity ownIdentity = mock(OwnIdentity.class); + private final WebOfTrustUpdateJob successfulWebOfTrustUpdateJob = createWebOfTrustUpdateJob(true); + private final WebOfTrustUpdateJob failingWebOfTrustUpdateJob = createWebOfTrustUpdateJob(false); private final AddContextJob addContextJob = webOfTrustUpdater.new AddContextJob(ownIdentity, CONTEXT); + private final RemoveContextJob removeContextJob = webOfTrustUpdater.new RemoveContextJob(ownIdentity, CONTEXT); + + private WebOfTrustUpdateJob createWebOfTrustUpdateJob(final boolean success) { + return webOfTrustUpdater.new WebOfTrustUpdateJob() { + @Override + public void run() { + super.run(); + try { + sleep(100); + } catch (InterruptedException ie1) { + throw new RuntimeException(ie1); + } + finish(success); + } + }; + } + + @Test + public void webOfTrustUpdateJobWaitsUntilFinishedHasBeenCalledAndReturnsSuccess() throws InterruptedException { + new Thread(successfulWebOfTrustUpdateJob).start(); + assertThat(successfulWebOfTrustUpdateJob.waitForCompletion(), is(true)); + } + + @Test + public void webOfTrustUpdateJobWaitsUntilFinishedHasBeenCalledAndReturnsFailure() throws InterruptedException { + new Thread(failingWebOfTrustUpdateJob).start(); + assertThat(failingWebOfTrustUpdateJob.waitForCompletion(), is(false)); + } @Test public void addContextJobAddsTheContext() throws PluginException { @@ -45,4 +78,21 @@ public class WebOfTrustUpdaterTest { assertThat(addContextJob.waitForCompletion(), is(false)); } + @Test + public void removeContextJobRemovesTheContext() throws PluginException { + removeContextJob.run(); + verify(webOfTrustConnector).removeContext(eq(ownIdentity), eq(CONTEXT)); + verify(ownIdentity).removeContext(eq(CONTEXT)); + assertThat(removeContextJob.waitForCompletion(), is(true)); + } + + @Test + public void exceptionWhileRemovingAContextIsExposed() throws PluginException { + doThrow(PluginException.class).when(webOfTrustConnector).removeContext(eq(ownIdentity), eq(CONTEXT)); + removeContextJob.run(); + verify(webOfTrustConnector).removeContext(eq(ownIdentity), eq(CONTEXT)); + verify(ownIdentity, never()).removeContext(eq(CONTEXT)); + assertThat(removeContextJob.waitForCompletion(), is(false)); + } + }