70 lines
1.9 KiB
Kotlin
70 lines
1.9 KiB
Kotlin
package integration.services
|
|
|
|
import be.vandewalleh.mainModule
|
|
import be.vandewalleh.migrations.Migration
|
|
import be.vandewalleh.services.UserService
|
|
import org.amshove.kluent.*
|
|
import org.junit.jupiter.api.*
|
|
import org.kodein.di.Kodein
|
|
import org.kodein.di.generic.bind
|
|
import org.kodein.di.generic.instance
|
|
import org.kodein.di.generic.singleton
|
|
import utils.KMariadbContainer
|
|
import utils.testContainerDataSource
|
|
import javax.sql.DataSource
|
|
|
|
|
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
|
@TestMethodOrder(MethodOrderer.OrderAnnotation::class)
|
|
class UserServiceTest {
|
|
|
|
private val mariadb = KMariadbContainer().apply { start() }
|
|
|
|
private val kodein = Kodein {
|
|
import(mainModule, allowOverride = true)
|
|
bind<DataSource>(overrides = true) with singleton { testContainerDataSource(mariadb) }
|
|
}
|
|
|
|
private val migration by kodein.instance<Migration>()
|
|
|
|
init {
|
|
migration.migrate()
|
|
}
|
|
|
|
private val userService by kodein.instance<UserService>()
|
|
|
|
@Test
|
|
@Order(1)
|
|
fun `test create user`() {
|
|
val username = "hubert"
|
|
val email = "a@a"
|
|
val password = "password"
|
|
println(userService.createUser(username, email, password))
|
|
|
|
val id = userService.getUserId(email)
|
|
id `should not be` null
|
|
|
|
userService.getUserInfo(id!!)!!.let {
|
|
it.username `should be equal to` username
|
|
it.email `should be equal to` email
|
|
}
|
|
}
|
|
|
|
@Test
|
|
@Order(2)
|
|
fun `test create same user`() {
|
|
userService.createUser(username = "hubert", hashedPassword = "password", email = "a@a") `should be` null
|
|
}
|
|
|
|
@Test
|
|
@Order(3)
|
|
fun `test delete user`() {
|
|
val email = "a@a"
|
|
val id = userService.getUserId(email)!!
|
|
userService.deleteUser(id)
|
|
|
|
userService.getUserId(email) `should be` null
|
|
userService.getUserInfo(id) `should be` null
|
|
}
|
|
}
|