🔀 Merge branch 'release/v82'
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / core / SoneUriCreatorTest.kt
1 package net.pterodactylus.sone.core
2
3 import com.google.inject.Guice
4 import net.pterodactylus.sone.data.impl.IdOnlySone
5 import net.pterodactylus.sone.freenet.wot.DefaultIdentity
6 import net.pterodactylus.sone.freenet.wot.DefaultOwnIdentity
7 import net.pterodactylus.sone.test.createInsertUri
8 import net.pterodactylus.sone.test.createRequestUri
9 import net.pterodactylus.sone.test.getInstance
10 import org.hamcrest.MatcherAssert.assertThat
11 import org.hamcrest.Matchers.emptyArray
12 import org.hamcrest.Matchers.equalTo
13 import org.hamcrest.Matchers.notNullValue
14 import org.hamcrest.Matchers.nullValue
15 import kotlin.test.Test
16
17 /**
18  * Unit test for [SoneUriCreator].
19  */
20 class SoneUriCreatorTest {
21
22         private val soneUriCreator = SoneUriCreator()
23
24         private val requestUri = soneUriCreator.getRequestUri(sone)
25         private val insertUri = soneUriCreator.getInsertUri(sone)
26
27         @Test
28         fun `generated request URI is a USK`() {
29                 assertThat(requestUri.keyType, equalTo("USK"))
30         }
31
32         @Test
33         fun `generated request URI has correct doc name`() {
34                 assertThat(requestUri.docName, equalTo("Sone"))
35         }
36
37         @Test
38         fun `generated request URI has no meta strings`() {
39                 assertThat(requestUri.allMetaStrings, emptyArray())
40         }
41
42         @Test
43         fun `generated request URI has correct edition`() {
44                 assertThat(requestUri.suggestedEdition, equalTo(123L))
45         }
46
47         @Test
48         fun `insert URI is null if sone’s identity is not an own identity`() {
49                 val remoteSone = object : IdOnlySone("id") {
50                         override fun getIdentity() = DefaultIdentity("id", "name", createRequestUri.toString())
51                 }
52                 assertThat(soneUriCreator.getInsertUri(remoteSone), nullValue())
53         }
54
55         @Test
56         fun `generated insert URI is a USK`() {
57                 assertThat(insertUri!!.keyType, equalTo("USK"))
58         }
59
60         @Test
61         fun `generated insert URI has correct doc name`() {
62                 assertThat(insertUri!!.docName, equalTo("Sone"))
63         }
64
65         @Test
66         fun `generated insert URI has no meta strings`() {
67                 assertThat(insertUri!!.allMetaStrings, emptyArray())
68         }
69
70         @Test
71         fun `generated insert URI has correct edition`() {
72                 assertThat(insertUri!!.suggestedEdition, equalTo(123L))
73         }
74
75         @Test
76         fun `creator can be created by guice`() {
77                 val injector = Guice.createInjector()
78                 assertThat(injector.getInstance<SoneUriCreator>(), notNullValue())
79         }
80
81 }
82
83 private val sone = object : IdOnlySone("id") {
84         override fun getIdentity() =
85                         DefaultOwnIdentity("id", "name", createRequestUri.toString(), createInsertUri.toString())
86
87         override fun getLatestEdition() = 123L
88 }