From 5f5230ce5a7099d5efec7ca819fe68f06d2d60b6 Mon Sep 17 00:00:00 2001 From: Jan-Niclas Struewer <j.n.struewer@gmail.com> Date: Mon, 29 Jul 2024 11:35:01 +0200 Subject: [PATCH] refactor: - applied new package structure to kpiCalculator adapter (inserted kpiCalculator module) - removed hardcoded dispatcher in ToolRunService.kt --- .../iem/app/toolRun/service/ToolRunService.kt | 7 +-- .../{ => kpiCalculator}/adapter/KpiAdapter.kt | 2 +- .../adapter/cve/CveAdapter.kt | 6 +-- .../adapter/cve/CveAdapterTest.kt | 49 +++++++++++++++++++ 4 files changed, 57 insertions(+), 7 deletions(-) rename kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/{ => kpiCalculator}/adapter/KpiAdapter.kt (88%) rename kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/{ => kpiCalculator}/adapter/cve/CveAdapter.kt (84%) create mode 100644 kpi-calculator/adapter/src/test/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapterTest.kt diff --git a/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt b/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt index 56ae463f..2cc1888f 100644 --- a/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt +++ b/app/backend/src/main/kotlin/de/fraunhofer/iem/app/toolRun/service/ToolRunService.kt @@ -1,6 +1,5 @@ package de.fraunhofer.iem.app.toolRun.service -import de.fraunhofer.iem.adapter.cve.CveAdapter import de.fraunhofer.iem.app.kpi.service.KPIService import de.fraunhofer.iem.app.logger.getLogger import de.fraunhofer.iem.app.repository.service.RepositoryService @@ -9,6 +8,7 @@ import de.fraunhofer.iem.app.toolRun.dto.ToolRunDto import de.fraunhofer.iem.app.tools.gitlab.service.RepositoryDetailsService import de.fraunhofer.iem.app.tools.occmd.service.OccmdService import de.fraunhofer.iem.app.tools.ort.service.OrtService +import de.fraunhofer.iem.kpiCalculator.adapter.cve.CveAdapter import kotlinx.coroutines.* import org.springframework.stereotype.Service @@ -120,10 +120,11 @@ class ToolRunService( */ suspend fun getToolRunForRepository( projectId: Long, - includeFindings: Boolean = false + includeFindings: Boolean = false, + dispatcher: CoroutineDispatcher = Dispatchers.IO ): ToolRunDto? { - val toolRun = withContext(Dispatchers.IO) { + val toolRun = withContext(dispatcher) { repositoryService.getToolRunByProjectId(projectId = projectId) } diff --git a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/KpiAdapter.kt b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/KpiAdapter.kt similarity index 88% rename from kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/KpiAdapter.kt rename to kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/KpiAdapter.kt index 262400c5..316c11b7 100644 --- a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/KpiAdapter.kt +++ b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/KpiAdapter.kt @@ -1,4 +1,4 @@ -package de.fraunhofer.iem.adapter +package de.fraunhofer.iem.kpiCalculator.adapter import de.fraunhofer.iem.kpiCalculator.model.kpi.KpiKind import de.fraunhofer.iem.kpiCalculator.model.kpi.RawValueKpiCreateDto diff --git a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/cve/CveAdapter.kt b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapter.kt similarity index 84% rename from kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/cve/CveAdapter.kt rename to kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapter.kt index e2519b47..469d3490 100644 --- a/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/adapter/cve/CveAdapter.kt +++ b/kpi-calculator/adapter/src/main/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapter.kt @@ -1,6 +1,6 @@ -package de.fraunhofer.iem.adapter.cve +package de.fraunhofer.iem.kpiCalculator.adapter.cve -import de.fraunhofer.iem.adapter.KpiAdapter +import de.fraunhofer.iem.kpiCalculator.adapter.KpiAdapter import de.fraunhofer.iem.kpiCalculator.model.adapter.VulnerabilityDto import de.fraunhofer.iem.kpiCalculator.model.kpi.KpiKind import de.fraunhofer.iem.kpiCalculator.model.kpi.RawValueKpiCreateDto @@ -11,7 +11,7 @@ object CveAdapter : KpiAdapter<VulnerabilityDto> { override fun transformDataToKpi(data: List<VulnerabilityDto>): List<RawValueKpiCreateDto> { return data - .filter(::filterData) + .filter(CveAdapter::filterData) .map { RawValueKpiCreateDto( kind = kpiKind, diff --git a/kpi-calculator/adapter/src/test/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapterTest.kt b/kpi-calculator/adapter/src/test/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapterTest.kt new file mode 100644 index 00000000..578e221b --- /dev/null +++ b/kpi-calculator/adapter/src/test/kotlin/de/fraunhofer/iem/kpiCalculator/adapter/cve/CveAdapterTest.kt @@ -0,0 +1,49 @@ +package de.fraunhofer.iem.kpiCalculator.adapter.cve + +import de.fraunhofer.iem.kpiCalculator.model.adapter.VulnerabilityDto +import org.junit.jupiter.api.Test + +class CveAdapterTest { + + @Test + fun transformSingleVulnerabilityToKpi() { + val adapter = CveAdapter + // valid input + val validKpi = adapter.transformDataToKpi( + VulnerabilityDto( + cveIdentifier = "not blank", + packageName = "not blank", + severity = 0.1 + ) + ) + assert(validKpi.isNotEmpty()) + assert(validKpi.first().score in (0..100)) + + // invalid input + val invalidKpis = CveAdapter.transformDataToKpi( + listOf( + VulnerabilityDto( + cveIdentifier = "not blank", + packageName = "", + severity = 0.1 + ), + VulnerabilityDto( + cveIdentifier = "", + packageName = "not blank", + severity = 0.1 + ), + VulnerabilityDto( + cveIdentifier = "not blank", + packageName = "not blank", + severity = -0.1 + ), + VulnerabilityDto( + cveIdentifier = "not blank", + packageName = "not blank", + severity = 10.1 + ) + ) + ) + assert(invalidKpis.isEmpty()) + } +} -- GitLab