mirror of https://github.com/usbharu/Hideout.git
test: WebFingerControllerのテストを追加
This commit is contained in:
parent
4418caaf99
commit
df61e65fb0
|
@ -0,0 +1,100 @@
|
||||||
|
package dev.usbharu.hideout.activitypub.interfaces.api.webfinger
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||||
|
import com.fasterxml.jackson.module.kotlin.readValue
|
||||||
|
import dev.usbharu.hideout.activitypub.domain.model.webfinger.WebFinger
|
||||||
|
import dev.usbharu.hideout.activitypub.service.webfinger.WebFingerApiService
|
||||||
|
import dev.usbharu.hideout.application.config.ApplicationConfig
|
||||||
|
import dev.usbharu.hideout.core.domain.exception.FailedToGetResourcesException
|
||||||
|
import kotlinx.coroutines.test.runTest
|
||||||
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
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.request.MockMvcRequestBuilders.get
|
||||||
|
import org.springframework.test.web.servlet.result.MockMvcResultHandlers.print
|
||||||
|
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
|
||||||
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders
|
||||||
|
import utils.UserBuilder
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension::class)
|
||||||
|
class WebFingerControllerTest {
|
||||||
|
|
||||||
|
private lateinit var mockMvc: MockMvc
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var webFingerApiService: WebFingerApiService
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var applicationConfig: ApplicationConfig
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private lateinit var webFingerController: WebFingerController
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
fun setUp() {
|
||||||
|
this.mockMvc = MockMvcBuilders.standaloneSetup(webFingerController).build()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `webfinger 存在するacctを指定したとき200 OKでWebFingerのレスポンスが返ってくる`() = runTest {
|
||||||
|
|
||||||
|
val user = UserBuilder.localUserOf()
|
||||||
|
whenever(
|
||||||
|
webFingerApiService.findByNameAndDomain(
|
||||||
|
eq("hoge"),
|
||||||
|
eq("example.com")
|
||||||
|
)
|
||||||
|
).doReturn(user)
|
||||||
|
|
||||||
|
val contentAsString = mockMvc.perform(get("/.well-known/webfinger?resource=acct:hoge@example.com"))
|
||||||
|
.andDo(print())
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andReturn()
|
||||||
|
.response
|
||||||
|
.contentAsString
|
||||||
|
|
||||||
|
val objectMapper = jacksonObjectMapper()
|
||||||
|
|
||||||
|
val readValue = objectMapper.readValue<WebFinger>(contentAsString)
|
||||||
|
|
||||||
|
val expected = WebFinger(
|
||||||
|
subject = "acct:${user.name}@${user.domain}",
|
||||||
|
listOf(
|
||||||
|
WebFinger.Link(
|
||||||
|
"self",
|
||||||
|
"application/activity+json",
|
||||||
|
user.url
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(readValue).isEqualTo(expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `webfinger 存在しないacctを指定したとき404 Not Foundが返ってくる`() = runTest {
|
||||||
|
whenever(webFingerApiService.findByNameAndDomain(eq("fuga"), eq("example.com"))).doThrow(
|
||||||
|
FailedToGetResourcesException::class
|
||||||
|
)
|
||||||
|
|
||||||
|
mockMvc.perform(get("/.well-known/webfinger?resource=acct:fuga@example.com"))
|
||||||
|
.andDo(print())
|
||||||
|
.andExpect(status().isNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `webfinger acctとして解釈できない場合は400 Bad Requestが返ってくる`() {
|
||||||
|
mockMvc.perform(get("/.well-known/webfinger?resource=@hello@aa@aab@aaa"))
|
||||||
|
.andDo(print())
|
||||||
|
.andExpect(status().isBadRequest)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue