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 56ae463f42b412c1ecd713da75d110372d7f5af1..2cc1888f45eae6a8c18919933d9cc6d8a0693d27 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 262400c53e2fd6028e7f678bcc50c370ed39c0e1..316c11b7ad3bcdee0b07a3ccce22de372eaa96db 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 e2519b47487eb8da44d7f968e1dc1ae3860f2511..469d3490a8d340e849eedb0d1cd5809279a5975a 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 0000000000000000000000000000000000000000..578e221bdbc960dc4dda6045bb810e8d50c39a0c --- /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()) + } +}