test: テストを追加

This commit is contained in:
usbharu 2025-02-25 11:06:06 +09:00
parent 5ac1e3b267
commit 8c14a966aa
Signed by: usbharu
GPG Key ID: 8CB1087135660B8D
4 changed files with 79 additions and 19 deletions

View File

@ -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 {

View File

@ -0,0 +1,3 @@
package dev.usbharu.hideout.activitypub.application.nodeinfo
data class NodeinfoRequest(val version: String)

View File

@ -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)
}
}

View File

@ -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"])
}
}