mirror of https://github.com/usbharu/Hideout.git
test: モックを導入しテスト名を詳細に
This commit is contained in:
parent
68cc469a43
commit
ee46d05226
|
@ -69,10 +69,12 @@ dependencies {
|
||||||
implementation("io.ktor:ktor-client-cio:$ktor_version")
|
implementation("io.ktor:ktor-client-cio:$ktor_version")
|
||||||
implementation("io.ktor:ktor-client-content-negotiation:$ktor_version")
|
implementation("io.ktor:ktor-client-content-negotiation:$ktor_version")
|
||||||
testImplementation("io.ktor:ktor-client-mock:$ktor_version")
|
testImplementation("io.ktor:ktor-client-mock:$ktor_version")
|
||||||
|
|
||||||
implementation("tech.barbero.http-messages-signing:http-messages-signing-core:1.0.0")
|
implementation("tech.barbero.http-messages-signing:http-messages-signing-core:1.0.0")
|
||||||
|
|
||||||
testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
|
testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
|
||||||
|
testImplementation("org.mockito.kotlin:mockito-kotlin:4.1.0")
|
||||||
|
testImplementation("org.mockito:mockito-inline:5.2.0")
|
||||||
|
|
||||||
|
|
||||||
implementation("org.drewcarlson:kjob-core:0.6.0")
|
implementation("org.drewcarlson:kjob-core:0.6.0")
|
||||||
testImplementation("io.ktor:ktor-server-test-host-jvm:2.2.4")
|
testImplementation("io.ktor:ktor-server-test-host-jvm:2.2.4")
|
||||||
|
|
|
@ -9,35 +9,29 @@ import com.fasterxml.jackson.module.kotlin.readValue
|
||||||
import dev.usbharu.hideout.ap.Image
|
import dev.usbharu.hideout.ap.Image
|
||||||
import dev.usbharu.hideout.ap.Key
|
import dev.usbharu.hideout.ap.Key
|
||||||
import dev.usbharu.hideout.ap.Person
|
import dev.usbharu.hideout.ap.Person
|
||||||
import dev.usbharu.hideout.config.Config
|
|
||||||
import dev.usbharu.hideout.domain.model.ActivityPubResponse
|
|
||||||
import dev.usbharu.hideout.domain.model.User
|
|
||||||
import dev.usbharu.hideout.domain.model.UserEntity
|
|
||||||
import dev.usbharu.hideout.domain.model.job.HideoutJob
|
|
||||||
import dev.usbharu.hideout.plugins.configureRouting
|
import dev.usbharu.hideout.plugins.configureRouting
|
||||||
import dev.usbharu.hideout.plugins.configureSerialization
|
import dev.usbharu.hideout.plugins.configureSerialization
|
||||||
import dev.usbharu.hideout.repository.IUserRepository
|
|
||||||
import dev.usbharu.hideout.service.activitypub.ActivityPubService
|
import dev.usbharu.hideout.service.activitypub.ActivityPubService
|
||||||
import dev.usbharu.hideout.service.activitypub.ActivityPubUserService
|
import dev.usbharu.hideout.service.activitypub.ActivityPubUserService
|
||||||
import dev.usbharu.hideout.service.activitypub.ActivityType
|
|
||||||
import dev.usbharu.hideout.service.impl.UserService
|
import dev.usbharu.hideout.service.impl.UserService
|
||||||
import dev.usbharu.hideout.service.signature.HttpSignatureVerifyService
|
import dev.usbharu.hideout.service.signature.HttpSignatureVerifyService
|
||||||
import dev.usbharu.hideout.util.HttpUtil.Activity
|
import dev.usbharu.hideout.util.HttpUtil.Activity
|
||||||
import io.ktor.client.call.*
|
|
||||||
import io.ktor.client.request.*
|
import io.ktor.client.request.*
|
||||||
import io.ktor.client.statement.*
|
import io.ktor.client.statement.*
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.server.config.*
|
import io.ktor.server.config.*
|
||||||
import io.ktor.server.testing.*
|
import io.ktor.server.testing.*
|
||||||
import kjob.core.dsl.JobContextWithProps
|
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.mockito.ArgumentMatchers.anyString
|
||||||
|
import org.mockito.kotlin.doReturn
|
||||||
|
import org.mockito.kotlin.mock
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
|
||||||
class UsersAPTest {
|
class UsersAPTest {
|
||||||
|
|
||||||
@Test
|
@Test()
|
||||||
fun testHandleUsersName() = testApplication {
|
fun `ユーザのURLにAcceptヘッダーをActivityにしてアクセスしたときPersonが返ってくるか`() = testApplication {
|
||||||
environment {
|
environment {
|
||||||
config = ApplicationConfig("empty.conf")
|
config = ApplicationConfig("empty.conf")
|
||||||
}
|
}
|
||||||
|
@ -65,82 +59,18 @@ class UsersAPTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
person.context = listOf("https://www.w3.org/ns/activitystreams")
|
person.context = listOf("https://www.w3.org/ns/activitystreams")
|
||||||
|
|
||||||
|
val httpSignatureVerifyService = mock<HttpSignatureVerifyService> {}
|
||||||
|
val activityPubService = mock<ActivityPubService> {}
|
||||||
|
val userService = mock<UserService> {}
|
||||||
|
|
||||||
|
val activityPubUserService = mock<ActivityPubUserService> {
|
||||||
|
onBlocking { getPersonByName(anyString()) } doReturn person
|
||||||
|
}
|
||||||
|
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureRouting(object : HttpSignatureVerifyService {
|
configureRouting(httpSignatureVerifyService, activityPubService, userService, activityPubUserService)
|
||||||
override fun verify(headers: Headers): Boolean {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}, object : ActivityPubService {
|
|
||||||
override fun parseActivity(json: String): ActivityType {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun processActivity(json: String, type: ActivityType): ActivityPubResponse? {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun <T : HideoutJob> processActivity(
|
|
||||||
job: JobContextWithProps<T>,
|
|
||||||
hideoutJob: HideoutJob
|
|
||||||
) {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
}, UserService(object : IUserRepository {
|
|
||||||
override suspend fun create(user: User): UserEntity {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun findById(id: Long): UserEntity? {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun findByName(name: String): UserEntity? {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun findByUrl(url: String): UserEntity? {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun update(userEntity: UserEntity) {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun delete(id: Long) {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun findAll(): List<User> {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun findAllByLimitAndByOffset(limit: Int, offset: Long): List<UserEntity> {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun createFollower(id: Long, follower: Long) {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun deleteFollower(id: Long, follower: Long) {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun findFollowersById(id: Long): List<UserEntity> {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
}), object : ActivityPubUserService {
|
|
||||||
override suspend fun getPersonByName(name: String): Person {
|
|
||||||
return person
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun fetchPerson(url: String): Person {
|
|
||||||
TODO("Not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
client.get("/users/test") {
|
client.get("/users/test") {
|
||||||
accept(ContentType.Application.Activity)
|
accept(ContentType.Application.Activity)
|
||||||
|
@ -148,12 +78,13 @@ class UsersAPTest {
|
||||||
val objectMapper = jacksonObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
|
val objectMapper = jacksonObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
|
||||||
.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
|
.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
|
||||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
||||||
objectMapper.configOverride(List::class.java).setSetterInfo(JsonSetter.Value.forValueNulls(
|
objectMapper.configOverride(List::class.java).setSetterInfo(
|
||||||
Nulls.AS_EMPTY))
|
JsonSetter.Value.forValueNulls(
|
||||||
|
Nulls.AS_EMPTY
|
||||||
|
)
|
||||||
|
)
|
||||||
val actual = it.bodyAsText()
|
val actual = it.bodyAsText()
|
||||||
val readValue = objectMapper.readValue<Person>(actual)
|
val readValue = objectMapper.readValue<Person>(actual)
|
||||||
println(objectMapper.writeValueAsString(person))
|
|
||||||
println(objectMapper.writeValueAsString(readValue))
|
|
||||||
assertEquals(person, readValue)
|
assertEquals(person, readValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue