X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FFreenetInterfaceTest.kt;h=ffd5c60b8cca355967ab8cb1e312908c4accc784;hb=07643fdd510640d6c0b20963e4f4f36e06469fb5;hp=1893acca9ec70e8b671d3874191937f9e92a5ab7;hpb=7349d8b859f87a83913895fa6897a9a7c8557c4e;p=Sone.git diff --git a/src/test/kotlin/net/pterodactylus/sone/core/FreenetInterfaceTest.kt b/src/test/kotlin/net/pterodactylus/sone/core/FreenetInterfaceTest.kt index 1893acc..ffd5c60 100644 --- a/src/test/kotlin/net/pterodactylus/sone/core/FreenetInterfaceTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/core/FreenetInterfaceTest.kt @@ -10,16 +10,17 @@ import freenet.keys.* import freenet.keys.InsertableClientSSK.* import freenet.node.* import freenet.node.RequestStarter.* -import freenet.support.Base64 import freenet.support.api.* import freenet.support.io.* import net.pterodactylus.sone.core.FreenetInterface.* import net.pterodactylus.sone.core.event.* import net.pterodactylus.sone.data.* import net.pterodactylus.sone.data.impl.* +import net.pterodactylus.sone.freenet.wot.DefaultIdentity import net.pterodactylus.sone.test.* import net.pterodactylus.sone.test.Matchers.* import net.pterodactylus.sone.test.TestUtil.* +import net.pterodactylus.sone.utils.* import org.hamcrest.MatcherAssert.* import org.hamcrest.Matchers.equalTo import org.hamcrest.Matchers.notNullValue @@ -32,6 +33,7 @@ import org.mockito.ArgumentMatchers.eq import org.mockito.Mockito.* import java.io.* import java.util.* +import kotlin.test.Test /** * Unit test for [FreenetInterface]. @@ -42,16 +44,20 @@ class FreenetInterfaceTest { @JvmField val expectionException: ExpectedException = ExpectedException.none() + @Rule + @JvmField + val silencedLogging = silencedLogging() + @Suppress("UnstableApiUsage") private val eventBus = mock() private val node = mock() - private val nodeClientCore = mock() + private val clientContext = mock() private val highLevelSimpleClient: HighLevelSimpleClient = mock(HighLevelSimpleClient::class.java, withSettings().extraInterfaces(RequestClient::class.java)) private val randomSource = DummyRandomSource() private val uskManager = mock() private val sone = mock() private val callbackCaptor: ArgumentCaptor = forClass(USKCallback::class.java) - private val image = mock() + private val image: Image = ImageImpl() private val insertToken: InsertToken private val bucket = mock() private val clientGetCallback: ArgumentCaptor = forClass(ClientGetCallback::class.java) @@ -59,15 +65,12 @@ class FreenetInterfaceTest { private val fetchResult = mock() private val backgroundFetchCallback = mock() private val clientGetter = mock() + private val soneUriCreator = SoneUriCreator() private val freenetInterface: FreenetInterface init { - whenever(nodeClientCore.makeClient(anyShort(), anyBoolean(), anyBoolean())).thenReturn(highLevelSimpleClient) - setField(node, "clientCore", nodeClientCore) setField(node, "random", randomSource) - setField(nodeClientCore, "uskManager", uskManager) - setField(nodeClientCore, "clientContext", mock()) - freenetInterface = FreenetInterface(eventBus, node) + freenetInterface = FreenetInterface(eventBus, node, uskManager, clientContext, soneUriCreator) { _, _, _ -> highLevelSimpleClient } insertToken = freenetInterface.InsertToken(image) insertToken.setBucket(bucket) } @@ -81,13 +84,13 @@ class FreenetInterfaceTest { @Before fun setupSone() { val insertSsk = createRandom(randomSource, "test-0") - whenever(sone.id).thenReturn(Base64.encode(insertSsk.uri.routingKey)) - whenever(sone.requestUri).thenReturn(insertSsk.uri.uskForSSK()) + whenever(sone.id).thenReturn(insertSsk.uri.routingKey.asFreenetBase64) + whenever(sone.identity).thenReturn(DefaultIdentity("id", "name", insertSsk.uri.toString())) } @Before fun setupCallbackCaptorAndUskManager() { - doNothing().`when`(uskManager).subscribe(any(USK::class.java), callbackCaptor.capture(), anyBoolean(), any(RequestClient::class.java)) + doNothing().whenever(uskManager).subscribe(any(USK::class.java), callbackCaptor.capture(), anyBoolean(), any(RequestClient::class.java)) } @Test @@ -183,7 +186,6 @@ class FreenetInterfaceTest { @Test fun `sone with wrong request uri will not be subscribed`() { - whenever(sone.requestUri).thenReturn(FreenetURI("KSK@GPLv3.txt")) freenetInterface.registerUsk(FreenetURI("KSK@GPLv3.txt"), null) verify(uskManager, never()).subscribe(any(USK::class.java), any(USKCallback::class.java), anyBoolean(), any(RequestClient::class.java)) } @@ -257,16 +259,15 @@ class FreenetInterfaceTest { } @Test - fun `unregistering aregistered sone unregisters the sone`() { - freenetInterface.registerActiveUsk(sone.requestUri, mock()) + fun `unregistering a registered sone unregisters the sone`() { + freenetInterface.registerActiveUsk(soneUriCreator.getRequestUri(sone), mock()) freenetInterface.unregisterUsk(sone) verify(uskManager).unsubscribe(any(USK::class.java), any(USKCallback::class.java)) } @Test - fun `unregistering asone with awrong request key will not unsubscribe`() { - whenever(sone.requestUri).thenReturn(FreenetURI("KSK@GPLv3.txt")) - freenetInterface.registerUsk(sone.requestUri, null) + fun `unregistering a sone with a wrong request key will not unsubscribe`() { + freenetInterface.registerUsk(FreenetURI("KSK@GPLv3.txt"), null) freenetInterface.unregisterUsk(sone) verify(uskManager, never()).unsubscribe(any(USK::class.java), any(USKCallback::class.java)) } @@ -458,4 +459,13 @@ class FreenetInterfaceTest { verifyNoMoreInteractions(backgroundFetchCallback) } + @Test + fun `unregistering a registered USK with different edition unregisters USK`() { + val callback = mock() + val uri = createRandom(randomSource, "test-123").uri.uskForSSK() + freenetInterface.registerUsk(uri, callback) + freenetInterface.unregisterUsk(uri.setSuggestedEdition(234)) + verify(uskManager).unsubscribe(any(), any()) + } + }