More tests !
This commit is contained in:
@@ -12,4 +12,4 @@ interface User : Entity<User> {
|
||||
var password: String
|
||||
var createdAt: LocalDateTime
|
||||
var lastLogin: LocalDateTime?
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,16 @@
|
||||
package be.vandewalleh.extensions
|
||||
|
||||
import be.vandewalleh.auth.UserDbIdPrincipal
|
||||
import be.vandewalleh.kodein
|
||||
import be.vandewalleh.services.FullNoteCreateDTO
|
||||
import be.vandewalleh.services.FullNotePatchDTO
|
||||
import be.vandewalleh.services.UserService
|
||||
import io.ktor.application.*
|
||||
import io.ktor.auth.*
|
||||
import io.ktor.http.*
|
||||
import io.ktor.request.*
|
||||
import io.ktor.response.*
|
||||
import org.kodein.di.generic.instance
|
||||
|
||||
suspend fun ApplicationCall.respondStatus(status: HttpStatusCode) {
|
||||
respond(status, status.description)
|
||||
respond(status, """{"msg": "${status.description}"}""")
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,9 +3,12 @@ package be.vandewalleh.features
|
||||
import io.ktor.application.*
|
||||
import io.ktor.features.*
|
||||
import io.ktor.jackson.*
|
||||
import me.liuwj.ktorm.jackson.*
|
||||
|
||||
fun Application.contentNegotiationFeature() {
|
||||
install(ContentNegotiation) {
|
||||
jackson {}
|
||||
jackson {
|
||||
registerModule(KtormModule())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package be.vandewalleh.routing
|
||||
|
||||
import be.vandewalleh.entities.User
|
||||
import be.vandewalleh.extensions.respondStatus
|
||||
import be.vandewalleh.extensions.userId
|
||||
import be.vandewalleh.services.UserService
|
||||
@@ -12,16 +13,22 @@ import io.ktor.routing.*
|
||||
import org.kodein.di.Kodein
|
||||
import org.kodein.di.generic.instance
|
||||
import org.mindrot.jbcrypt.BCrypt
|
||||
import java.time.LocalDateTime
|
||||
|
||||
fun Routing.user(kodein: Kodein) {
|
||||
val userService by kodein.instance<UserService>()
|
||||
|
||||
post("/user/test") {
|
||||
val user = call.receive<User>()
|
||||
call.respond(user)
|
||||
}
|
||||
|
||||
route("/user") {
|
||||
post {
|
||||
val user = call.receive<UserDto>()
|
||||
val user = call.receive<User>()
|
||||
|
||||
if (userService.userExists(user.username, user.email))
|
||||
return@post call.respond(HttpStatusCode.Conflict)
|
||||
return@post call.respondStatus(HttpStatusCode.Conflict)
|
||||
|
||||
val hashedPassword = BCrypt.hashpw(user.password, BCrypt.gensalt())
|
||||
|
||||
@@ -32,7 +39,7 @@ fun Routing.user(kodein: Kodein) {
|
||||
|
||||
authenticate {
|
||||
put {
|
||||
val user = call.receive<UserDto>()
|
||||
val user = call.receive<User>()
|
||||
|
||||
if (userService.userExists(user.username, user.email))
|
||||
return@put call.respond(HttpStatusCode.Conflict)
|
||||
@@ -45,12 +52,13 @@ fun Routing.user(kodein: Kodein) {
|
||||
}
|
||||
|
||||
delete {
|
||||
userService.deleteUser(call.userId())
|
||||
call.respondStatus(HttpStatusCode.OK)
|
||||
val status = if (userService.deleteUser(call.userId()))
|
||||
HttpStatusCode.OK
|
||||
else
|
||||
HttpStatusCode.NotFound
|
||||
call.respondStatus(status)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private data class UserDto(val username: String, val email: String, val password: String)
|
||||
|
||||
@@ -98,9 +98,13 @@ class UserService(override val kodein: Kodein) : KodeinAware {
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteUser(userId: Int) {
|
||||
fun deleteUser(userId: Int): Boolean {
|
||||
db.useTransaction {
|
||||
db.delete(Users) { it.id eq userId }
|
||||
return when (db.delete(Users) { it.id eq userId }) {
|
||||
1 -> true
|
||||
0 -> false
|
||||
else -> error("??")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user