X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fwot%2FWebOfTrustConnectorTest.kt;h=a5c26b9f0083efaac70f5f49e58a8ce6251b88d1;hb=06341a31cb9d80b027e395510e93c078aa988fcf;hp=41fbbbf5d923670317828cd380deffd4af6eb347;hpb=d229a2c13703416d30d023204b59d92f8f873eea;p=Sone.git diff --git a/src/test/kotlin/net/pterodactylus/sone/freenet/wot/WebOfTrustConnectorTest.kt b/src/test/kotlin/net/pterodactylus/sone/freenet/wot/WebOfTrustConnectorTest.kt index 41fbbbf..a5c26b9 100644 --- a/src/test/kotlin/net/pterodactylus/sone/freenet/wot/WebOfTrustConnectorTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/freenet/wot/WebOfTrustConnectorTest.kt @@ -1,188 +1,30 @@ package net.pterodactylus.sone.freenet.wot -import freenet.support.* -import freenet.support.api.* -import net.pterodactylus.sone.freenet.* -import net.pterodactylus.sone.freenet.plugin.* -import net.pterodactylus.sone.test.* -import org.hamcrest.* -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* -import org.hamcrest.core.* -import kotlin.test.* - -/** - * Unit test for [WebOfTrustConnector]. - */ -class WebOfTrustConnectorTest { - - private val ownIdentity = DefaultOwnIdentity("id", "nickname", "requestUri", "insertUri") - - @Test - fun `wot plugin can be pinged`() { - val pluginConnector = createPluginConnector("Ping") - val connector = WebOfTrustConnector(pluginConnector) - connector.ping() - } - - @Test - fun `own identities are returned correctly`() { - val pluginConnector = createPluginConnector("GetOwnIdentities") { - put("Identity0", "id-0") - put("RequestURI0", "request-uri-0") - put("InsertURI0", "insert-uri-0") - put("Nickname0", "nickname-0") - put("Contexts0.Context0", "id-0-context-0") - put("Properties0.Property0.Name", "id-0-property-0-name") - put("Properties0.Property0.Value", "id-0-property-0-value") - put("Identity1", "id-1") - put("RequestURI1", "request-uri-1") - put("InsertURI1", "insert-uri-1") - put("Nickname1", "nickname-1") - put("Contexts1.Context0", "id-1-context-0") - put("Properties1.Property0.Name", "id-1-property-0-name") - put("Properties1.Property0.Value", "id-1-property-0-value") - } - val connector = WebOfTrustConnector(pluginConnector) - val ownIdentities = connector.loadAllOwnIdentities() - assertThat(ownIdentities, containsInAnyOrder( - isOwnIdentity("id-0", "nickname-0", "request-uri-0", "insert-uri-0", contains("id-0-context-0"), hasEntry("id-0-property-0-name", "id-0-property-0-value")), - isOwnIdentity("id-1", "nickname-1", "request-uri-1", "insert-uri-1", contains("id-1-context-0"), hasEntry("id-1-property-0-name", "id-1-property-0-value")) - )) - } - - @Test - fun `trusted identities are requested with correct own identity`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore", hasField("Truster", equalTo("id"))) - val connector = WebOfTrustConnector(pluginConnector) - connector.loadTrustedIdentities(ownIdentity) - } - - @Test - fun `trusted identities are requested with correct selection parameter`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore", hasField("Selection", equalTo("+"))) - val connector = WebOfTrustConnector(pluginConnector) - connector.loadTrustedIdentities(ownIdentity) - } - - @Test - fun `trusted identities are requested with empty context if null context requested`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore", hasField("Context", equalTo(""))) - val connector = WebOfTrustConnector(pluginConnector) - connector.loadTrustedIdentities(ownIdentity) - } - - @Test - fun `trusted identities are requested with context if context requested`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore", hasField("Context", equalTo("TestContext"))) - val connector = WebOfTrustConnector(pluginConnector) - connector.loadTrustedIdentities(ownIdentity, "TestContext") - } - - @Test - fun `trusted identities are requested with trust values`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore", hasField("WantTrustValues", equalTo("true"))) - val connector = WebOfTrustConnector(pluginConnector) - val trustedIdentities = connector.loadTrustedIdentities(ownIdentity) - } - - @Test - fun `empty list of trusted identities is returned correctly`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore") - val connector = WebOfTrustConnector(pluginConnector) - val trustedIdentities = connector.loadTrustedIdentities(ownIdentity) - assertThat(trustedIdentities, empty()) - } - - @Test - fun `trusted identities without context, properties, or trust value are returned correctly`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore") { - put("Identity0", "id0") - put("Nickname0", "nickname0") - put("RequestURI0", "request-uri0") - put("Identity1", "id1") - put("Nickname1", "nickname1") - put("RequestURI1", "request-uri1") - } - val connector = WebOfTrustConnector(pluginConnector) - val trustedIdentities = connector.loadTrustedIdentities(ownIdentity) - assertThat(trustedIdentities, contains( - allOf( - isIdentity("id0", "nickname0", "request-uri0", empty(), isEmptyMap()), - isTrusted(ownIdentity, isTrust(null, 0, 0)) - ), - allOf( - isIdentity("id1", "nickname1", "request-uri1", empty(), isEmptyMap()), - isTrusted(ownIdentity, isTrust(null, 0, 0)) - ) - )) - } - - @Test - fun `trusted identity with contexts is returned correctly`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore") { - put("Identity0", "id0") - put("Nickname0", "nickname0") - put("RequestURI0", "request-uri0") - put("Contexts0.Context0", "Context0") - put("Contexts0.Context1", "Context1") - } - val connector = WebOfTrustConnector(pluginConnector) - val trustedIdentities = connector.loadTrustedIdentities(ownIdentity) - assertThat(trustedIdentities, contains( - isIdentity("id0", "nickname0", "request-uri0", containsInAnyOrder("Context0", "Context1"), isEmptyMap()) - )) - } +val dummyWebOfTrustConnector = object : WebOfTrustConnector { + override fun loadAllOwnIdentities(): Set = emptySet() + override fun loadTrustedIdentities(ownIdentity: OwnIdentity, context: String?): Set = emptySet() + override fun loadAllIdentities(ownIdentity: OwnIdentity, context: String?): Set = emptySet() + override fun addContext(ownIdentity: OwnIdentity, context: String) = Unit + override fun removeContext(ownIdentity: OwnIdentity, context: String) = Unit + override fun setProperty(ownIdentity: OwnIdentity, name: String, value: String) = Unit + override fun removeProperty(ownIdentity: OwnIdentity, name: String) = Unit + override fun ping() = Unit +} - @Test - fun `trusted identity with properties is returned correctly`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore") { - put("Identity0", "id0") - put("Nickname0", "nickname0") - put("RequestURI0", "request-uri0") - put("Properties0.Property0.Name", "foo") - put("Properties0.Property0.Value", "bar") - put("Properties0.Property1.Name", "baz") - put("Properties0.Property1.Value", "quo") - } - val connector = WebOfTrustConnector(pluginConnector) - val trustedIdentities = connector.loadTrustedIdentities(ownIdentity) - assertThat(trustedIdentities, contains( - isIdentity("id0", "nickname0", "request-uri0", empty(), allOf(hasEntry("foo", "bar"), hasEntry("baz", "quo"))) - )) - } +open class DelegatingWebOfTrustConnector(private val delegate: WebOfTrustConnector) : WebOfTrustConnector by delegate - @Test - fun `trusted identity with trust value is returned correctly`() { - val pluginConnector = createPluginConnector("GetIdentitiesByScore") { - put("Identity0", "id0") - put("Nickname0", "nickname0") - put("RequestURI0", "request-uri0") - put("Trust0", "12") - put("Score0", "34") - put("Rank0", "56") - } - val connector = WebOfTrustConnector(pluginConnector) - val trustedIdentities = connector.loadTrustedIdentities(ownIdentity) - assertThat(trustedIdentities, contains( - allOf( - isIdentity("id0", "nickname0", "request-uri0", empty(), isEmptyMap()), - isTrusted(ownIdentity, isTrust(12, 34, 56)) - ) - )) - } +fun WebOfTrustConnector.overrideLoadAllOwnIdentities(override: () -> Set): WebOfTrustConnector = object : DelegatingWebOfTrustConnector(this) { + override fun loadAllOwnIdentities() = override() +} +fun WebOfTrustConnector.overrideLoadTrustedIdentities(override: (ownIdentity: OwnIdentity, context: String?) -> Set): WebOfTrustConnector = object : DelegatingWebOfTrustConnector(this) { + override fun loadTrustedIdentities(ownIdentity: OwnIdentity, context: String?) = override(ownIdentity, context) } -fun createPluginConnector(message: String, fieldsMatcher: Matcher = IsAnything(), build: SimpleFieldSetBuilder.() -> Unit = {}) = - object : PluginConnector { - override fun sendRequest(pluginName: String, identifier: String, fields: SimpleFieldSet, data: Bucket?) = - if ((pluginName != wotPluginName) || (fields.get("Message") != message)) { - throw PluginException() - } else { - assertThat(fields, fieldsMatcher) - PluginReply(SimpleFieldSetBuilder().apply(build).get(), null) - } - } +fun WebOfTrustConnector.overrideLoadAllIdentities(override: (ownIdentity: OwnIdentity, context: String?) -> Set): WebOfTrustConnector = object : DelegatingWebOfTrustConnector(this) { + override fun loadAllIdentities(ownIdentity: OwnIdentity, context: String?) = override(ownIdentity, context) +} -private const val wotPluginName = "plugins.WebOfTrust.WebOfTrust" +fun WebOfTrustConnector.overridePing(override: () -> Unit): WebOfTrustConnector = object : DelegatingWebOfTrustConnector(this) { + override fun ping() = override() +}