Skip to content

Commit

Permalink
Merge pull request OSGP#38 from OSGP/feature/FDP-2359
Browse files Browse the repository at this point in the history
FDP-2359: Implement new package structure
  • Loading branch information
jasperkamerling authored Jul 30, 2024
2 parents df6d055 + 08a6878 commit e9887ac
Show file tree
Hide file tree
Showing 44 changed files with 135 additions and 150 deletions.
2 changes: 2 additions & 0 deletions application/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
// 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.*

@RestController
@RequestMapping("/sng")
class MessageController(
private val messageService: MessageService,
private val messageProducerService: MessageProducerService,
private val downlinkService: DownlinkService,
private val urcService: UrcService
) {
Expand All @@ -32,7 +35,7 @@ class MessageController(
): ResponseEntity<String> {

logger.debug { "Processing message $body" }
messageService.handleMessage(body)
messageProducerService.produceMessage(body)
logger.debug { "Processed message" }

synchronized(lock(identity)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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"),
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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"
}
}
Original file line number Diff line number Diff line change
@@ -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<String, SpecificRecordBase>,
private val kafkaProducerProperties: KafkaProducerProperties
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<PskService>()
private val pskDecryptionService = mock<PskDecryptionService>()
private val incomingDeviceCredentialsService =
IncomingDeviceCredentialsService(pskService, pskDecryptionService)
private val incomingDeviceCredentialsConsumer =
IncomingDeviceCredentialsConsumer(pskService, pskDecryptionService)

@Test
fun handleIncomingDeviceCredentials() {
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Loading

0 comments on commit e9887ac

Please sign in to comment.