mirror of https://github.com/usbharu/Hideout.git
test: JwtRefreshTokenRepositoryのテストを追加
This commit is contained in:
parent
6d9ef35903
commit
1b6147db7f
|
@ -0,0 +1,89 @@
|
|||
@file:OptIn(ExperimentalCoroutinesApi::class, ExperimentalCoroutinesApi::class)
|
||||
|
||||
package dev.usbharu.hideout.repository
|
||||
|
||||
import dev.usbharu.hideout.domain.model.hideout.entity.JwtRefreshToken
|
||||
import dev.usbharu.hideout.service.IdGenerateService
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.SchemaUtils
|
||||
import org.jetbrains.exposed.sql.insert
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.time.Clock
|
||||
import java.time.Instant
|
||||
import java.time.ZoneId
|
||||
import java.time.temporal.ChronoUnit
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class JwtRefreshTokenRepositoryImplTest {
|
||||
|
||||
lateinit var db: Database
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
db = Database.connect("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")
|
||||
transaction(db) {
|
||||
SchemaUtils.create(JwtRefreshTokens)
|
||||
}
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
fun tearDown() {
|
||||
transaction(db) {
|
||||
SchemaUtils.drop(JwtRefreshTokens)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `save 存在しない場合はinsertする`() = runTest {
|
||||
val repository = JwtRefreshTokenRepositoryImpl(db, object : IdGenerateService {
|
||||
override suspend fun generateId(): Long {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
})
|
||||
val now = Instant.now(Clock.tickMillis(ZoneId.systemDefault()))
|
||||
val expiresAt = now.plus(10, ChronoUnit.MINUTES)
|
||||
|
||||
val expect = JwtRefreshToken(1L, 2L, "refreshToken", now, expiresAt)
|
||||
repository.save(expect)
|
||||
val actual = repository.findById(1L)
|
||||
assertEquals(expect, actual)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `save 存在する場合はupdateする`() = runTest {
|
||||
val repository = JwtRefreshTokenRepositoryImpl(db, object : IdGenerateService {
|
||||
override suspend fun generateId(): Long {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
})
|
||||
transaction {
|
||||
JwtRefreshTokens.insert {
|
||||
it[id] = 1L
|
||||
it[userId] = 2L
|
||||
it[refreshToken] = "refreshToken1"
|
||||
it[createdAt] = Instant.now().toEpochMilli()
|
||||
it[expiresAt] = Instant.now().plus(10, ChronoUnit.MINUTES).toEpochMilli()
|
||||
}
|
||||
}
|
||||
|
||||
repository.save(
|
||||
JwtRefreshToken(
|
||||
id = 1L,
|
||||
userId = 2L,
|
||||
refreshToken = "refreshToken2",
|
||||
createdAt = Instant.now(),
|
||||
expiresAt = Instant.now().plus(10, ChronoUnit.MINUTES)
|
||||
)
|
||||
)
|
||||
transaction {
|
||||
val toJwtRefreshToken = JwtRefreshTokens.select { JwtRefreshTokens.id.eq(1L) }.single().toJwtRefreshToken()
|
||||
assertEquals("refreshToken2", toJwtRefreshToken.refreshToken)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue