diff --git a/application/build.gradle.kts b/application/build.gradle.kts index 36364948..9c621002 100644 --- a/application/build.gradle.kts +++ b/application/build.gradle.kts @@ -16,6 +16,7 @@ dependencies { implementation("org.springframework.security:spring-security-core") implementation("org.springframework.kafka:spring-kafka") + implementation(project(":components:psk")) implementation(kotlin("reflect")) implementation(libs.logging) @@ -63,6 +64,7 @@ testing { useJUnitJupiter() dependencies { implementation(project()) + implementation(project(":components:psk")) implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation(libs.kafkaAvro) implementation(libs.avro) diff --git a/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/CoapMessageHandlingTest.kt b/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/CoapMessageHandlingTest.kt index af3fedc0..d9c92491 100644 --- a/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/CoapMessageHandlingTest.kt +++ b/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/CoapMessageHandlingTest.kt @@ -8,7 +8,7 @@ import org.assertj.core.api.Assertions.assertThat import org.gxf.crestdeviceservice.IntegrationTestHelper.getFileContentAsString import org.gxf.crestdeviceservice.psk.entity.PreSharedKey import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus -import org.gxf.crestdeviceservice.psk.entity.PskRepository +import org.gxf.crestdeviceservice.psk.repository.PskRepository import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/DeviceCredentialsRetrievalTest.kt b/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/DeviceCredentialsRetrievalTest.kt index 0e74769e..3030919d 100644 --- a/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/DeviceCredentialsRetrievalTest.kt +++ b/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/DeviceCredentialsRetrievalTest.kt @@ -7,7 +7,7 @@ import java.time.Instant import org.assertj.core.api.Assertions.assertThat import org.gxf.crestdeviceservice.psk.entity.PreSharedKey import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus -import org.gxf.crestdeviceservice.psk.entity.PskRepository +import org.gxf.crestdeviceservice.psk.repository.PskRepository import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/MessageHandlingTest.kt b/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/MessageHandlingTest.kt index c4d4b35c..2906be56 100644 --- a/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/MessageHandlingTest.kt +++ b/application/src/integrationTest/kotlin/org/gxf/crestdeviceservice/MessageHandlingTest.kt @@ -7,7 +7,7 @@ import java.time.Duration import org.assertj.core.api.Assertions.assertThat import org.gxf.crestdeviceservice.IntegrationTestHelper.createKafkaConsumer import org.gxf.crestdeviceservice.IntegrationTestHelper.getFileContentAsString -import org.gxf.crestdeviceservice.kafka.configuration.KafkaProducerProperties +import org.gxf.crestdeviceservice.config.KafkaProducerProperties import org.gxf.sng.avro.DeviceMessage import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/MessageService.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/MessageService.kt deleted file mode 100644 index a6763df0..00000000 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/MessageService.kt +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-FileCopyrightText: Contributors to the GXF project -// -// SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap - -import com.fasterxml.jackson.databind.JsonNode -import org.gxf.crestdeviceservice.kafka.MessageProducer -import org.springframework.stereotype.Service - -@Service -class MessageService(private val messageProducer: MessageProducer) { - fun handleMessage(message: JsonNode) { - messageProducer.produceMessage(message) - } -} diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/PskCommandCreator.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/PskCommandCreator.kt deleted file mode 100644 index 1db74212..00000000 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/PskCommandCreator.kt +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: Contributors to the GXF project -// -// SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap - -import org.apache.commons.codec.digest.DigestUtils -import org.gxf.crestdeviceservice.psk.entity.PreSharedKey - -object PskCommandCreator { - - fun createPskSetCommand(newPreSharedKey: PreSharedKey): String { - val newKey = newPreSharedKey.preSharedKey - val hash = DigestUtils.sha256Hex("${newPreSharedKey.secret}${newKey}") - return "!PSK:${newKey}:${hash};PSK:${newKey}:${hash}:SET" - } -} diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/configuration/KafkaConfiguration.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/config/KafkaConfiguration.kt similarity index 97% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/configuration/KafkaConfiguration.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/config/KafkaConfiguration.kt index 1c3ba4a6..d88176a6 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/configuration/KafkaConfiguration.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/config/KafkaConfiguration.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.kafka.configuration +package org.gxf.crestdeviceservice.config import com.alliander.sng.DeviceCredentials import com.gxf.utilities.kafka.avro.AvroDeserializer diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/configuration/KafkaProducerProperties.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/config/KafkaProducerProperties.kt similarity index 83% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/configuration/KafkaProducerProperties.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/config/KafkaProducerProperties.kt index 12368645..25dd24e8 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/configuration/KafkaProducerProperties.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/config/KafkaProducerProperties.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.kafka.configuration +package org.gxf.crestdeviceservice.config import org.springframework.boot.context.properties.ConfigurationProperties diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/IncomingDeviceCredentialsService.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/consumer/IncomingDeviceCredentialsConsumer.kt similarity index 87% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/IncomingDeviceCredentialsService.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/consumer/IncomingDeviceCredentialsConsumer.kt index 410bd793..f275a1d8 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/IncomingDeviceCredentialsService.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/consumer/IncomingDeviceCredentialsConsumer.kt @@ -1,15 +1,17 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.consumer import com.alliander.sng.DeviceCredentials import io.github.oshai.kotlinlogging.KotlinLogging +import org.gxf.crestdeviceservice.psk.service.PskDecryptionService +import org.gxf.crestdeviceservice.psk.service.PskService import org.springframework.kafka.annotation.KafkaListener import org.springframework.stereotype.Service @Service -class IncomingDeviceCredentialsService( +class IncomingDeviceCredentialsConsumer( private val pskService: PskService, private val pskDecryptionService: PskDecryptionService ) { diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/MessageController.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/controller/MessageController.kt similarity index 83% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/coap/MessageController.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/controller/MessageController.kt index 12acae5f..571329f8 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/MessageController.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/controller/MessageController.kt @@ -1,10 +1,13 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap +package org.gxf.crestdeviceservice.controller import com.fasterxml.jackson.databind.JsonNode import io.github.oshai.kotlinlogging.KotlinLogging +import org.gxf.crestdeviceservice.service.DownlinkService +import org.gxf.crestdeviceservice.service.MessageProducerService +import org.gxf.crestdeviceservice.service.UrcService import org.springframework.http.ResponseEntity import org.springframework.lang.NonNull import org.springframework.web.bind.annotation.* @@ -12,7 +15,7 @@ import org.springframework.web.bind.annotation.* @RestController @RequestMapping("/sng") class MessageController( - private val messageService: MessageService, + private val messageProducerService: MessageProducerService, private val downlinkService: DownlinkService, private val urcService: UrcService ) { @@ -32,7 +35,7 @@ class MessageController( ): ResponseEntity { logger.debug { "Processing message $body" } - messageService.handleMessage(body) + messageProducerService.produceMessage(body) logger.debug { "Processed message" } synchronized(lock(identity)) { diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/remotelogging/ProxyErrorsController.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/controller/ProxyErrorsController.kt similarity index 93% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/remotelogging/ProxyErrorsController.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/controller/ProxyErrorsController.kt index ab70af87..49995e1f 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/remotelogging/ProxyErrorsController.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/controller/ProxyErrorsController.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.remotelogging +package org.gxf.crestdeviceservice.controller import io.github.oshai.kotlinlogging.KotlinLogging import org.springframework.lang.NonNull diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskController.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/controller/PskController.kt similarity index 87% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskController.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/controller/PskController.kt index eceec44f..e28832c2 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskController.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/controller/PskController.kt @@ -1,10 +1,11 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.controller import io.github.oshai.kotlinlogging.KotlinLogging -import org.gxf.crestdeviceservice.metrics.MetricService +import org.gxf.crestdeviceservice.psk.service.PskService +import org.gxf.crestdeviceservice.service.MetricService import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestHeader diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/PskErrorUrc.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/model/PskErrorUrc.kt similarity index 94% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/coap/PskErrorUrc.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/model/PskErrorUrc.kt index 2d7c2495..d63a61fc 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/PskErrorUrc.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/model/PskErrorUrc.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap +package org.gxf.crestdeviceservice.model enum class PskErrorUrc(val code: String, val message: String) { PSK_EQER("PSK:EQER", "Set PSK does not equal earlier PSK"), diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/DownlinkService.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/DownlinkService.kt similarity index 71% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/coap/DownlinkService.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/service/DownlinkService.kt index 72d09376..34937fbb 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/DownlinkService.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/DownlinkService.kt @@ -1,13 +1,15 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap +package org.gxf.crestdeviceservice.service import com.fasterxml.jackson.databind.JsonNode import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.transaction.Transactional -import org.gxf.crestdeviceservice.psk.PskService +import org.apache.commons.codec.digest.DigestUtils +import org.gxf.crestdeviceservice.psk.entity.PreSharedKey import org.gxf.crestdeviceservice.psk.exception.NoExistingPskException +import org.gxf.crestdeviceservice.psk.service.PskService import org.springframework.stereotype.Service @Service @@ -32,9 +34,15 @@ class DownlinkService(private val pskService: PskService) { logger.debug { "Create PSK set command for key for device ${newKey.identity} with revision ${newKey.revision} and status ${newKey.status}" } - return PskCommandCreator.createPskSetCommand(newKey) + return createPskSetCommand(newKey) } return RESPONSE_SUCCESS } + + fun createPskSetCommand(newPreSharedKey: PreSharedKey): String { + val newKey = newPreSharedKey.preSharedKey + val hash = DigestUtils.sha256Hex("${newPreSharedKey.secret}${newKey}") + return "!PSK:${newKey}:${hash};PSK:${newKey}:${hash}:SET" + } } diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/MessageProducer.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/MessageProducerService.kt similarity index 87% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/MessageProducer.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/service/MessageProducerService.kt index 00d84307..4393a8b4 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/kafka/MessageProducer.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/MessageProducerService.kt @@ -1,19 +1,19 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.kafka +package org.gxf.crestdeviceservice.service import com.fasterxml.jackson.databind.JsonNode import io.github.oshai.kotlinlogging.KotlinLogging import java.time.Instant import org.apache.avro.specific.SpecificRecordBase -import org.gxf.crestdeviceservice.kafka.configuration.KafkaProducerProperties +import org.gxf.crestdeviceservice.config.KafkaProducerProperties import org.gxf.sng.avro.DeviceMessage import org.springframework.kafka.core.KafkaTemplate import org.springframework.stereotype.Service @Service -class MessageProducer( +class MessageProducerService( private val kafkaTemplate: KafkaTemplate, private val kafkaProducerProperties: KafkaProducerProperties ) { diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/metrics/MetricService.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/MetricService.kt similarity index 94% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/metrics/MetricService.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/service/MetricService.kt index 4ad9098c..2f3272a4 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/metrics/MetricService.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/MetricService.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.metrics +package org.gxf.crestdeviceservice.service import io.micrometer.core.instrument.Counter import io.micrometer.core.instrument.MeterRegistry diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/UrcService.kt b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/UrcService.kt similarity index 94% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/coap/UrcService.kt rename to application/src/main/kotlin/org/gxf/crestdeviceservice/service/UrcService.kt index 648e67ba..bbdd571c 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/coap/UrcService.kt +++ b/application/src/main/kotlin/org/gxf/crestdeviceservice/service/UrcService.kt @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap +package org.gxf.crestdeviceservice.service import com.fasterxml.jackson.databind.JsonNode import io.github.oshai.kotlinlogging.KotlinLogging -import org.gxf.crestdeviceservice.psk.PskService +import org.gxf.crestdeviceservice.model.PskErrorUrc import org.gxf.crestdeviceservice.psk.exception.NoExistingPskException +import org.gxf.crestdeviceservice.psk.service.PskService import org.springframework.stereotype.Service @Service diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/MessageServiceTest.kt b/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/MessageServiceTest.kt deleted file mode 100644 index 9ed3a063..00000000 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/MessageServiceTest.kt +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-FileCopyrightText: Contributors to the GXF project -// -// SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap - -import com.fasterxml.jackson.databind.ObjectMapper -import org.gxf.crestdeviceservice.kafka.MessageProducer -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.mockito.InjectMocks -import org.mockito.Mock -import org.mockito.Mockito.verify -import org.mockito.junit.jupiter.MockitoExtension - -@ExtendWith(MockitoExtension::class) -class MessageServiceTest { - @Mock private lateinit var mock: MessageProducer - - @InjectMocks private lateinit var messageService: MessageService - - @Test - fun shouldCallMessageProducerWithCorrectParams() { - val jsonNode = ObjectMapper().readTree("{}") - messageService.handleMessage(jsonNode) - verify(mock).produceMessage(jsonNode) - } -} diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/PskCommandCreatorTest.kt b/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/PskCommandCreatorTest.kt deleted file mode 100644 index b78a0b23..00000000 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/PskCommandCreatorTest.kt +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-FileCopyrightText: Contributors to the GXF project -// -// SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap - -import java.time.Instant -import org.assertj.core.api.Assertions -import org.gxf.crestdeviceservice.psk.entity.PreSharedKey -import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus -import org.junit.jupiter.params.ParameterizedTest -import org.junit.jupiter.params.provider.CsvSource - -class PskCommandCreatorTest { - - @ParameterizedTest - @CsvSource( - "1234567890123456,ce2eca02d7ce354830eae7dd3b140755334f9c00582a53044655adde22126071,secret", - "1234567890123456,78383f73855e7595f8d31ee7cabdf854bc4e70d036f225f8d144d566083c7d01,different-secret", - "6543210987654321,5e15cf0f8a55b58a54f51dda17c1d1645ebc145f912888ec2e02a55d7b7baea4,secret", - "6543210987654321,64904d94590a354cecd8e65630289bcc22103c07b08c009b0b12a8ef0d58af9d,different-secret") - fun shouldCreateACorrectPskCommandoWithHash( - key: String, - expectedHash: String, - usedSecret: String - ) { - val preSharedKey = - PreSharedKey("identity", 0, Instant.now(), key, usedSecret, PreSharedKeyStatus.PENDING) - - val result = PskCommandCreator.createPskSetCommand(preSharedKey) - - // Psk command is formatted as: PSK:[Key]:[Hash];PSK:[Key]:[Hash]:SET - Assertions.assertThat(result) - .isEqualTo("!PSK:${key}:${expectedHash};PSK:${key}:${expectedHash}:SET") - } -} diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/IncomingDeviceCredentialsServiceTest.kt b/application/src/test/kotlin/org/gxf/crestdeviceservice/consumer/IncomingDeviceCredentialsConsumerTest.kt similarity index 72% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/psk/IncomingDeviceCredentialsServiceTest.kt rename to application/src/test/kotlin/org/gxf/crestdeviceservice/consumer/IncomingDeviceCredentialsConsumerTest.kt index 7b64c5fe..8c6961b3 100644 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/IncomingDeviceCredentialsServiceTest.kt +++ b/application/src/test/kotlin/org/gxf/crestdeviceservice/consumer/IncomingDeviceCredentialsConsumerTest.kt @@ -1,19 +1,21 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.consumer import com.alliander.sng.DeviceCredentials +import org.gxf.crestdeviceservice.psk.service.PskDecryptionService +import org.gxf.crestdeviceservice.psk.service.PskService import org.junit.jupiter.api.Test import org.mockito.kotlin.mock import org.mockito.kotlin.verify import org.mockito.kotlin.whenever -class IncomingDeviceCredentialsServiceTest { +class IncomingDeviceCredentialsConsumerTest { private val pskService = mock() private val pskDecryptionService = mock() - private val incomingDeviceCredentialsService = - IncomingDeviceCredentialsService(pskService, pskDecryptionService) + private val incomingDeviceCredentialsConsumer = + IncomingDeviceCredentialsConsumer(pskService, pskDecryptionService) @Test fun handleIncomingDeviceCredentials() { @@ -29,7 +31,7 @@ class IncomingDeviceCredentialsServiceTest { whenever(pskDecryptionService.decryptSecret(secret, keyRef)).thenReturn(decryptedSecret) whenever(pskService.changeInitialPsk()).thenReturn(true) - incomingDeviceCredentialsService.handleIncomingDeviceCredentials(deviceCredentials) + incomingDeviceCredentialsConsumer.handleIncomingDeviceCredentials(deviceCredentials) verify(pskService).setInitialKeyForIdentity(imei, decryptedPsk, decryptedSecret) verify(pskService).generateNewReadyKeyForIdentity(imei) diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/DeviceCredentialsControllerTest.kt b/application/src/test/kotlin/org/gxf/crestdeviceservice/controller/DeviceCredentialsControllerTest.kt similarity index 89% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/DeviceCredentialsControllerTest.kt rename to application/src/test/kotlin/org/gxf/crestdeviceservice/controller/DeviceCredentialsControllerTest.kt index fd8bac6d..d9a9a9eb 100644 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/DeviceCredentialsControllerTest.kt +++ b/application/src/test/kotlin/org/gxf/crestdeviceservice/controller/DeviceCredentialsControllerTest.kt @@ -1,11 +1,10 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice +package org.gxf.crestdeviceservice.controller -import org.gxf.crestdeviceservice.metrics.MetricService -import org.gxf.crestdeviceservice.psk.PskController -import org.gxf.crestdeviceservice.psk.PskService +import org.gxf.crestdeviceservice.psk.service.PskService +import org.gxf.crestdeviceservice.service.MetricService import org.junit.jupiter.api.Test import org.mockito.kotlin.whenever import org.springframework.beans.factory.annotation.Autowired diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/DownlinkServiceTest.kt b/application/src/test/kotlin/org/gxf/crestdeviceservice/service/DownlinkServiceTest.kt similarity index 60% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/coap/DownlinkServiceTest.kt rename to application/src/test/kotlin/org/gxf/crestdeviceservice/service/DownlinkServiceTest.kt index e8804bde..5df14826 100644 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/DownlinkServiceTest.kt +++ b/application/src/test/kotlin/org/gxf/crestdeviceservice/service/DownlinkServiceTest.kt @@ -1,15 +1,17 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap +package org.gxf.crestdeviceservice.service import java.time.Instant import org.assertj.core.api.Assertions.assertThat import org.gxf.crestdeviceservice.TestHelper -import org.gxf.crestdeviceservice.psk.PskService import org.gxf.crestdeviceservice.psk.entity.PreSharedKey import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus +import org.gxf.crestdeviceservice.psk.service.PskService import org.junit.jupiter.api.Test +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.CsvSource import org.mockito.kotlin.mock import org.mockito.kotlin.whenever @@ -48,4 +50,24 @@ class DownlinkServiceTest { assertThat(result).isEqualTo("0") } + + @ParameterizedTest + @CsvSource( + "1234567890123456,ce2eca02d7ce354830eae7dd3b140755334f9c00582a53044655adde22126071,secret", + "1234567890123456,78383f73855e7595f8d31ee7cabdf854bc4e70d036f225f8d144d566083c7d01,different-secret", + "6543210987654321,5e15cf0f8a55b58a54f51dda17c1d1645ebc145f912888ec2e02a55d7b7baea4,secret", + "6543210987654321,64904d94590a354cecd8e65630289bcc22103c07b08c009b0b12a8ef0d58af9d,different-secret") + fun shouldCreateACorrectPskCommandoWithHash( + key: String, + expectedHash: String, + usedSecret: String + ) { + val preSharedKey = + PreSharedKey("identity", 0, Instant.now(), key, usedSecret, PreSharedKeyStatus.PENDING) + + val result = downLinkService.createPskSetCommand(preSharedKey) + + // Psk command is formatted as: PSK:[Key]:[Hash];PSK:[Key]:[Hash]:SET + assertThat(result).isEqualTo("!PSK:${key}:${expectedHash};PSK:${key}:${expectedHash}:SET") + } } diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/kafka/MessageProducerTest.kt b/application/src/test/kotlin/org/gxf/crestdeviceservice/service/MessageProducerServiceTest.kt similarity index 79% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/kafka/MessageProducerTest.kt rename to application/src/test/kotlin/org/gxf/crestdeviceservice/service/MessageProducerServiceTest.kt index 4097ab95..cb17ad79 100644 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/kafka/MessageProducerTest.kt +++ b/application/src/test/kotlin/org/gxf/crestdeviceservice/service/MessageProducerServiceTest.kt @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.kafka +package org.gxf.crestdeviceservice.service import com.fasterxml.jackson.databind.ObjectMapper import org.apache.avro.specific.SpecificRecordBase import org.assertj.core.api.Assertions.assertThat -import org.gxf.crestdeviceservice.kafka.configuration.KafkaProducerProperties +import org.gxf.crestdeviceservice.config.KafkaProducerProperties import org.gxf.sng.avro.DeviceMessage import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -17,7 +17,7 @@ import org.mockito.kotlin.check import org.springframework.kafka.core.KafkaTemplate @ExtendWith(MockitoExtension::class) -class MessageProducerTest { +class MessageProducerServiceTest { @Mock private lateinit var mockedKafkaTemplate: KafkaTemplate @@ -25,7 +25,8 @@ class MessageProducerTest { @Test fun shouldCallMessageProducerWithCorrectParams() { - val messageProducer = MessageProducer(mockedKafkaTemplate, kafkaProducerProperties) + val messageProducerService = + MessageProducerService(mockedKafkaTemplate, kafkaProducerProperties) val jsonNode = ObjectMapper() @@ -34,7 +35,7 @@ class MessageProducerTest { "ID":12345 } """) - messageProducer.produceMessage(jsonNode) + messageProducerService.produceMessage(jsonNode) verify(mockedKafkaTemplate) .send( check { assertThat(it).isEqualTo("topic") }, diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/UrcServiceTest.kt b/application/src/test/kotlin/org/gxf/crestdeviceservice/service/UrcServiceTest.kt similarity index 97% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/coap/UrcServiceTest.kt rename to application/src/test/kotlin/org/gxf/crestdeviceservice/service/UrcServiceTest.kt index 12ee9ba3..65790e29 100644 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/coap/UrcServiceTest.kt +++ b/application/src/test/kotlin/org/gxf/crestdeviceservice/service/UrcServiceTest.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.coap +package org.gxf.crestdeviceservice.service import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.ObjectMapper @@ -12,7 +12,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode import com.fasterxml.jackson.databind.node.TextNode import java.util.stream.Stream import org.gxf.crestdeviceservice.TestHelper -import org.gxf.crestdeviceservice.psk.PskService +import org.gxf.crestdeviceservice.psk.service.PskService import org.junit.jupiter.api.Test import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.MethodSource diff --git a/components/psk/build.gradle.kts b/components/psk/build.gradle.kts new file mode 100644 index 00000000..eb780b0b --- /dev/null +++ b/components/psk/build.gradle.kts @@ -0,0 +1,11 @@ +dependencies { + implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation("org.springframework.security:spring-security-core") + + implementation(libs.logging) + + testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation(libs.mockitoKotlin) + + testRuntimeOnly("org.junit.platform:junit-platform-launcher") +} diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskConfiguration.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/PskConfiguration.kt similarity index 84% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskConfiguration.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/PskConfiguration.kt index d67d3d22..dce6ee8b 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskConfiguration.kt +++ b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/PskConfiguration.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.psk.configuration import org.springframework.boot.context.properties.ConfigurationProperties diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/PskDecryptionConfiguration.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/PskDecryptionConfiguration.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/PskDecryptionConfiguration.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/PskDecryptionConfiguration.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/RSAPrivateKeyConverter.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/RSAPrivateKeyConverter.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/RSAPrivateKeyConverter.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/configuration/RSAPrivateKeyConverter.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKey.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKey.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKey.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKey.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyCompositeKey.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyCompositeKey.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyCompositeKey.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyCompositeKey.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyStatus.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyStatus.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyStatus.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PreSharedKeyStatus.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptor.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptor.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptor.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptor.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/InitialKeySetException.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/InitialKeySetException.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/InitialKeySetException.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/InitialKeySetException.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/NoExistingPskException.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/NoExistingPskException.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/NoExistingPskException.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/NoExistingPskException.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/UnknownKeyRefException.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/UnknownKeyRefException.kt similarity index 100% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/UnknownKeyRefException.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/exception/UnknownKeyRefException.kt diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PskRepository.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/repository/PskRepository.kt similarity index 74% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PskRepository.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/repository/PskRepository.kt index dfafacc4..5d9e6e9e 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/entity/PskRepository.kt +++ b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/repository/PskRepository.kt @@ -1,8 +1,11 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk.entity +package org.gxf.crestdeviceservice.psk.repository +import org.gxf.crestdeviceservice.psk.entity.PreSharedKey +import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyCompositeKey +import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus import org.springframework.data.repository.CrudRepository import org.springframework.stereotype.Repository diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskDecryptionService.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/service/PskDecryptionService.kt similarity index 95% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskDecryptionService.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/service/PskDecryptionService.kt index 6ff397c9..6a68e4eb 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskDecryptionService.kt +++ b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/service/PskDecryptionService.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.psk.service import java.util.* import javax.crypto.Cipher diff --git a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskService.kt b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/service/PskService.kt similarity index 96% rename from application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskService.kt rename to components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/service/PskService.kt index 2ebd6068..cf7e11de 100644 --- a/application/src/main/kotlin/org/gxf/crestdeviceservice/psk/PskService.kt +++ b/components/psk/src/main/kotlin/org/gxf/crestdeviceservice/psk/service/PskService.kt @@ -1,16 +1,17 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.psk.service import io.github.oshai.kotlinlogging.KotlinLogging import java.security.SecureRandom import java.time.Instant +import org.gxf.crestdeviceservice.psk.configuration.PskConfiguration import org.gxf.crestdeviceservice.psk.entity.PreSharedKey import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus -import org.gxf.crestdeviceservice.psk.entity.PskRepository import org.gxf.crestdeviceservice.psk.exception.InitialKeySetException import org.gxf.crestdeviceservice.psk.exception.NoExistingPskException +import org.gxf.crestdeviceservice.psk.repository.PskRepository import org.springframework.stereotype.Service @Service diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PSKKeyGenerator.kt b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/PSKKeyGenerator.kt similarity index 100% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PSKKeyGenerator.kt rename to components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/PSKKeyGenerator.kt diff --git a/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/PSKTestHelper.kt b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/PSKTestHelper.kt new file mode 100644 index 00000000..3faeab6e --- /dev/null +++ b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/PSKTestHelper.kt @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: Contributors to the GXF project +// +// SPDX-License-Identifier: Apache-2.0 +package org.gxf.crestdeviceservice.psk + +import java.time.Instant +import org.gxf.crestdeviceservice.psk.entity.PreSharedKey +import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus + +object PSKTestHelper { + + fun preSharedKeyReady() = preSharedKeyWithStatus(PreSharedKeyStatus.READY) + + fun preSharedKeyActive() = preSharedKeyWithStatus(PreSharedKeyStatus.ACTIVE) + + fun preSharedKeyPending() = preSharedKeyWithStatus(PreSharedKeyStatus.PENDING) + + private fun preSharedKeyWithStatus(status: PreSharedKeyStatus) = + PreSharedKey("identity", 1, Instant.now(), "key", "secret", status) +} diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptorTest.kt b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptorTest.kt similarity index 100% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptorTest.kt rename to components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/entity/convertors/DatabaseFieldEncryptorTest.kt diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PskDecryptionServiceTest.kt b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/service/PskDecryptionServiceTest.kt similarity index 98% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PskDecryptionServiceTest.kt rename to components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/service/PskDecryptionServiceTest.kt index dfd4b54c..f0e143dc 100644 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PskDecryptionServiceTest.kt +++ b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/service/PskDecryptionServiceTest.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.psk.service import java.security.KeyPair import java.security.KeyPairGenerator diff --git a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PskServiceTest.kt b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/service/PskServiceTest.kt similarity index 89% rename from application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PskServiceTest.kt rename to components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/service/PskServiceTest.kt index 3bc74632..7a134724 100644 --- a/application/src/test/kotlin/org/gxf/crestdeviceservice/psk/PskServiceTest.kt +++ b/components/psk/src/test/kotlin/org/gxf/crestdeviceservice/psk/service/PskServiceTest.kt @@ -1,13 +1,14 @@ // SPDX-FileCopyrightText: Contributors to the GXF project // // SPDX-License-Identifier: Apache-2.0 -package org.gxf.crestdeviceservice.psk +package org.gxf.crestdeviceservice.psk.service import org.assertj.core.api.Assertions.assertThat -import org.gxf.crestdeviceservice.TestHelper +import org.gxf.crestdeviceservice.psk.PSKTestHelper +import org.gxf.crestdeviceservice.psk.configuration.PskConfiguration import org.gxf.crestdeviceservice.psk.entity.PreSharedKey import org.gxf.crestdeviceservice.psk.entity.PreSharedKeyStatus -import org.gxf.crestdeviceservice.psk.entity.PskRepository +import org.gxf.crestdeviceservice.psk.repository.PskRepository import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.mockito.ArgumentCaptor @@ -34,7 +35,7 @@ class PskServiceTest { @Test fun getCurrentActiveKey() { val identity = "identity" - val psk = TestHelper.preSharedKeyActive() + val psk = PSKTestHelper.preSharedKeyActive() whenever( pskRepository.findFirstByIdentityAndStatusOrderByRevisionDesc( identity, PreSharedKeyStatus.ACTIVE)) @@ -48,7 +49,7 @@ class PskServiceTest { @Test fun pendingKeyPresentTrue() { val identity = "identity" - val psk = TestHelper.preSharedKeyPending() + val psk = PSKTestHelper.preSharedKeyPending() whenever( pskRepository.findFirstByIdentityAndStatusOrderByRevisionDesc( identity, PreSharedKeyStatus.PENDING)) @@ -74,7 +75,7 @@ class PskServiceTest { @Test fun setPendingKeyAsInvalid() { - val psk = TestHelper.preSharedKeyPending() + val psk = PSKTestHelper.preSharedKeyPending() val identity = psk.identity whenever( pskRepository.findFirstByIdentityAndStatusOrderByRevisionDesc( @@ -89,7 +90,7 @@ class PskServiceTest { @Test fun saveReadyKeyForIdentityAsPending() { - val psk = TestHelper.preSharedKeyReady() + val psk = PSKTestHelper.preSharedKeyReady() val identity = psk.identity val status = psk.status @@ -106,7 +107,7 @@ class PskServiceTest { @Test fun needsKeyChangeReturnsTrueWhenChangeInitialPskIsTrueAndReadyKeyIsPresent() { - val psk = TestHelper.preSharedKeyReady() + val psk = PSKTestHelper.preSharedKeyReady() val identity = psk.identity whenever( pskRepository.findFirstByIdentityAndStatusOrderByRevisionDesc( @@ -145,8 +146,8 @@ class PskServiceTest { @Test fun changeActiveKey() { val identity = "identity" - val currentPsk = TestHelper.preSharedKeyActive() - val newPsk = TestHelper.preSharedKeyPending() + val currentPsk = PSKTestHelper.preSharedKeyActive() + val newPsk = PSKTestHelper.preSharedKeyPending() whenever( pskRepository.findFirstByIdentityAndStatusOrderByRevisionDesc( diff --git a/settings.gradle.kts b/settings.gradle.kts index c61c39c3..6d467351 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,6 +5,7 @@ rootProject.name = "sng-crest-device-service" include("application") +include("components:psk") dependencyResolutionManagement { versionCatalogs {