mirror of https://github.com/usbharu/Hideout.git
test: inboxのテストを追加
This commit is contained in:
parent
df61e65fb0
commit
3ed6b20dc5
|
@ -0,0 +1,104 @@
|
|||
package dev.usbharu.hideout.activitypub.interfaces.api.inbox
|
||||
|
||||
import dev.usbharu.hideout.activitypub.domain.exception.JsonParseException
|
||||
import dev.usbharu.hideout.activitypub.interfaces.api.common.ActivityPubStringResponse
|
||||
import dev.usbharu.hideout.activitypub.service.common.APService
|
||||
import dev.usbharu.hideout.activitypub.service.common.ActivityType
|
||||
import dev.usbharu.hideout.core.domain.exception.FailedToGetResourcesException
|
||||
import io.ktor.http.*
|
||||
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.http.MediaType
|
||||
import org.springframework.test.web.servlet.MockMvc
|
||||
import org.springframework.test.web.servlet.post
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders
|
||||
|
||||
@ExtendWith(MockitoExtension::class)
|
||||
class InboxControllerImplTest {
|
||||
|
||||
private lateinit var mockMvc: MockMvc
|
||||
|
||||
@Mock
|
||||
private lateinit var apService: APService
|
||||
|
||||
@InjectMocks
|
||||
private lateinit var inboxController: InboxControllerImpl
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
mockMvc = MockMvcBuilders.standaloneSetup(inboxController).build()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `inbox 正常なPOSTリクエストをしたときAcceptが返ってくる`() = runTest {
|
||||
|
||||
|
||||
val json = """{"type":"Follow"}"""
|
||||
whenever(apService.parseActivity(eq(json))).doReturn(ActivityType.Follow)
|
||||
whenever(apService.processActivity(eq(json), eq(ActivityType.Follow))).doReturn(
|
||||
ActivityPubStringResponse(
|
||||
HttpStatusCode.Accepted, ""
|
||||
)
|
||||
)
|
||||
|
||||
mockMvc
|
||||
.post("/inbox") {
|
||||
content = json
|
||||
contentType = MediaType.APPLICATION_JSON
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect {
|
||||
status { isAccepted() }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `inbox parseActivityに失敗したときAcceptが返ってくる`() = runTest {
|
||||
val json = """{"type":"Hoge"}"""
|
||||
whenever(apService.parseActivity(eq(json))).doThrow(JsonParseException::class)
|
||||
|
||||
mockMvc
|
||||
.post("/inbox") {
|
||||
content = json
|
||||
contentType = MediaType.APPLICATION_JSON
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect {
|
||||
status { isAccepted() }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `inbox processActivityに失敗したときAcceptが返ってくる`() = runTest {
|
||||
val json = """{"type":"Follow"}"""
|
||||
whenever(apService.parseActivity(eq(json))).doReturn(ActivityType.Follow)
|
||||
whenever(
|
||||
apService.processActivity(
|
||||
eq(json),
|
||||
eq(ActivityType.Follow)
|
||||
)
|
||||
).doThrow(FailedToGetResourcesException::class)
|
||||
|
||||
mockMvc
|
||||
.post("/inbox") {
|
||||
content = json
|
||||
contentType = MediaType.APPLICATION_JSON
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect {
|
||||
status { isAccepted() }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue