test: actorのエンドポイントのテストを追加

This commit is contained in:
usbharu 2023-11-05 13:28:04 +09:00
parent ec24100f0a
commit a2420622c5
1 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,94 @@
package dev.usbharu.hideout.activitypub.interfaces.api.actor
import dev.usbharu.hideout.activitypub.domain.model.Image
import dev.usbharu.hideout.activitypub.domain.model.Key
import dev.usbharu.hideout.activitypub.domain.model.Person
import dev.usbharu.hideout.activitypub.service.objects.user.APUserService
import dev.usbharu.hideout.application.config.ActivityPubConfig
import dev.usbharu.hideout.core.domain.exception.FailedToGetResourcesException
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.InjectMocks
import org.mockito.Mock
import org.mockito.junit.jupiter.MockitoExtension
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.doThrow
import org.mockito.kotlin.eq
import org.mockito.kotlin.whenever
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.get
import org.springframework.test.web.servlet.post
import org.springframework.test.web.servlet.setup.MockMvcBuilders
@ExtendWith(MockitoExtension::class)
class UserAPControllerImplTest {
private lateinit var mockMvc: MockMvc
@Mock
private lateinit var apUserService: APUserService
@InjectMocks
private lateinit var userAPControllerImpl: UserAPControllerImpl
@BeforeEach
fun setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(userAPControllerImpl).build()
}
@Test
fun `userAp 存在するユーザーにGETするとPersonが返ってくる`(): Unit = runTest {
val person = Person(
name = "Hoge",
id = "https://example.com/users/hoge",
preferredUsername = "hoge",
summary = "fuga",
inbox = "https://example.com/users/hoge/inbox",
outbox = "https://example.com/users/hoge/outbox",
url = "https://example.com/users/hoge",
icon = Image(
name = "icon",
mediaType = "image/jpeg",
url = "https://example.com/users/hoge/icon.jpg"
),
publicKey = Key(
name = "Public Key",
id = "https://example.com/users/hoge#pubkey",
owner = "https://example.com/users/hoge",
publicKeyPem = "-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----",
type = emptyList()
),
endpoints = mapOf("sharedInbox" to "https://example.com/inbox"),
followers = "https://example.com/users/hoge/followers",
following = "https://example.com/users/hoge/following"
)
whenever(apUserService.getPersonByName(eq("hoge"))).doReturn(person)
val objectMapper = ActivityPubConfig().objectMapper()
mockMvc
.get("/users/hoge")
.asyncDispatch()
.andExpect { status { isOk() } }
.andExpect { content { this.json(objectMapper.writeValueAsString(person)) } }
}
@Test
fun `userAP 存在しないユーザーにGETすると404が返ってくる`() = runTest {
whenever(apUserService.getPersonByName(eq("fuga"))).doThrow(FailedToGetResourcesException::class)
mockMvc
.get("/users/fuga")
.asyncDispatch()
.andExpect { status { isNotFound() } }
}
@Test
fun `userAP POSTすると405が返ってくる`() {
mockMvc
.post("/users/hoge")
.andExpect { status { isMethodNotAllowed() } }
}
}