replace local jwt with library version
- update DeviceController to handle hlaeja jwt instead of jwtService - update mapper sign with hlaeja jwt instead of jwtService - add dependency for hlaeja jwt - remove dependencies for jjwt - remove JwtService.kt - remove PrivateKeyProvider.kt - remove jwt key property explanation from additional-spring-configuration-metadata.json
This commit is contained in:
@@ -9,9 +9,9 @@ import java.time.ZonedDateTime
|
||||
import java.util.UUID
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import ltd.hlaeja.entity.DeviceEntity
|
||||
import ltd.hlaeja.jwt.service.PrivateJwtService
|
||||
import ltd.hlaeja.library.deviceRegistry.Device
|
||||
import ltd.hlaeja.service.DeviceService
|
||||
import ltd.hlaeja.service.JwtService
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Nested
|
||||
@@ -28,13 +28,13 @@ class DeviceControllerTest {
|
||||
}
|
||||
|
||||
val deviceService: DeviceService = mockk()
|
||||
val jwtService: JwtService = mockk()
|
||||
val privateJwtService: PrivateJwtService = mockk()
|
||||
|
||||
lateinit var controller: DeviceController
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
controller = DeviceController(deviceService, jwtService)
|
||||
controller = DeviceController(deviceService, privateJwtService)
|
||||
}
|
||||
|
||||
@Nested
|
||||
@@ -45,14 +45,14 @@ class DeviceControllerTest {
|
||||
// given
|
||||
val request = Device.Request(uuid)
|
||||
coEvery { deviceService.addDevice(any()) } returns DeviceEntity(uuid, timestamp, uuid)
|
||||
coEvery { jwtService.makeIdentity(any()) } returns PAYLOAD
|
||||
coEvery { privateJwtService.sign(any()) } returns PAYLOAD
|
||||
|
||||
// when
|
||||
val response = controller.addDevice(request)
|
||||
|
||||
// then
|
||||
coVerify(exactly = 1) { deviceService.addDevice(any()) }
|
||||
coVerify(exactly = 1) { jwtService.makeIdentity(any()) }
|
||||
coVerify(exactly = 1) { privateJwtService.sign(any()) }
|
||||
|
||||
assertThat(response.identity).isEqualTo(PAYLOAD)
|
||||
}
|
||||
@@ -80,14 +80,14 @@ class DeviceControllerTest {
|
||||
fun `get device - success`() = runTest {
|
||||
// given
|
||||
coEvery { deviceService.getDevice(any()) } returns DeviceEntity(uuid, timestamp, uuid)
|
||||
coEvery { jwtService.makeIdentity(any()) } returns PAYLOAD
|
||||
coEvery { privateJwtService.sign(any()) } returns PAYLOAD
|
||||
|
||||
// when
|
||||
val response = controller.getDevice(uuid)
|
||||
|
||||
// then
|
||||
coVerify(exactly = 1) { deviceService.getDevice(any()) }
|
||||
coVerify(exactly = 1) { jwtService.makeIdentity(any()) }
|
||||
coVerify(exactly = 1) { privateJwtService.sign(any()) }
|
||||
|
||||
assertThat(response.identity).isEqualTo(PAYLOAD)
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
package ltd.hlaeja.service
|
||||
|
||||
import java.util.UUID
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import ltd.hlaeja.property.JwtProperty
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class JwtServiceTest {
|
||||
|
||||
val property: JwtProperty = JwtProperty("cert/valid-private-key.pem")
|
||||
lateinit var service: JwtService
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
service = JwtService(property)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should generate a JWT successfully with a valid private key`() = runTest {
|
||||
// given
|
||||
val deviceId = UUID.fromString("00000000-0000-0000-0000-000000000000")
|
||||
|
||||
// when
|
||||
val jwt = service.makeIdentity(deviceId)
|
||||
|
||||
// then
|
||||
assertThat(jwt).contains("eyJkZXZpY2UiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ")
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package ltd.hlaeja.util
|
||||
|
||||
import java.security.interfaces.RSAPrivateKey
|
||||
import ltd.hlaeja.exception.KeyProviderException
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.assertThrows
|
||||
|
||||
class PrivateKeyProviderTest {
|
||||
|
||||
@Test
|
||||
fun `load private key - success`() {
|
||||
// given
|
||||
val pemFilePath = "cert/valid-private-key.pem"
|
||||
|
||||
// when
|
||||
val privateKey: RSAPrivateKey = PrivateKeyProvider.load(pemFilePath)
|
||||
|
||||
// then
|
||||
assertThat(privateKey).isNotNull
|
||||
assertThat(privateKey.algorithm).isEqualTo("RSA")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `load private key - file does not exist`() {
|
||||
// given
|
||||
val nonExistentPemFilePath = "cert/non-existent.pem"
|
||||
|
||||
// when exception
|
||||
val exception = assertThrows<KeyProviderException> {
|
||||
PrivateKeyProvider.load(nonExistentPemFilePath)
|
||||
}
|
||||
|
||||
// then
|
||||
assertThat(exception.message).isEqualTo("Could not load private key")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `load private key - file is invalid`() {
|
||||
// given
|
||||
val invalidPemFilePath = "cert/invalid-private-key.pem"
|
||||
|
||||
// when exception
|
||||
val exception = assertThrows<IllegalArgumentException> {
|
||||
PrivateKeyProvider.load(invalidPemFilePath)
|
||||
}
|
||||
|
||||
// then
|
||||
assertThat(exception.message).contains("Input byte array has wrong 4-byte ending unit")
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
VEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBK
|
||||
VU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMg
|
||||
SVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBU
|
||||
SElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpV
|
||||
TksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJ
|
||||
UyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRI
|
||||
SVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVO
|
||||
SyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElT
|
||||
IEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJ
|
||||
UyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5L
|
||||
IFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMg
|
||||
SlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElT
|
||||
IElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksg
|
||||
VEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBK
|
||||
VU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMg
|
||||
SVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBU
|
||||
SElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpV
|
||||
TksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJ
|
||||
UyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRI
|
||||
SVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVO
|
||||
SyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElT
|
||||
IEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJ
|
||||
UyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5L
|
||||
IFRISVMgSVMgSlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMg
|
||||
SlVOSyBUSElTIElTIEpVTksgVEhJUyBJUyBKVU5LIFRISVMgSVMgSlVOSyBUSElT
|
||||
IElTIEpVTksg==
|
||||
-----END PRIVATE KEY-----
|
||||
Reference in New Issue
Block a user