mirror of https://github.com/usbharu/Hideout.git
test: テストを追加
This commit is contained in:
parent
5ac1e3b267
commit
8c14a966aa
|
@ -14,27 +14,31 @@ import org.springframework.stereotype.Service
|
|||
* 今後ユーザーエージェントに応じてレスポンスを変更する可能性があるためApplicationServiceとして作成する commandは現時点ではUnitだが今後変化する可能性あり
|
||||
*/
|
||||
class NodeinfoApplicationService(
|
||||
@Autowired(required = false) private val buildInfo: BuildProperties? = null,
|
||||
@Autowired(required = false) private val buildInfo: BuildProperties?,
|
||||
private val applicationConfig: ApplicationConfig,
|
||||
transaction: Transaction,
|
||||
) : AbstractApplicationService<Unit, Nodeinfo2_0>(
|
||||
) : AbstractApplicationService<NodeinfoRequest, Nodeinfo2_0>(
|
||||
transaction, logger
|
||||
) {
|
||||
override suspend fun internalExecute(command: Unit, principal: Principal): Nodeinfo2_0 {
|
||||
return Nodeinfo2_0(
|
||||
version = "2.0",
|
||||
software = mapOf(
|
||||
"name" to "hideout", "version" to (buildInfo?.version ?: "UNKNOWN")
|
||||
),
|
||||
protocol = listOf("activitypub"),
|
||||
NodeinfoUsage(
|
||||
users = mapOf(
|
||||
"total" to 0, "activeMonth" to 0, "activeHalfyear" to 0
|
||||
), localPosts = 0
|
||||
),
|
||||
openRegistration = applicationConfig.private.not(),
|
||||
metadata = mapOf()
|
||||
)
|
||||
override suspend fun internalExecute(command: NodeinfoRequest, principal: Principal): Nodeinfo2_0 {
|
||||
return when (command.version) {
|
||||
"2.0", "2.1" -> Nodeinfo2_0(
|
||||
version = command.version,
|
||||
software = mapOf(
|
||||
"name" to "hideout", "version" to (buildInfo?.version ?: "UNKNOWN")
|
||||
),
|
||||
protocol = listOf("activitypub"),
|
||||
NodeinfoUsage(
|
||||
users = mapOf(
|
||||
"total" to 0, "activeMonth" to 0, "activeHalfyear" to 0
|
||||
), localPosts = 0
|
||||
),
|
||||
openRegistration = applicationConfig.private.not(),
|
||||
metadata = mapOf()
|
||||
)
|
||||
|
||||
else -> throw IllegalArgumentException("Invalid command version ${command.version}")
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
package dev.usbharu.hideout.activitypub.application.nodeinfo
|
||||
|
||||
data class NodeinfoRequest(val version: String)
|
|
@ -2,6 +2,7 @@ package dev.usbharu.hideout.activitypub.interfaces.wellknown
|
|||
|
||||
import dev.usbharu.hideout.activitypub.application.nodeinfo.Nodeinfo2_0
|
||||
import dev.usbharu.hideout.activitypub.application.nodeinfo.NodeinfoApplicationService
|
||||
import dev.usbharu.hideout.activitypub.application.nodeinfo.NodeinfoRequest
|
||||
import dev.usbharu.hideout.core.config.ApplicationConfig
|
||||
import dev.usbharu.hideout.core.domain.model.support.principal.Anonymous
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
|
@ -27,11 +28,11 @@ class NodeinfoController(
|
|||
|
||||
@GetMapping("/nodeinfo/2.0", produces = ["application/json"])
|
||||
suspend fun nodeinfo2_0(): Nodeinfo2_0 {
|
||||
return nodeinfoApplicationService.execute(Unit, Anonymous)
|
||||
return nodeinfoApplicationService.execute(NodeinfoRequest("2.0"), Anonymous)
|
||||
}
|
||||
|
||||
@GetMapping("/nodeinfo/2.1", produces = ["application/json"])
|
||||
suspend fun nodeinfo2_1(): Nodeinfo2_0 {
|
||||
return nodeinfoApplicationService.execute(Unit, Anonymous)
|
||||
return nodeinfoApplicationService.execute(NodeinfoRequest("2.1"), Anonymous)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package dev.usbharu.hideout.activitypub.application.webfinger
|
||||
|
||||
|
||||
import dev.usbharu.hideout.activitypub.application.nodeinfo.NodeinfoApplicationService
|
||||
import dev.usbharu.hideout.activitypub.application.nodeinfo.NodeinfoRequest
|
||||
import dev.usbharu.hideout.core.config.ApplicationConfig
|
||||
import dev.usbharu.hideout.core.domain.model.support.principal.Anonymous
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
import org.mockito.InjectMocks
|
||||
import org.mockito.Spy
|
||||
import org.mockito.junit.jupiter.MockitoExtension
|
||||
import org.springframework.boot.info.BuildProperties
|
||||
import util.TestTransaction
|
||||
import java.net.URI
|
||||
import java.util.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
|
||||
@ExtendWith(MockitoExtension::class)
|
||||
class NodeinfoApplicationServiceTest {
|
||||
@InjectMocks
|
||||
lateinit var nodeinfoApplicationService: NodeinfoApplicationService
|
||||
|
||||
@Spy
|
||||
val buildInfo: BuildProperties = BuildProperties(Properties())
|
||||
|
||||
@Spy
|
||||
val applicationConfig = ApplicationConfig(URI.create("https://example.com"))
|
||||
|
||||
@Spy
|
||||
val transaction = TestTransaction
|
||||
|
||||
@Test
|
||||
fun nodeinfo2_0() = runTest {
|
||||
val execute = nodeinfoApplicationService.execute(NodeinfoRequest("2.0"), Anonymous)
|
||||
|
||||
assertFalse(execute.openRegistration)
|
||||
assertEquals("2.0", execute.version)
|
||||
assertEquals("hideout", execute.software["name"])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun nodeinfo2_1() = runTest {
|
||||
val execute = nodeinfoApplicationService.execute(NodeinfoRequest("2.1"), Anonymous)
|
||||
|
||||
assertFalse(execute.openRegistration)
|
||||
assertEquals("2.1", execute.version)
|
||||
assertEquals("hideout", execute.software["name"])
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue