mirror of https://github.com/usbharu/Hideout.git
test: actorのエンドポイントのテストを追加
This commit is contained in:
parent
ec24100f0a
commit
a2420622c5
|
@ -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() } }
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue