🔀 Merge branch 'release/v82'
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / core / SoneUriCreatorTest.kt
diff --git a/src/test/kotlin/net/pterodactylus/sone/core/SoneUriCreatorTest.kt b/src/test/kotlin/net/pterodactylus/sone/core/SoneUriCreatorTest.kt
new file mode 100644 (file)
index 0000000..ae8f25b
--- /dev/null
@@ -0,0 +1,88 @@
+package net.pterodactylus.sone.core
+
+import com.google.inject.Guice
+import net.pterodactylus.sone.data.impl.IdOnlySone
+import net.pterodactylus.sone.freenet.wot.DefaultIdentity
+import net.pterodactylus.sone.freenet.wot.DefaultOwnIdentity
+import net.pterodactylus.sone.test.createInsertUri
+import net.pterodactylus.sone.test.createRequestUri
+import net.pterodactylus.sone.test.getInstance
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.emptyArray
+import org.hamcrest.Matchers.equalTo
+import org.hamcrest.Matchers.notNullValue
+import org.hamcrest.Matchers.nullValue
+import kotlin.test.Test
+
+/**
+ * Unit test for [SoneUriCreator].
+ */
+class SoneUriCreatorTest {
+
+       private val soneUriCreator = SoneUriCreator()
+
+       private val requestUri = soneUriCreator.getRequestUri(sone)
+       private val insertUri = soneUriCreator.getInsertUri(sone)
+
+       @Test
+       fun `generated request URI is a USK`() {
+               assertThat(requestUri.keyType, equalTo("USK"))
+       }
+
+       @Test
+       fun `generated request URI has correct doc name`() {
+               assertThat(requestUri.docName, equalTo("Sone"))
+       }
+
+       @Test
+       fun `generated request URI has no meta strings`() {
+               assertThat(requestUri.allMetaStrings, emptyArray())
+       }
+
+       @Test
+       fun `generated request URI has correct edition`() {
+               assertThat(requestUri.suggestedEdition, equalTo(123L))
+       }
+
+       @Test
+       fun `insert URI is null if sone’s identity is not an own identity`() {
+               val remoteSone = object : IdOnlySone("id") {
+                       override fun getIdentity() = DefaultIdentity("id", "name", createRequestUri.toString())
+               }
+               assertThat(soneUriCreator.getInsertUri(remoteSone), nullValue())
+       }
+
+       @Test
+       fun `generated insert URI is a USK`() {
+               assertThat(insertUri!!.keyType, equalTo("USK"))
+       }
+
+       @Test
+       fun `generated insert URI has correct doc name`() {
+               assertThat(insertUri!!.docName, equalTo("Sone"))
+       }
+
+       @Test
+       fun `generated insert URI has no meta strings`() {
+               assertThat(insertUri!!.allMetaStrings, emptyArray())
+       }
+
+       @Test
+       fun `generated insert URI has correct edition`() {
+               assertThat(insertUri!!.suggestedEdition, equalTo(123L))
+       }
+
+       @Test
+       fun `creator can be created by guice`() {
+               val injector = Guice.createInjector()
+               assertThat(injector.getInstance<SoneUriCreator>(), notNullValue())
+       }
+
+}
+
+private val sone = object : IdOnlySone("id") {
+       override fun getIdentity() =
+                       DefaultOwnIdentity("id", "name", createRequestUri.toString(), createInsertUri.toString())
+
+       override fun getLatestEdition() = 123L
+}