mirror of https://github.com/usbharu/Hideout.git
test: apps apiのテストを追加
This commit is contained in:
parent
9c24c736ec
commit
fcb3d39881
|
@ -13,7 +13,7 @@ plugins {
|
|||
kotlin("jvm") version "1.8.21"
|
||||
id("org.graalvm.buildtools.native") version "0.9.21"
|
||||
id("io.gitlab.arturbosch.detekt") version "1.23.1"
|
||||
id("org.springframework.boot") version "3.1.3"
|
||||
id("org.springframework.boot") version "3.2.0"
|
||||
kotlin("plugin.spring") version "1.8.21"
|
||||
id("org.openapi.generator") version "7.0.1"
|
||||
id("org.jetbrains.kotlinx.kover") version "0.7.4"
|
||||
|
@ -206,6 +206,8 @@ dependencies {
|
|||
|
||||
intTestImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||
intTestImplementation("org.springframework.security:spring-security-test")
|
||||
intTestImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
|
||||
intTestImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4")
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ktor_version=2.3.0
|
||||
kotlin_version=1.8.21
|
||||
kotlin_version=1.9.21
|
||||
logback_version=1.4.6
|
||||
kotlin.code.style=official
|
||||
exposed_version=0.44.0
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
package mastodon.apps
|
||||
|
||||
import dev.usbharu.hideout.SpringApplication
|
||||
import dev.usbharu.hideout.core.infrastructure.springframework.oauth2.RegisteredClient
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.http.MediaType
|
||||
import org.springframework.security.test.context.support.WithAnonymousUser
|
||||
import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers
|
||||
import org.springframework.test.web.servlet.MockMvc
|
||||
import org.springframework.test.web.servlet.post
|
||||
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import org.springframework.web.context.WebApplicationContext
|
||||
|
||||
@SpringBootTest(classes = [SpringApplication::class])
|
||||
@AutoConfigureMockMvc
|
||||
@Transactional
|
||||
class AppTest {
|
||||
|
||||
@Autowired
|
||||
private lateinit var context: WebApplicationContext
|
||||
|
||||
private lateinit var mockMvc: MockMvc
|
||||
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
mockMvc = MockMvcBuilders.webAppContextSetup(context)
|
||||
.apply<DefaultMockMvcBuilder>(SecurityMockMvcConfigurers.springSecurity())
|
||||
.build()
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithAnonymousUser
|
||||
fun apiV1AppsPostにformで匿名でappを作成できる() {
|
||||
mockMvc
|
||||
.post("/api/v1/apps") {
|
||||
contentType = MediaType.APPLICATION_FORM_URLENCODED
|
||||
param("client_name", "test-client")
|
||||
param("redirect_uris", "https://example.com")
|
||||
param("scopes", "write read")
|
||||
param("website", "https://example.com")
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect { status { isOk() } }
|
||||
|
||||
|
||||
val app = RegisteredClient
|
||||
.select { RegisteredClient.clientName eq "test-client" }
|
||||
.single()
|
||||
|
||||
assertThat(app[RegisteredClient.clientName]).isEqualTo("test-client")
|
||||
assertThat(app[RegisteredClient.redirectUris]).isEqualTo("https://example.com")
|
||||
assertThat(app[RegisteredClient.scopes]).isEqualTo("read,write")
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithAnonymousUser
|
||||
fun apiV1AppsPostにjsonで匿名でappを作成できる() {
|
||||
mockMvc
|
||||
.post("/api/v1/apps") {
|
||||
contentType = MediaType.APPLICATION_JSON
|
||||
content = """{
|
||||
"client_name": "test-client-2",
|
||||
"redirect_uris": "https://example.com",
|
||||
"scopes": "write read",
|
||||
"website": "https;//example.com"
|
||||
}"""
|
||||
}
|
||||
.asyncDispatch()
|
||||
.andExpect { status { isOk() } }
|
||||
|
||||
val app = RegisteredClient
|
||||
.select { RegisteredClient.clientName eq "test-client-2" }
|
||||
.single()
|
||||
|
||||
assertThat(app[RegisteredClient.clientName]).isEqualTo("test-client-2")
|
||||
assertThat(app[RegisteredClient.redirectUris]).isEqualTo("https://example.com")
|
||||
assertThat(app[RegisteredClient.scopes]).isEqualTo("read,write")
|
||||
}
|
||||
}
|
|
@ -18,10 +18,10 @@ hideout:
|
|||
|
||||
spring:
|
||||
flyway:
|
||||
enabled: false
|
||||
enabled: true
|
||||
datasource:
|
||||
driver-class-name: org.h2.Driver
|
||||
url: "jdbc:h2:mem:test;MODE=POSTGRESQL;DB_CLOSE_DELAY=-1"
|
||||
url: "jdbc:h2:mem:test;MODE=POSTGRESQL;DB_CLOSE_DELAY=-1;CASE_INSENSITIVE_IDENTIFIERS=true;TRACE_LEVEL_FILE=4;"
|
||||
username: ""
|
||||
password:
|
||||
data:
|
||||
|
@ -34,8 +34,8 @@ spring:
|
|||
console:
|
||||
enabled: true
|
||||
|
||||
exposed:
|
||||
generate-ddl: true
|
||||
excluded-packages: dev.usbharu.hideout.core.infrastructure.kjobexposed
|
||||
# exposed:
|
||||
# generate-ddl: true
|
||||
# excluded-packages: dev.usbharu.hideout.core.infrastructure.kjobexposed
|
||||
server:
|
||||
port: 8080
|
||||
|
|
Loading…
Reference in New Issue