diff --git a/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/accept/ApSendAcceptServiceImplTest.kt b/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/accept/ApSendAcceptServiceImplTest.kt new file mode 100644 index 00000000..3d06c4d3 --- /dev/null +++ b/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/accept/ApSendAcceptServiceImplTest.kt @@ -0,0 +1,45 @@ +package dev.usbharu.hideout.activitypub.service.activity.accept + +import dev.usbharu.hideout.activitypub.domain.model.Accept +import dev.usbharu.hideout.activitypub.domain.model.Follow +import dev.usbharu.hideout.core.external.job.DeliverAcceptJob +import dev.usbharu.hideout.core.external.job.DeliverAcceptJobParam +import dev.usbharu.hideout.core.service.job.JobQueueParentService +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.Mock +import org.mockito.junit.jupiter.MockitoExtension +import org.mockito.kotlin.eq +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import utils.UserBuilder + +@ExtendWith(MockitoExtension::class) +class ApSendAcceptServiceImplTest { + + @Mock + private lateinit var jobQueueParentService: JobQueueParentService + + @Mock + private lateinit var deliverAcceptJob: DeliverAcceptJob + + @InjectMocks + private lateinit var apSendAcceptServiceImpl: ApSendAcceptServiceImpl + + @Test + fun `sendAccept DeliverAcceptJobが発行される`() = runTest { + val user = UserBuilder.localUserOf() + val remoteUser = UserBuilder.remoteUserOf() + + apSendAcceptServiceImpl.sendAcceptFollow(user, remoteUser) + + val deliverAcceptJobParam = DeliverAcceptJobParam( + Accept(apObject = Follow(apObject = user.url, actor = remoteUser.url), actor = user.url), + remoteUser.inbox, + user.id + ) + verify(jobQueueParentService, times(1)).scheduleTypeSafe(eq(deliverAcceptJob), eq(deliverAcceptJobParam)) + } +} diff --git a/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessorTest.kt b/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessorTest.kt new file mode 100644 index 00000000..55e52ff9 --- /dev/null +++ b/src/test/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessorTest.kt @@ -0,0 +1,78 @@ +package dev.usbharu.hideout.activitypub.service.activity.block + +import dev.usbharu.hideout.activitypub.domain.model.Block +import dev.usbharu.hideout.activitypub.domain.model.Follow +import dev.usbharu.hideout.activitypub.domain.model.Reject +import dev.usbharu.hideout.activitypub.service.common.APRequestService +import dev.usbharu.hideout.core.domain.model.user.UserRepository +import dev.usbharu.hideout.core.external.job.DeliverBlockJob +import dev.usbharu.hideout.core.external.job.DeliverBlockJobParam +import kotlinx.coroutines.test.runTest +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith +import org.mockito.InjectMocks +import org.mockito.Mock +import org.mockito.Spy +import org.mockito.junit.jupiter.MockitoExtension +import org.mockito.kotlin.* +import utils.TestTransaction +import utils.UserBuilder + +@ExtendWith(MockitoExtension::class) +class APDeliverBlockJobProcessorTest { + + @Mock + private lateinit var apRequestService: APRequestService + + @Mock + private lateinit var userRepository: UserRepository + + @Spy + private val transaction = TestTransaction + + @Mock + private lateinit var deliverBlockJob: DeliverBlockJob + + @InjectMocks + private lateinit var apDeliverBlockJobProcessor: APDeliverBlockJobProcessor + + @Test + fun `process rejectとblockがapPostされる`() = runTest { + val user = UserBuilder.localUserOf() + whenever(userRepository.findById(eq(user.id))).doReturn(user) + + + val block = Block( + actor = user.url, + "https://example.com/block", + apObject = "https://remote.example.com" + ) + val reject = Reject( + actor = user.url, + "https://example.com/reject/follow", + apObject = Follow( + apObject = user.url, + actor = "https://remote.example.com" + ) + ) + val param = DeliverBlockJobParam( + user.id, + block, + reject, + "https://remote.example.com" + ) + + + apDeliverBlockJobProcessor.process(param) + + verify(apRequestService, times(1)).apPost(eq("https://remote.example.com"), eq(block), eq(user)) + verify(apRequestService, times(1)).apPost(eq("https://remote.example.com"), eq(reject), eq(user)) + } + + @Test + fun `job deliverBlockJobが返ってくる`() { + val actual = apDeliverBlockJobProcessor.job() + assertThat(actual).isEqualTo(deliverBlockJob) + } +}