Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a69d06d7f | |||
| d5746aa22d | |||
| 5d36099738 | |||
| 5c2e2e617e |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -40,4 +40,4 @@ out/
|
||||
.kotlin
|
||||
|
||||
### Cert ###
|
||||
/keys/
|
||||
/cert/
|
||||
|
||||
@@ -1,47 +1,40 @@
|
||||
plugins {
|
||||
alias(hlaeja.plugins.kotlin.jvm)
|
||||
alias(hlaeja.plugins.kotlin.spring)
|
||||
alias(hlaeja.plugins.ltd.hlaeja.plugin.certificate)
|
||||
alias(hlaeja.plugins.ltd.hlaeja.plugin.service)
|
||||
alias(hlaeja.plugins.spring.dependency.management)
|
||||
alias(hlaeja.plugins.springframework.boot)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(hlaeja.com.fasterxml.jackson.module.kotlin)
|
||||
implementation(hlaeja.fasterxml.jackson.module.kotlin)
|
||||
implementation(hlaeja.jjwt.api)
|
||||
implementation(hlaeja.kotlin.logging)
|
||||
implementation(hlaeja.kotlin.reflect)
|
||||
implementation(hlaeja.kotlinx.coroutines)
|
||||
implementation(hlaeja.ltd.hlaeja.library.common.messages)
|
||||
implementation(hlaeja.org.springframework.springboot.actuator.starter)
|
||||
implementation(hlaeja.org.springframework.springboot.r2dbc.starter)
|
||||
implementation(hlaeja.org.springframework.springboot.webflux.starter)
|
||||
implementation(hlaeja.library.hlaeja.common.messages)
|
||||
implementation(hlaeja.springboot.starter.actuator)
|
||||
implementation(hlaeja.springboot.starter.r2dbc)
|
||||
implementation(hlaeja.springboot.starter.webflux)
|
||||
|
||||
runtimeOnly(hlaeja.jjwt.impl)
|
||||
runtimeOnly(hlaeja.jjwt.jackson)
|
||||
runtimeOnly(hlaeja.org.postgresql)
|
||||
runtimeOnly(hlaeja.org.postgresql.r2dbc)
|
||||
runtimeOnly(hlaeja.postgresql)
|
||||
runtimeOnly(hlaeja.postgresql.r2dbc)
|
||||
|
||||
testImplementation(hlaeja.assertj.core)
|
||||
testImplementation(hlaeja.io.mockk)
|
||||
testImplementation(hlaeja.io.projectreactor.reactor.test)
|
||||
testImplementation(hlaeja.mockk)
|
||||
testImplementation(hlaeja.projectreactor.reactor.test)
|
||||
testImplementation(hlaeja.kotlin.test.junit5)
|
||||
testImplementation(hlaeja.kotlinx.coroutines.test)
|
||||
testImplementation(hlaeja.org.springframework.springboot.test.starter)
|
||||
testImplementation(hlaeja.springboot.starter.test)
|
||||
|
||||
testRuntimeOnly(hlaeja.org.junit.platform.launcher)
|
||||
testRuntimeOnly(hlaeja.junit.platform.launcher)
|
||||
}
|
||||
|
||||
group = "ltd.hlaeja"
|
||||
|
||||
tasks {
|
||||
named("processResources") {
|
||||
dependsOn("copyPrivateKey")
|
||||
}
|
||||
register<Copy>("copyPrivateKey") {
|
||||
group = "hlaeja"
|
||||
from("keys/private_key.pem")
|
||||
into("${layout.buildDirectory.get()}/resources/main/keys")
|
||||
onlyIf { file("keys/private_key.pem").exists() }
|
||||
}
|
||||
tasks.named("processResources") {
|
||||
dependsOn("copyCertificates")
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
kotlin.code.style=official
|
||||
version=0.1.0
|
||||
catalog=0.4.0
|
||||
version=0.2.0
|
||||
catalog=0.6.0
|
||||
container.port.host=9010
|
||||
|
||||
@@ -3,11 +3,10 @@ package ltd.hlaeja.controller
|
||||
import ltd.hlaeja.library.deviceRegistry.Device
|
||||
import ltd.hlaeja.service.DeviceService
|
||||
import ltd.hlaeja.service.JwtService
|
||||
import org.springframework.http.HttpStatus.EXPECTATION_FAILED
|
||||
import ltd.hlaeja.util.toDeviceResponse
|
||||
import org.springframework.web.bind.annotation.PostMapping
|
||||
import org.springframework.web.bind.annotation.RequestBody
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
import org.springframework.web.server.ResponseStatusException
|
||||
|
||||
@RestController
|
||||
class DeviceController(
|
||||
@@ -18,7 +17,6 @@ class DeviceController(
|
||||
@PostMapping("/device")
|
||||
suspend fun addDevice(
|
||||
@RequestBody request: Device.Request,
|
||||
): Device.Identity = deviceService.addDevice(request.type)
|
||||
.let { jwtService.makeIdentity(it.id ?: throw ResponseStatusException(EXPECTATION_FAILED)) }
|
||||
.let { Device.Identity(it) }
|
||||
): Device.Response = deviceService.addDevice(request.type)
|
||||
.toDeviceResponse(jwtService)
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package ltd.hlaeja.util
|
||||
|
||||
import java.time.ZonedDateTime
|
||||
import ltd.hlaeja.entity.DeviceEntity
|
||||
import ltd.hlaeja.entity.NodeEntity
|
||||
import ltd.hlaeja.entity.TypeEntity
|
||||
import ltd.hlaeja.library.deviceRegistry.Device
|
||||
import ltd.hlaeja.library.deviceRegistry.Identity
|
||||
import ltd.hlaeja.library.deviceRegistry.Node
|
||||
import ltd.hlaeja.library.deviceRegistry.Type
|
||||
import ltd.hlaeja.service.JwtService
|
||||
import org.springframework.http.HttpStatus.EXPECTATION_FAILED
|
||||
import org.springframework.web.server.ResponseStatusException
|
||||
|
||||
@@ -36,3 +39,11 @@ fun NodeEntity.toIdentityResponse(): Identity.Response = Identity.Response(
|
||||
id ?: throw ResponseStatusException(EXPECTATION_FAILED),
|
||||
device,
|
||||
)
|
||||
|
||||
suspend fun DeviceEntity.toDeviceResponse(
|
||||
jwtService: JwtService,
|
||||
): Device.Response = Device.Response(
|
||||
id ?: throw ResponseStatusException(EXPECTATION_FAILED),
|
||||
type,
|
||||
jwtService.makeIdentity(id),
|
||||
)
|
||||
|
||||
@@ -11,7 +11,7 @@ spring:
|
||||
version: "%APP_BUILD_OS_VERSION%"
|
||||
|
||||
jwt:
|
||||
private-key: keys/private_key.pem
|
||||
private-key: cert/private_key.pem
|
||||
|
||||
---
|
||||
###############################
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.junit.jupiter.api.Test
|
||||
|
||||
class JwtServiceTest {
|
||||
|
||||
val property: JwtProperty = JwtProperty("keys/valid-private-key.pem")
|
||||
val property: JwtProperty = JwtProperty("cert/valid-private-key.pem")
|
||||
lateinit var service: JwtService
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -11,7 +11,7 @@ class PrivateKeyProviderTest {
|
||||
@Test
|
||||
fun `load private key - success`() {
|
||||
// given
|
||||
val pemFilePath = "keys/valid-private-key.pem"
|
||||
val pemFilePath = "cert/valid-private-key.pem"
|
||||
|
||||
// when
|
||||
val privateKey: RSAPrivateKey = PrivateKeyProvider.load(pemFilePath)
|
||||
@@ -24,7 +24,7 @@ class PrivateKeyProviderTest {
|
||||
@Test
|
||||
fun `load private key - file does not exist`() {
|
||||
// given
|
||||
val nonExistentPemFilePath = "keys/non-existent.pem"
|
||||
val nonExistentPemFilePath = "cert/non-existent.pem"
|
||||
|
||||
// when exception
|
||||
val exception = assertThrows<KeyProviderException> {
|
||||
@@ -38,7 +38,7 @@ class PrivateKeyProviderTest {
|
||||
@Test
|
||||
fun `load private key - file is invalid`() {
|
||||
// given
|
||||
val invalidPemFilePath = "keys/invalid-private-key.pem"
|
||||
val invalidPemFilePath = "cert/invalid-private-key.pem"
|
||||
|
||||
// when exception
|
||||
val exception = assertThrows<IllegalArgumentException> {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
jwt:
|
||||
private-key: keys/valid-private-key.pem
|
||||
private-key: cert/valid-private-key.pem
|
||||
|
||||
spring:
|
||||
r2dbc:
|
||||
|
||||
Reference in New Issue
Block a user