diff --git a/gradle/libraries.gradle b/gradle/libraries.gradle index 43424272e4..5d5bfd35b8 100644 --- a/gradle/libraries.gradle +++ b/gradle/libraries.gradle @@ -88,13 +88,16 @@ ext { cycloneDX_core: "8.0.0", cyclonedx_gradle_plugin: "1.7.4", - /* Prepare wrapper */ - jgit_core: "6.9.0.202403050737-r", - + /* Prepare wrapper */ + jgit_core: "6.9.0.202403050737-r", + + /* ArchUnit */ + arch_unit: "1.3.0", + /* encryption */ // https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on bouncy_castle_bcprov_jdk8: "1.78.1" - + ] library = [ @@ -192,9 +195,11 @@ ext { cycloneDX_core: "org.cyclonedx:cyclonedx-core-java:${libraryVersion.cycloneDX_core}", jgit_core: "org.eclipse.jgit:org.eclipse.jgit:${libraryVersion.jgit_core}", - + + arch_unit: "com.tngtech.archunit:archunit-junit5:${libraryVersion.arch_unit}", + bouncy_castle_bcprov_jdk8: "org.bouncycastle:bcprov-jdk18on:${libraryVersion.bouncy_castle_bcprov_jdk8}" - + ] diff --git a/gradle/projects.gradle b/gradle/projects.gradle index c2aa00a027..1f85b461d3 100644 --- a/gradle/projects.gradle +++ b/gradle/projects.gradle @@ -53,8 +53,11 @@ projectType = [ to have dependency injection and access to some other spring boot parts */ project(':sechub-wrapper-checkmarx'), project(':sechub-wrapper-prepare'), - + project(':sechub-wrapper-secret-validator'), + + /* archUnit */ + project(':sechub-archunit-test') ], /* adapter projects - have simple spring dependencies, but know only sechub-adapter as base */ @@ -129,6 +132,10 @@ projectType = [ project(':sechub-doc'), ], + archUnitProjects: [ + // will be filled automatically in code below + ], + noSpotless : [ project('sechub-examples:example-sechub-api-java'), project('sechub-openapi-java-client') @@ -153,3 +160,7 @@ projectType.javaProjects.addAll(projectType.springBootProjects) /* dynamically add all java projects as eclipse projects:*/ projectType.eclipseProjects.addAll(projectType.javaProjects) projectType.eclipseProjects.addAll(projectType.goProjects) + +/* archUnit */ +projectType.archUnitProjects.addAll(projectType.javaProjects) +projectType.archUnitProjects.remove(project(':sechub-archunit-test')) diff --git a/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/CheckmarxResilienceConsultant.java b/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/CheckmarxResilienceConsultant.java index 19a22a510f..0916609451 100644 --- a/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/CheckmarxResilienceConsultant.java +++ b/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/CheckmarxResilienceConsultant.java @@ -57,7 +57,7 @@ public ResilienceProposal consultFor(ResilienceContext context) { if (rootCause instanceof HttpClientErrorException) { HttpClientErrorException hce = (HttpClientErrorException) rootCause; - int statusCode = hce.getRawStatusCode(); + int statusCode = hce.getStatusCode().value(); if (statusCode == 400) { /* * BAD request - this can happen for same project scans put to queue because diff --git a/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/support/CheckmarxProjectSupport.java b/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/support/CheckmarxProjectSupport.java index ba6fa724d4..f18ab4128b 100644 --- a/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/support/CheckmarxProjectSupport.java +++ b/sechub-adapter-checkmarx/src/main/java/com/mercedesbenz/sechub/adapter/checkmarx/support/CheckmarxProjectSupport.java @@ -52,7 +52,7 @@ public void ensureProjectExists(CheckmarxContext context) throws AdapterExceptio context.setNewProject(false); return; } catch (HttpStatusCodeException e) { - if (e.getRawStatusCode() != 404) { + if (e.getStatusCode().value() != 404) { /* only 404 - not found is accepted */ throw context.asAdapterException( CheckmarxAdapter.CHECKMARX_MESSAGE_PREFIX + "HTTP status=" + e.getStatusCode() + " (expected was only 404 for non existing project)", diff --git a/sechub-scan-product-checkmarx/src/test/java/com/mercedesbenz/sechub/domain/scan/product/checkmarx/CheckmarxResilienceCallbackTest.java b/sechub-adapter-checkmarx/src/test/java/com/mercedesbenz/sechub/adapter/checkmarx/CheckmarxResilienceCallbackTest.java similarity index 91% rename from sechub-scan-product-checkmarx/src/test/java/com/mercedesbenz/sechub/domain/scan/product/checkmarx/CheckmarxResilienceCallbackTest.java rename to sechub-adapter-checkmarx/src/test/java/com/mercedesbenz/sechub/adapter/checkmarx/CheckmarxResilienceCallbackTest.java index 937100b541..f7df33e5ee 100644 --- a/sechub-scan-product-checkmarx/src/test/java/com/mercedesbenz/sechub/domain/scan/product/checkmarx/CheckmarxResilienceCallbackTest.java +++ b/sechub-adapter-checkmarx/src/test/java/com/mercedesbenz/sechub/adapter/checkmarx/CheckmarxResilienceCallbackTest.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.domain.scan.product.checkmarx; +package com.mercedesbenz.sechub.adapter.checkmarx; import static org.junit.Assert.*; import static org.mockito.ArgumentMatchers.*; @@ -10,9 +10,6 @@ import com.mercedesbenz.sechub.adapter.AdapterMetaData; import com.mercedesbenz.sechub.adapter.AdapterMetaDataCallback; -import com.mercedesbenz.sechub.adapter.checkmarx.CheckmarxMetaDataID; -import com.mercedesbenz.sechub.adapter.checkmarx.CheckmarxResilienceCallback; -import com.mercedesbenz.sechub.adapter.checkmarx.CheckmarxResilienceConsultant; import com.mercedesbenz.sechub.commons.core.resilience.ResilienceContext; public class CheckmarxResilienceCallbackTest { diff --git a/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/APIURLSupportTest.java b/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/support/APIURLSupportTest.java similarity index 95% rename from sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/APIURLSupportTest.java rename to sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/support/APIURLSupportTest.java index 1121a82ecb..cbc22e11e5 100644 --- a/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/APIURLSupportTest.java +++ b/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/support/APIURLSupportTest.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.adapter; +package com.mercedesbenz.sechub.adapter.support; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @@ -10,7 +10,7 @@ import org.junit.Before; import org.junit.Test; -import com.mercedesbenz.sechub.adapter.support.APIURLSupport; +import com.mercedesbenz.sechub.adapter.AdapterConfig; public class APIURLSupportTest { private APIURLSupport supportToTest; diff --git a/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/JSONAdapterSupportTest.java b/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/support/JSONAdapterSupportTest.java similarity index 94% rename from sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/JSONAdapterSupportTest.java rename to sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/support/JSONAdapterSupportTest.java index fd800db8be..5a99d2b13b 100644 --- a/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/JSONAdapterSupportTest.java +++ b/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/support/JSONAdapterSupportTest.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.adapter; +package com.mercedesbenz.sechub.adapter.support; import static org.junit.Assert.*; import static org.mockito.ArgumentMatchers.*; @@ -17,7 +17,10 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.github.tomakehurst.wiremock.client.WireMock; import com.github.tomakehurst.wiremock.matching.StringValuePattern; -import com.mercedesbenz.sechub.adapter.support.JSONAdapterSupport; +import com.mercedesbenz.sechub.adapter.Adapter; +import com.mercedesbenz.sechub.adapter.AdapterException; +import com.mercedesbenz.sechub.adapter.AdapterLogId; +import com.mercedesbenz.sechub.adapter.TraceIdProvider; import com.mercedesbenz.sechub.test.junit4.ExpectedExceptionFactory; public class JSONAdapterSupportTest { diff --git a/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/APITokenGenerator.java b/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/APITokenGenerator.java index 59456d57cc..7d7fc2bb6e 100644 --- a/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/APITokenGenerator.java +++ b/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/APITokenGenerator.java @@ -4,9 +4,9 @@ import java.util.Base64; import java.util.UUID; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; -@Service +@Component public class APITokenGenerator { public String generateNewAPIToken() { diff --git a/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/OneTimeTokenGenerator.java b/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/OneTimeTokenGenerator.java index 217e1d02b4..d12901fa3b 100644 --- a/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/OneTimeTokenGenerator.java +++ b/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/OneTimeTokenGenerator.java @@ -4,9 +4,9 @@ import java.util.Base64; import java.util.UUID; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; -@Service +@Component public class OneTimeTokenGenerator { public String generateNewOneTimeToken() { diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/cli/SecHubAnalyzerApplication.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/cli/SecHubAnalyzerApplication.java index 7ff4aaa85d..7f3deca8b6 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/cli/SecHubAnalyzerApplication.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/cli/SecHubAnalyzerApplication.java @@ -12,8 +12,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.mercedesbenz.analyzer.model.AnalyzerResult; import com.mercedesbenz.sechub.analyzer.core.Analyzer; +import com.mercedesbenz.sechub.analyzer.model.AnalyzerResult; import ch.qos.logback.classic.Level; diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/Analyzer.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/Analyzer.java index 19291b768b..626a474423 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/Analyzer.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/Analyzer.java @@ -14,8 +14,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.mercedesbenz.analyzer.model.AnalyzerResult; -import com.mercedesbenz.analyzer.model.MarkerPair; +import com.mercedesbenz.sechub.analyzer.model.AnalyzerResult; +import com.mercedesbenz.sechub.analyzer.model.MarkerPair; /** * Main analyzer class which represents the entry point for callers. Starts diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/FileProcessor.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/FileProcessor.java index 590ceb40d1..85c27ec891 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/FileProcessor.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/core/FileProcessor.java @@ -9,9 +9,9 @@ import java.util.LinkedList; import java.util.List; -import com.mercedesbenz.analyzer.model.Marker; -import com.mercedesbenz.analyzer.model.MarkerPair; -import com.mercedesbenz.analyzer.model.MarkerType; +import com.mercedesbenz.sechub.analyzer.model.Marker; +import com.mercedesbenz.sechub.analyzer.model.MarkerPair; +import com.mercedesbenz.sechub.analyzer.model.MarkerType; /** * Searches through a file looking for SecHub markers diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/AnalyzerResult.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/AnalyzerResult.java similarity index 98% rename from sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/AnalyzerResult.java rename to sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/AnalyzerResult.java index fdfac6cc19..3ccb816598 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/AnalyzerResult.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/AnalyzerResult.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.analyzer.model; +package com.mercedesbenz.sechub.analyzer.model; import java.io.IOException; import java.util.HashMap; diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/DeepClonable.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/DeepClonable.java similarity index 66% rename from sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/DeepClonable.java rename to sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/DeepClonable.java index 3f117d25d9..4d89c559a7 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/DeepClonable.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/DeepClonable.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.analyzer.model; +package com.mercedesbenz.sechub.analyzer.model; public interface DeepClonable { public T deepClone(); diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/Marker.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/Marker.java similarity index 97% rename from sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/Marker.java rename to sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/Marker.java index e275143cc4..d9d45c542d 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/Marker.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/Marker.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.analyzer.model; +package com.mercedesbenz.sechub.analyzer.model; public class Marker implements DeepClonable { diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/MarkerPair.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/MarkerPair.java similarity index 97% rename from sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/MarkerPair.java rename to sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/MarkerPair.java index 53815c91c0..670d189c6b 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/MarkerPair.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/MarkerPair.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.analyzer.model; +package com.mercedesbenz.sechub.analyzer.model; /** * Represents always a pair of markers containing diff --git a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/MarkerType.java b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/MarkerType.java similarity index 62% rename from sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/MarkerType.java rename to sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/MarkerType.java index ec6f222649..69d48cbe44 100644 --- a/sechub-analyzer-cli/src/main/java/com/mercedesbenz/analyzer/model/MarkerType.java +++ b/sechub-analyzer-cli/src/main/java/com/mercedesbenz/sechub/analyzer/model/MarkerType.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.analyzer.model; +package com.mercedesbenz.sechub.analyzer.model; public enum MarkerType { diff --git a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/AnalyzerTest.java b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/AnalyzerTest.java index 9931acf6a3..b91920fed6 100644 --- a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/AnalyzerTest.java +++ b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/AnalyzerTest.java @@ -17,10 +17,10 @@ import org.junit.Before; import org.junit.Test; -import com.mercedesbenz.analyzer.model.AnalyzerResult; -import com.mercedesbenz.analyzer.model.Marker; -import com.mercedesbenz.analyzer.model.MarkerPair; -import com.mercedesbenz.analyzer.model.MarkerType; +import com.mercedesbenz.sechub.analyzer.model.AnalyzerResult; +import com.mercedesbenz.sechub.analyzer.model.Marker; +import com.mercedesbenz.sechub.analyzer.model.MarkerPair; +import com.mercedesbenz.sechub.analyzer.model.MarkerType; /** * Integration Tests diff --git a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/FileProcessorTest.java b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/FileProcessorTest.java index 920c413ec5..1a62fbdaf7 100644 --- a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/FileProcessorTest.java +++ b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/core/FileProcessorTest.java @@ -14,9 +14,9 @@ import org.junit.Before; import org.junit.Test; -import com.mercedesbenz.analyzer.model.Marker; -import com.mercedesbenz.analyzer.model.MarkerPair; -import com.mercedesbenz.analyzer.model.MarkerType; +import com.mercedesbenz.sechub.analyzer.model.Marker; +import com.mercedesbenz.sechub.analyzer.model.MarkerPair; +import com.mercedesbenz.sechub.analyzer.model.MarkerType; public class FileProcessorTest { diff --git a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/AnalyzerResultTest.java b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/AnalyzerResultTest.java index af2478706d..b677c7a502 100644 --- a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/AnalyzerResultTest.java +++ b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/AnalyzerResultTest.java @@ -11,11 +11,6 @@ import org.junit.Test; -import com.mercedesbenz.analyzer.model.AnalyzerResult; -import com.mercedesbenz.analyzer.model.Marker; -import com.mercedesbenz.analyzer.model.MarkerPair; -import com.mercedesbenz.analyzer.model.MarkerType; - public class AnalyzerResultTest { @Test diff --git a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerPairTest.java b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerPairTest.java index e92d7f7d21..db07d2a10e 100644 --- a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerPairTest.java +++ b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerPairTest.java @@ -6,10 +6,6 @@ import org.junit.Test; -import com.mercedesbenz.analyzer.model.Marker; -import com.mercedesbenz.analyzer.model.MarkerPair; -import com.mercedesbenz.analyzer.model.MarkerType; - public class MarkerPairTest { @Test public void test_deepClone() { diff --git a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerTest.java b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerTest.java index 14913e4611..c8cc7fd3c8 100644 --- a/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerTest.java +++ b/sechub-analyzer-cli/src/test/java/com/mercedesbenz/sechub/analyzer/model/MarkerTest.java @@ -6,9 +6,6 @@ import org.junit.Test; -import com.mercedesbenz.analyzer.model.Marker; -import com.mercedesbenz.analyzer.model.MarkerType; - public class MarkerTest { @Test public void test_deepClone() { diff --git a/sechub-archunit-test/build.gradle b/sechub-archunit-test/build.gradle new file mode 100644 index 0000000000..4b42b86c17 --- /dev/null +++ b/sechub-archunit-test/build.gradle @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +/*============================================================================ +* Build file for subproject +* +* Root build file: "${rootProject.projectDir}/build.gradle" +* ============================================================================ +*/ + +dependencies { + testImplementation library.springframework_web + + for (project in projectType.archUnitProjects) { + testImplementation project + } + + testImplementation spring_boot_dependency.junit_jupiter + testImplementation library.arch_unit +} + +// executing archunit tests: ./gradlew sechub-archunit-test:test diff --git a/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/ArchUnitImportOptions.java b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/ArchUnitImportOptions.java new file mode 100644 index 0000000000..88ade4276c --- /dev/null +++ b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/ArchUnitImportOptions.java @@ -0,0 +1,169 @@ +package mercedesbenz.com.sechub.archunit; + +import java.util.List; + +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.core.importer.Location; + +public class ArchUnitImportOptions { + + public static final String SECHUB_ROOT_FOLDER = "../../sechub/"; + + static List ignoreBuildFolders = new ArchUnitRuntimeSupport().createImportOptionsForBuildSystem(); + + /* Ignore specific packages */ + static ImportOption ignoreAllTests = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/test/"); // ignore any URI to sources that contains '/test/' + } + }; + + static ImportOption ignoreSechubOpenAPIJava = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-openapi-java(*)/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreSechubTestframework = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-testframework/"); // ignore any URI to sources that contains '/sechub-testframework/' + } + }; + + static ImportOption ignoreSharedkernelTest = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("com/mercedesbenz/sechub/sharedkernel/test"); // ignore any URI to sources that contains '/sechub-shared-kernel/' + } + }; + + static ImportOption ignoreIntegrationTest = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-integrationtest/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreDocGen = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/docgen/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreDevelopertools = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/developertools/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreTools = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/tools/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreBuildSrc = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/buildSrc/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreExamples = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-examples/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreNessusAdapter = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/deprecated-sechub-adapter-nessus/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreNessusProduct = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/deprecated-sechub-scan-product-nessus/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreNetsparkerAdapter = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/deprecated-sechub-adapter-netsparker/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreNetsparkerProduct = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/deprecated-sechub-scan-product-netsparker/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreAnalyzerCLI = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-analyzer-cli/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreSechubApiJava = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-api-java/"); // ignore any URI to sources that contains '/openapi/' + } + }; + + static ImportOption ignoreSechubTest = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-test/"); // ignore any URI to sources that contains '/sechub-test/' + } + }; + + static ImportOption ignoreSystemTest = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/sechub-systemtest/"); // ignore any URI to sources that contains '/sechub-systemtest/' + } + }; + + static ImportOption ignoreGenApi = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("/api/internal/gen/"); // ignore any URI to sources that contains '/sechub-gen-api/' + } + }; + + /* Ignore specific classes */ + static ImportOption ignoreProductIdentifierClass = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("sharedkernel/ProductIdentifier"); // ignore any URI to sources that contains '/ProductIdentifier' + } + }; + + static ImportOption ignoreIntegrationTestClass = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("IntegrationTest"); // ignore any URI to sources that contains '/ProductResult' + } + }; + + static ImportOption ignoreSchedulerSourcecodeUploadService = new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains("SchedulerSourcecodeUploadService"); // ignore any URI to sources that contains '/ProductResult' + } + }; +} diff --git a/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/ArchUnitRuntimeSupport.java b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/ArchUnitRuntimeSupport.java new file mode 100644 index 0000000000..08a1774a08 --- /dev/null +++ b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/ArchUnitRuntimeSupport.java @@ -0,0 +1,59 @@ +package mercedesbenz.com.sechub.archunit; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.core.importer.Location; + +/* + * This class provides build system specific import options for ArchUnit. + * Depending on the build system, the binary folder is different for gradle, intelliJ or eclipse. + * The property "sechub.archunit.buildsystem" can be set to "gradle", "intelliJ" or "eclipse" and is by default gradle + */ +class ArchUnitRuntimeSupport { + + /* @formatter:off */ + private Map buildSystemToBinaryFolder = Map.of( + "gradle", "/build/classes/", + "intelliJ", "/out/", + "eclipse", "/bin/"); + /* @formatter:on */ + + public List createImportOptionsForBuildSystem() { + String buildSystem = resolveBuildSystem(); + + Map binaryFolderToIgnoreMap = new HashMap<>(buildSystemToBinaryFolder); + binaryFolderToIgnoreMap.remove(buildSystem); + + List importOptions = new ArrayList<>(); + for (String binaryFolder : binaryFolderToIgnoreMap.values()) { + importOptions.add(new ImportOption() { + @Override + public boolean includes(Location location) { + return !location.contains(binaryFolder); + } + }); + } + + return importOptions; + } + + private String resolveBuildSystem() { + String buildSystem = System.getProperty("sechub.archunit.buildsystem"); + if (buildSystem == null || buildSystem.isBlank()) { + buildSystem = "gradle"; + } + + switch (buildSystem) { + case "gradle": + case "intelliJ": + case "eclipse": + return buildSystem; + default: + throw new IllegalStateException("Unsupported build system: " + buildSystem); + } + } +} diff --git a/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/CodingRulesTest.java b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/CodingRulesTest.java new file mode 100644 index 0000000000..b1019cedd3 --- /dev/null +++ b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/CodingRulesTest.java @@ -0,0 +1,148 @@ +package mercedesbenz.com.sechub.archunit; + +import static com.tngtech.archunit.core.domain.properties.CanBeAnnotated.Predicates.annotatedWith; +import static com.tngtech.archunit.lang.conditions.ArchConditions.accessTargetWhere; +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; +import static com.tngtech.archunit.library.GeneralCodingRules.*; +import static mercedesbenz.com.sechub.archunit.ArchUnitImportOptions.*; + +import org.junit.jupiter.api.Test; + +import com.tngtech.archunit.core.domain.JavaAccess; +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.AnalyzeClasses; + +@AnalyzeClasses +public class CodingRulesTest { + + private JavaClasses importedClasses; + + @Test + void classes_should_not_throw_generic_exceptions() { + /* prepare */ + ignoreTestGeneratedAndDeprecatedPackages(); + + /* execute + test */ + NO_CLASSES_SHOULD_THROW_GENERIC_EXCEPTIONS.check(importedClasses); + } + + @Test + void classes_should_not_use_deprecated_members() { + /* prepare */ + /* @formatter:off */ + importedClasses = new ClassFileImporter() + .withImportOptions(ignoreBuildFolders) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ignoreAllTests) + .withImportOption(ignoreSechubOpenAPIJava) + .withImportOption(ignoreNessusAdapter) + .withImportOption(ignoreNessusProduct) + .withImportOption(ignoreNetsparkerAdapter) + .withImportOption(ignoreNetsparkerProduct) + .withImportOption(ignoreIntegrationTest) + .withImportOption(ignoreSechubApiJava) + .withImportOption(ignoreProductIdentifierClass) + .withImportOption(ignoreIntegrationTestClass) + .withImportOption(ignoreDevelopertools) + .withImportOption(ignoreSchedulerSourcecodeUploadService) + .withImportOption(ignoreSystemTest) + .importPath(SECHUB_ROOT_FOLDER); + + /* execute + test */ + /* custom version of DEPRECATED_API_SHOULD_NOT_BE_USED */ + noClasses() + .should(accessTargetWhere(JavaAccess.Predicates.target(annotatedWith(Deprecated.class))) + .as("access @Deprecated members")) +// Following lines were out-commented because of JsonSerialize annotation uses deprecated default implementation +// .orShould(dependOnClassesThat(annotatedWith(Deprecated.class)) +// .as("depend on @Deprecated classes")) + .because("there should be a better alternative") + .check(importedClasses); + /* @formatter:on */ + } + + @Test + void assertion_error_must_have_detailed_message() { + /* prepare */ + ignoreTestGeneratedAndDeprecatedPackages(); + + /* execute + test */ + ASSERTIONS_SHOULD_HAVE_DETAIL_MESSAGE.check(importedClasses); + } + + @Test + void test_classes_should_be_in_the_same_package_as_implementation() { + /* prepare */ + /* @formatter:off */ + importedClasses = new ClassFileImporter() + .withImportOptions(ignoreBuildFolders) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ignoreSechubOpenAPIJava) + .withImportOption(ignoreSechubApiJava) + .withImportOption(ignoreDocGen) + .withImportOption(ignoreIntegrationTest) + .withImportOption(ignoreSechubTest) + .withImportOption(ignoreSystemTest) + .withImportOption(ignoreGenApi) + .importPath(SECHUB_ROOT_FOLDER); + + /* execute + test */ + testClassesShouldResideInTheSamePackageAsImplementation().check(importedClasses); + /* @formatter:on */ + } + + @Test + void classes_should_not_use_java_util_logging() { + /* prepare */ + ignoreTestGeneratedAndDeprecatedPackages(); + + /* execute + test */ + NO_CLASSES_SHOULD_USE_JAVA_UTIL_LOGGING.check(importedClasses); + } + + @Test + void classes_should_not_use_standard_streams() { + /* prepare */ + /* @formatter:off */ + importedClasses = new ClassFileImporter() + .withImportOptions(ignoreBuildFolders) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ignoreAllTests) + .withImportOption(ignoreSechubOpenAPIJava) + .withImportOption(ignoreIntegrationTest) + .withImportOption(ignoreDocGen) + .withImportOption(ignoreDevelopertools) + .withImportOption(ignoreTools) + .withImportOption(ignoreBuildSrc) + .withImportOption(ignoreAnalyzerCLI) + .withImportOption(ignoreExamples) + .importPath(SECHUB_ROOT_FOLDER); + + /* execute + test */ + NO_CLASSES_SHOULD_ACCESS_STANDARD_STREAMS.check(importedClasses); + /* @formatter:on */ + } + + private void ignoreTestGeneratedAndDeprecatedPackages() { + /* @formatter:off */ + importedClasses = new ClassFileImporter() + .withImportOptions(ignoreBuildFolders) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ignoreAllTests) + .withImportOption(ignoreSechubOpenAPIJava) + .withImportOption(ignoreNessusAdapter) + .withImportOption(ignoreNessusProduct) + .withImportOption(ignoreNetsparkerAdapter) + .withImportOption(ignoreNetsparkerProduct) + .withImportOption(ignoreIntegrationTest) + .withImportOption(ignoreSechubApiJava) + .withImportOption(ignoreDevelopertools) + .importPath(SECHUB_ROOT_FOLDER); + /* @formatter:on */ + } +} diff --git a/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/DomainAccessRulesTest.java b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/DomainAccessRulesTest.java new file mode 100644 index 0000000000..52a8f24993 --- /dev/null +++ b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/DomainAccessRulesTest.java @@ -0,0 +1,88 @@ +package mercedesbenz.com.sechub.archunit; + +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; +import static mercedesbenz.com.sechub.archunit.ArchUnitImportOptions.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.provider.ArgumentsSource; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.AnalyzeClasses; + +@AnalyzeClasses +public class DomainAccessRulesTest { + + private static final String DOMAIN_SCAN = "com.mercedesbenz.sechub.domain.scan"; + private static final String DOMAIN_ADMINISTRATION = "com.mercedesbenz.sechub.domain.administration"; + private static final String DOMAIN_STATISTIC = "com.mercedesbenz.sechub.domain.statistic"; + private static final String DOMAIN_SCHEDULE = "com.mercedesbenz.sechub.domain.schedule"; + private static final String DOMAIN_NOTIFICATION = "com.mercedesbenz.sechub.domain.notification"; + private static final String DOMAIN_AUTHORIZATION = "com.mercedesbenz.sechub.domain.authorization"; + + /* @formatter:off */ + private static final List allDomainsToTest = Arrays.asList( + DOMAIN_SCAN, + DOMAIN_ADMINISTRATION, + DOMAIN_STATISTIC, + DOMAIN_SCHEDULE, + DOMAIN_NOTIFICATION, + DOMAIN_AUTHORIZATION + ); + /* @formatter:on */ + + @ParameterizedTest + @ArgumentsSource(DomainDataArgumentProvider.class) + void no_class_in_one_domain_communicate_with_another_domain(String domainToTest) { + /* prepare */ + /* @formatter:off */ + JavaClasses importedClasses = new ClassFileImporter() + .withImportOptions(ignoreBuildFolders) + .withImportOption(ignoreDevelopertools) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .importPath(SECHUB_ROOT_FOLDER); + + /* execute + test */ + noClasses() + .that() + .resideInAPackage(packageIdentifier(domainToTest)) + .should() + .accessClassesThat() + .resideInAnyPackage(resolveOtherDomainsThan(domainToTest)) + .check(importedClasses); + /* @formatter:on */ + } + + private static String[] resolveOtherDomainsThan(String domainToTest) { + List otherDomains = new ArrayList<>(allDomainsToTest); + otherDomains.remove(domainToTest); + String[] otherDomainsArray = new String[otherDomains.size()]; + for (int i = 0; i < otherDomains.size(); i++) { + String packageIdentifier = packageIdentifier(otherDomains.get(i)); + otherDomainsArray[i] = packageIdentifier; + } + return otherDomainsArray; + } + + private static String packageIdentifier(String domain) { + return ".." + domain + ".."; + } + + private static class DomainDataArgumentProvider implements ArgumentsProvider { + + @Override + public Stream provideArguments(ExtensionContext context) throws Exception { + return allDomainsToTest.stream().map(domain -> Arguments.of(domain)); + } + } +} diff --git a/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/NamingConventionTest.java b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/NamingConventionTest.java new file mode 100644 index 0000000000..cfe381bccf --- /dev/null +++ b/sechub-archunit-test/src/test/java/mercedesbenz/com/sechub/archunit/NamingConventionTest.java @@ -0,0 +1,71 @@ +package mercedesbenz.com.sechub.archunit; + +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; +import static mercedesbenz.com.sechub.archunit.ArchUnitImportOptions.*; + +import org.junit.jupiter.api.Test; +import org.springframework.stereotype.Service; + +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.AnalyzeClasses; + +@AnalyzeClasses +public class NamingConventionTest { + + private JavaClasses importedClasses; + + @Test + void classes_in_test_packages_containing_test_or_assert_in_name() { + /* prepare */ + /* @formatter:off */ + importedClasses = new ClassFileImporter() + .withImportOptions(ignoreBuildFolders) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ignoreSechubOpenAPIJava) + .withImportOption(ignoreSechubTestframework) + .withImportOption(ignoreSharedkernelTest) + .withImportOption(ignoreSechubApiJava) + .importPath(SECHUB_ROOT_FOLDER); + + /* execute + test */ + classes() + .that() + .resideInAPackage("..test..") + .should() + .haveSimpleNameContaining("Test") + .orShould() + .haveNameMatching(".*\\.Assert.*") // including inner classes + .orShould() + .haveNameMatching(".*Test\\$.*") // including inner classes + .because("Tests classes should contain 'Test' or 'Assert' in their name.") + .check(importedClasses); + /* @formatter:on */ + } + + @Test + void service_annotated_classes_contain_service_or_executor_in_name() { + /* prepare */ + /* @formatter:off */ + importedClasses = new ClassFileImporter() + .withImportOptions(ignoreBuildFolders) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS) + .withImportOption(ignoreAllTests) + .withImportOption(ignoreSechubOpenAPIJava) + .importPath("../../sechub/"); + + /* execute + test */ + classes() + .that() + .areAnnotatedWith(Service.class) + .should() + .haveSimpleNameContaining("Service") + .orShould() + .haveSimpleNameContaining("Executor") + .because("Service classes should contain 'Service' or 'Executor' in their name.") + .check(importedClasses); + /* @formatter:on */ + } +} \ No newline at end of file diff --git a/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/SecHubTimeUnitTest.java b/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/SecHubTimeUnitTest.java similarity index 97% rename from sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/SecHubTimeUnitTest.java rename to sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/SecHubTimeUnitTest.java index 4fbbe43707..5627b027fb 100644 --- a/sechub-adapter/src/test/java/com/mercedesbenz/sechub/adapter/SecHubTimeUnitTest.java +++ b/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/SecHubTimeUnitTest.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.adapter; +package com.mercedesbenz.sechub.commons.model; import static org.junit.jupiter.api.Assertions.*; @@ -11,7 +11,6 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.exc.InvalidFormatException; -import com.mercedesbenz.sechub.commons.model.SecHubTimeUnit; public class SecHubTimeUnitTest { @Test diff --git a/sechub-scan/src/test/java/com/mercedesbenz/sechub/domain/scan/SeveritiesTest.java b/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/SeveritiesTest.java similarity index 82% rename from sechub-scan/src/test/java/com/mercedesbenz/sechub/domain/scan/SeveritiesTest.java rename to sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/SeveritiesTest.java index 6aac041baf..a228fe55ce 100644 --- a/sechub-scan/src/test/java/com/mercedesbenz/sechub/domain/scan/SeveritiesTest.java +++ b/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/SeveritiesTest.java @@ -1,13 +1,10 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.domain.scan; +package com.mercedesbenz.sechub.commons.model; import static org.junit.Assert.*; import org.junit.Test; -import com.mercedesbenz.sechub.commons.model.Severities; -import com.mercedesbenz.sechub.commons.model.Severity; - public class SeveritiesTest { @Test diff --git a/sechub-scan-product-pds/src/test/java/com/mercedesbenz/sechub/domain/scan/product/pds/PDSConfigDataKeyProviderTest.java b/sechub-commons-pds/src/test/java/com/mercedesbenz/sechub/commons/pds/PDSConfigDataKeyProviderTest.java similarity index 88% rename from sechub-scan-product-pds/src/test/java/com/mercedesbenz/sechub/domain/scan/product/pds/PDSConfigDataKeyProviderTest.java rename to sechub-commons-pds/src/test/java/com/mercedesbenz/sechub/commons/pds/PDSConfigDataKeyProviderTest.java index e5f592c23d..e8155a231e 100644 --- a/sechub-scan-product-pds/src/test/java/com/mercedesbenz/sechub/domain/scan/product/pds/PDSConfigDataKeyProviderTest.java +++ b/sechub-commons-pds/src/test/java/com/mercedesbenz/sechub/commons/pds/PDSConfigDataKeyProviderTest.java @@ -1,12 +1,10 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.domain.scan.product.pds; +package com.mercedesbenz.sechub.commons.pds; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; -import com.mercedesbenz.sechub.commons.pds.PDSConfigDataKeyProvider; - class PDSConfigDataKeyProviderTest { @Test diff --git a/sechub-developertools/src/main/java/com/mercedesbenz/sechub/developertools/admin/ui/action/status/ListStatusEntriesAction.java b/sechub-developertools/src/main/java/com/mercedesbenz/sechub/developertools/admin/ui/action/status/ListStatusEntriesAction.java index 85e91563bb..42c9fe5eb9 100644 --- a/sechub-developertools/src/main/java/com/mercedesbenz/sechub/developertools/admin/ui/action/status/ListStatusEntriesAction.java +++ b/sechub-developertools/src/main/java/com/mercedesbenz/sechub/developertools/admin/ui/action/status/ListStatusEntriesAction.java @@ -42,7 +42,7 @@ public Map getLastDataAsKeyValueMap() { try { root = h.getMapper().readTree(json); } catch (JsonProcessingException e) { - throw new RuntimeException("json not readable", e); + throw new IllegalStateException("json not readable", e); } ArrayNode array = (ArrayNode) root; for (JsonNode node : array) { diff --git a/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/NotificationMessageHandler.java b/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/NotificationMessageHandler.java index 7dedd91efc..411e0a50e5 100644 --- a/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/NotificationMessageHandler.java +++ b/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/NotificationMessageHandler.java @@ -10,15 +10,8 @@ import com.mercedesbenz.sechub.domain.notification.owner.InformOwnerThatProjectHasBeenDeletedNotificationService; import com.mercedesbenz.sechub.domain.notification.owner.InformThatProjectHasNewOwnerNotificationService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatJobRestartHasBeenTriggeredService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatJobRestartWasCanceledService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatJobResultsHaveBeenPurgedService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatNewSchedulerInstanceHasBeenStarted; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatProjectHasBeenDeletedNotificationService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatSchedulerJobProcessingHasBeenDisabledService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatSchedulerJobProcessingHasBeenEnabledService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatUserBecomesAdminNotificationService; -import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatUserNoLongerAdminNotificationService; +import com.mercedesbenz.sechub.domain.notification.superadmin.*; +import com.mercedesbenz.sechub.domain.notification.superadmin.InformAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService; import com.mercedesbenz.sechub.domain.notification.user.*; import com.mercedesbenz.sechub.sharedkernel.messaging.AsynchronMessageHandler; import com.mercedesbenz.sechub.sharedkernel.messaging.ClusterMemberMessage; @@ -102,7 +95,7 @@ public class NotificationMessageHandler implements AsynchronMessageHandler { InformUsersThatProjectHasBeenDeletedNotificationService informUsersThatProjectHasBeenDeletedService; @Autowired - InformAdminsThatNewSchedulerInstanceHasBeenStarted informAdminsThatNewSchedulerInstanceHasBeenStarted; + InformAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService informAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService; @Autowired SignUpRequestedUserNotificationService signupRequestedUserNotificationService; @@ -175,7 +168,7 @@ private void handleUserEmailChanged(UserMessage userMessage) { @IsReceivingAsyncMessage(MessageID.SCHEDULER_STARTED) private void handleSchedulerStarted(ClusterMemberMessage clusterMemberMessage, String baseUrl) { - informAdminsThatNewSchedulerInstanceHasBeenStarted.notify(baseUrl, clusterMemberMessage); + informAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService.notify(baseUrl, clusterMemberMessage); } @IsReceivingAsyncMessage(MessageID.JOB_RESULTS_PURGED) diff --git a/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/superadmin/InformAdminsThatNewSchedulerInstanceHasBeenStarted.java b/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/superadmin/InformAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService.java similarity index 94% rename from sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/superadmin/InformAdminsThatNewSchedulerInstanceHasBeenStarted.java rename to sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/superadmin/InformAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService.java index 110a678ba7..8e40e082bc 100644 --- a/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/superadmin/InformAdminsThatNewSchedulerInstanceHasBeenStarted.java +++ b/sechub-notification/src/main/java/com/mercedesbenz/sechub/domain/notification/superadmin/InformAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService.java @@ -17,9 +17,9 @@ import com.mercedesbenz.sechub.sharedkernel.usecases.admin.status.UseCaseAdminReceivesNotificationAboutNewchedulerInstanceStart; @Service -public class InformAdminsThatNewSchedulerInstanceHasBeenStarted { +public class InformAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService { - private static final Logger LOG = LoggerFactory.getLogger(InformAdminsThatNewSchedulerInstanceHasBeenStarted.class); + private static final Logger LOG = LoggerFactory.getLogger(InformAdminsThatNewSchedulerInstanceHasBeenStartedNotificationService.class); @Value("${sechub.notification.scheduler.startup.enabled:true}") @MustBeDocumented(scope = "administration", value = "When enabled, administrators will be informed by notification " diff --git a/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/config/PDSProductParameterDefinitionTest.java b/sechub-pds-commons-core/src/test/java/com/mercedesbenz/sechub/pds/commons/core/config/PDSProductParameterDefinitionTest.java similarity index 92% rename from sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/config/PDSProductParameterDefinitionTest.java rename to sechub-pds-commons-core/src/test/java/com/mercedesbenz/sechub/pds/commons/core/config/PDSProductParameterDefinitionTest.java index da061d5d2d..99ec9e2ed3 100644 --- a/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/config/PDSProductParameterDefinitionTest.java +++ b/sechub-pds-commons-core/src/test/java/com/mercedesbenz/sechub/pds/commons/core/config/PDSProductParameterDefinitionTest.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.pds.config; +package com.mercedesbenz.sechub.pds.commons.core.config; import static org.junit.jupiter.api.Assertions.*; @@ -9,7 +9,6 @@ import org.junit.jupiter.params.provider.ValueSource; import com.mercedesbenz.sechub.commons.model.JSONConverter; -import com.mercedesbenz.sechub.pds.commons.core.config.PDSProductParameterDefinition; class PDSProductParameterDefinitionTest { diff --git a/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupService.java b/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupService.java index b9db0ce23f..4d09506283 100644 --- a/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupService.java +++ b/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupService.java @@ -10,7 +10,7 @@ import com.mercedesbenz.sechub.pds.config.PDSConfigService; import com.mercedesbenz.sechub.pds.job.PDSJobRepository; -import com.mercedesbenz.sechub.pds.time.TimeCalculationService; +import com.mercedesbenz.sechub.pds.time.PDSTimeCalculationService; import com.mercedesbenz.sechub.pds.usecase.PDSStep; import com.mercedesbenz.sechub.pds.usecase.UseCaseSystemExecutesAutoCleanup; @@ -23,7 +23,7 @@ public class PDSAutoCleanupService { PDSAutoCleanupResultInspector inspector; @Autowired - TimeCalculationService timeCalculationService; + PDSTimeCalculationService PDSTimeCalculationService; @Autowired PDSConfigService configService; @@ -44,7 +44,7 @@ public void cleanup() { LOG.trace("Cancel administration auto cleanup because disabled."); return; } - LocalDateTime cleanTimeStamp = timeCalculationService.calculateNowMinusDays(days); + LocalDateTime cleanTimeStamp = PDSTimeCalculationService.calculateNowMinusDays(days); /* delete */ int amount = jobRepository.deleteJobOlderThan(cleanTimeStamp); diff --git a/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/SystemTimeProvider.java b/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/PDSSystemTimeProvider.java similarity index 93% rename from sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/SystemTimeProvider.java rename to sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/PDSSystemTimeProvider.java index 2b998979d2..6807014216 100644 --- a/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/SystemTimeProvider.java +++ b/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/PDSSystemTimeProvider.java @@ -14,7 +14,7 @@ * */ @Component -public class SystemTimeProvider { +public class PDSSystemTimeProvider { public LocalDateTime getNow() { return LocalDateTime.now(); diff --git a/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/TimeCalculationService.java b/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/PDSTimeCalculationService.java similarity index 89% rename from sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/TimeCalculationService.java rename to sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/PDSTimeCalculationService.java index 9925c5da45..9e2a97978f 100644 --- a/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/TimeCalculationService.java +++ b/sechub-pds/src/main/java/com/mercedesbenz/sechub/pds/time/PDSTimeCalculationService.java @@ -7,10 +7,10 @@ import org.springframework.stereotype.Service; @Service -public class TimeCalculationService { +public class PDSTimeCalculationService { @Autowired - SystemTimeProvider systemTime; + PDSSystemTimeProvider systemTime; /** * Calculates current time stamp minus days. When days are negative the days are diff --git a/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupServiceTest.java b/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupServiceTest.java index ab25ee6ea4..4f267d038f 100644 --- a/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupServiceTest.java +++ b/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/autocleanup/PDSAutoCleanupServiceTest.java @@ -15,14 +15,14 @@ import com.mercedesbenz.sechub.pds.config.PDSConfigService; import com.mercedesbenz.sechub.pds.job.PDSJobRepository; -import com.mercedesbenz.sechub.pds.time.TimeCalculationService; +import com.mercedesbenz.sechub.pds.time.PDSTimeCalculationService; class PDSAutoCleanupServiceTest { private PDSAutoCleanupService serviceToTest; private PDSConfigService configService; private PDSJobRepository jobRepository; - private TimeCalculationService timeCalculationService; + private PDSTimeCalculationService pdsTimeCalculationService; private PDSAutoCleanupResultInspector inspector; @BeforeEach @@ -31,12 +31,12 @@ void beforeEach() { configService = mock(PDSConfigService.class); jobRepository = mock(PDSJobRepository.class); - timeCalculationService = mock(TimeCalculationService.class); + pdsTimeCalculationService = mock(PDSTimeCalculationService.class); inspector = mock(PDSAutoCleanupResultInspector.class); serviceToTest.configService = configService; serviceToTest.jobRepository = jobRepository; - serviceToTest.timeCalculationService = timeCalculationService; + serviceToTest.PDSTimeCalculationService = pdsTimeCalculationService; serviceToTest.inspector = inspector; } @@ -46,14 +46,14 @@ void cleanup_executes_NOT_delete_job_when_config_service_returns_minus_1_day() { long days = -1; when(configService.getAutoCleanupInDays()).thenReturn(days); LocalDateTime cleanTime = LocalDateTime.now().minusDays(days); - when(timeCalculationService.calculateNowMinusDays(any())).thenReturn(cleanTime); + when(pdsTimeCalculationService.calculateNowMinusDays(any())).thenReturn(cleanTime); /* execute */ serviceToTest.cleanup(); /* test */ verify(configService).getAutoCleanupInDays(); - verify(timeCalculationService, never()).calculateNowMinusDays(any()); + verify(pdsTimeCalculationService, never()).calculateNowMinusDays(any()); verify(jobRepository, never()).deleteJobOlderThan(any()); // check inspection as expected: never because not executed verify(inspector, never()).inspect(any()); @@ -65,14 +65,14 @@ void cleanup_executes_NOT_delete_job_when_config_servic_returns_0_days() { long days = 0; when(configService.getAutoCleanupInDays()).thenReturn(days); LocalDateTime cleanTime = LocalDateTime.now().minusDays(days); - when(timeCalculationService.calculateNowMinusDays(any())).thenReturn(cleanTime); + when(pdsTimeCalculationService.calculateNowMinusDays(any())).thenReturn(cleanTime); /* execute */ serviceToTest.cleanup(); /* test */ verify(configService).getAutoCleanupInDays(); - verify(timeCalculationService, never()).calculateNowMinusDays(any()); + verify(pdsTimeCalculationService, never()).calculateNowMinusDays(any()); verify(jobRepository, never()).deleteJobOlderThan(any()); // check inspection as expected: never because not executed verify(inspector, never()).inspect(any()); @@ -84,7 +84,7 @@ void cleanup_executes_delete_job_when_config_service_returns_days_bigger_than_ze /* prepare */ when(configService.getAutoCleanupInDays()).thenReturn(days); LocalDateTime cleanTime = LocalDateTime.now().minusDays(days); - when(timeCalculationService.calculateNowMinusDays(any())).thenReturn(cleanTime); + when(pdsTimeCalculationService.calculateNowMinusDays(any())).thenReturn(cleanTime); when(jobRepository.deleteJobOlderThan(cleanTime)).thenReturn(1234); /* execute */ @@ -92,7 +92,7 @@ void cleanup_executes_delete_job_when_config_service_returns_days_bigger_than_ze /* test */ verify(configService).getAutoCleanupInDays(); - verify(timeCalculationService).calculateNowMinusDays(eq(days)); + verify(pdsTimeCalculationService).calculateNowMinusDays(eq(days)); verify(jobRepository).deleteJobOlderThan(cleanTime); // check inspection as expected diff --git a/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/test/ExtendedMockMultipartFile.java b/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/test/ExtendedMockMultipartFile.java deleted file mode 100644 index 56d6609674..0000000000 --- a/sechub-pds/src/test/java/com/mercedesbenz/sechub/pds/test/ExtendedMockMultipartFile.java +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.pds.test; - -import java.io.IOException; -import java.io.InputStream; - -import org.springframework.mock.web.MockMultipartFile; - -/** - * Based on {@link MockMultipartFile} - with some extensions: - *
    - *
  1. remember last input stream fetched by {@link #getInputStream()}. This - * stream object can be fetched by {@link #getRememberedInputStream()}. So - * mockito tests can verify input stream parameters
  2. - *
- * - * @author Albert Tregnaghi - * - */ -public class ExtendedMockMultipartFile extends MockMultipartFile { - - private InputStream rememberedInputStream; - - public ExtendedMockMultipartFile(String name, byte[] content) { - super(name, content); - } - - @Override - public InputStream getInputStream() throws IOException { - rememberedInputStream = super.getInputStream(); - return rememberedInputStream; - } - - public InputStream getRememberedInputStream() { - return rememberedInputStream; - } - -} \ No newline at end of file diff --git a/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/IntegrationTestScanRestController.java b/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/IntegrationTestScanRestController.java index edce427422..ebb18ba623 100644 --- a/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/IntegrationTestScanRestController.java +++ b/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/IntegrationTestScanRestController.java @@ -41,6 +41,7 @@ import com.mercedesbenz.sechub.sharedkernel.APIConstants; import com.mercedesbenz.sechub.sharedkernel.ProductIdentifier; import com.mercedesbenz.sechub.sharedkernel.Profiles; +import com.mercedesbenz.sechub.sharedkernel.mapping.MappingIdentifier; /** * Contains additional rest call functionality for integration tests on scan @@ -218,7 +219,8 @@ public MappingData fetchScanMappingData(@PathVariable("mappingId") String mappin @SuppressWarnings("deprecation") @RequestMapping(path = APIConstants.API_ANONYMOUS + "integrationtest/config/namepattern/{namePatternProviderId}/{name}", method = RequestMethod.GET) public String getIdForNameByProvider(@PathVariable("namePatternProviderId") String namePatternProviderId, @PathVariable("name") String name) { - NamePatternIdProvider provider = scanMappingConfigurationService.getNamePatternIdProvider(namePatternProviderId); + MappingIdentifier mappingIdentifier = MappingIdentifier.valueOf(namePatternProviderId); + NamePatternIdProvider provider = scanMappingConfigurationService.getNamePatternIdProvider(mappingIdentifier); if (provider == null) { return null; } diff --git a/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/config/ScanMappingConfigurationService.java b/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/config/ScanMappingConfigurationService.java index 962a7ff570..ae1ff3863e 100644 --- a/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/config/ScanMappingConfigurationService.java +++ b/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/config/ScanMappingConfigurationService.java @@ -57,15 +57,7 @@ public NamePatternIdProvider getNamePatternIdProvider(MappingIdentifier identifi return getNamePatternIdProvider(identifier.getId()); } - /** - * Get provider to resolve IDs by a given name. Deprecation: This method should - * NOT be used outside this package to avoid usage without mapping identifiers! - * - * @param namePatternMappingId - * @return provider, never null - */ - @Deprecated - public NamePatternIdProvider getNamePatternIdProvider(String namePatternMappingId) { + NamePatternIdProvider getNamePatternIdProvider(String namePatternMappingId) { synchronized (providers) { NamePatternIdProvider provider = providers.get(namePatternMappingId); if (provider != null) { diff --git a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerBinariesUploadConfiguration.java b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerBinariesUploadConfiguration.java index 412436dc8c..4c400c2855 100644 --- a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerBinariesUploadConfiguration.java +++ b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerBinariesUploadConfiguration.java @@ -4,11 +4,11 @@ import static com.mercedesbenz.sechub.commons.core.CommonConstants.*; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import com.mercedesbenz.sechub.sharedkernel.MustBeDocumented; -@Service +@Component public class SchedulerBinariesUploadConfiguration { private static final long DEFAULT_MAX_UPLOAD_SIZE_IN_BYTES = 50 * 1024 * 1024; // 50 MiB diff --git a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadConfiguration.java b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadConfiguration.java index 32af4c1e90..4c6360341a 100644 --- a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadConfiguration.java +++ b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadConfiguration.java @@ -2,11 +2,11 @@ package com.mercedesbenz.sechub.domain.schedule; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import com.mercedesbenz.sechub.sharedkernel.MustBeDocumented; -@Service +@Component public class SchedulerSourcecodeUploadConfiguration { @Value("${sechub.server.upload.validate.zip:true}") diff --git a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadService.java b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadService.java index d5ebe14f99..9685c98c38 100644 --- a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadService.java +++ b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/SchedulerSourcecodeUploadService.java @@ -196,7 +196,6 @@ private void assertCheckSumCorrect(String checkSum, InputStream inputStream) { } } - @SuppressWarnings("deprecation") private void assertValidZipFile(InputStream inputStream) { if (!archiveSupportProvider.getArchiveSupport().isZipFileStream(inputStream)) { LOG.error("Uploaded file is NOT a valid ZIP file!"); diff --git a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/batch/SynchronSecHubJobExecutor.java b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/batch/SynchronSecHubJobExecutor.java index 6d06354b2c..ca73087e43 100644 --- a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/batch/SynchronSecHubJobExecutor.java +++ b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/batch/SynchronSecHubJobExecutor.java @@ -20,7 +20,7 @@ import com.mercedesbenz.sechub.commons.model.job.ExecutionResult; import com.mercedesbenz.sechub.domain.schedule.UUIDContainer; import com.mercedesbenz.sechub.domain.schedule.job.ScheduleSecHubJob; -import com.mercedesbenz.sechub.domain.schedule.job.SecHubConfigurationModelAccess; +import com.mercedesbenz.sechub.domain.schedule.job.SecHubConfigurationModelAccessService; import com.mercedesbenz.sechub.sharedkernel.LogConstants; import com.mercedesbenz.sechub.sharedkernel.messaging.DomainMessage; import com.mercedesbenz.sechub.sharedkernel.messaging.DomainMessageService; @@ -56,7 +56,7 @@ public class SynchronSecHubJobExecutor { SecHubJobSafeUpdater secHubJobSafeUpdater; @Autowired - SecHubConfigurationModelAccess configurationModelAccess; + SecHubConfigurationModelAccessService configurationModelAccess; @IsSendingSyncMessage(MessageID.START_SCAN) public void execute(final ScheduleSecHubJob secHubJob) { diff --git a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubConfigurationModelAccess.java b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubConfigurationModelAccessService.java similarity index 95% rename from sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubConfigurationModelAccess.java rename to sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubConfigurationModelAccessService.java index e0c63017c3..7ccc2b72ee 100644 --- a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubConfigurationModelAccess.java +++ b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubConfigurationModelAccessService.java @@ -13,9 +13,9 @@ import com.mercedesbenz.sechub.domain.schedule.encryption.ScheduleEncryptionService; @Service -public class SecHubConfigurationModelAccess { +public class SecHubConfigurationModelAccessService { - private static final Logger LOG = LoggerFactory.getLogger(SecHubConfigurationModelAccess.class); + private static final Logger LOG = LoggerFactory.getLogger(SecHubConfigurationModelAccessService.class); @Autowired @Lazy diff --git a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserService.java b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserService.java index 42de4cd5d3..51106765d7 100644 --- a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserService.java +++ b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserService.java @@ -56,7 +56,7 @@ public class SecHubJobInfoForUserService { SecHubConfigurationModelValidator modelValidator; @Autowired - SecHubConfigurationModelAccess configurationModelAccess; + SecHubConfigurationModelAccessService configurationModelAccess; @Value("${sechub.project.joblist.size.max:" + DEFAULT_MAXIMUM_LIMIT + "}") @MustBeDocumented("Maximum limit for job information list entries per page") diff --git a/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserServiceTest.java b/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserServiceTest.java index 2944f9fa7b..db149f3f03 100644 --- a/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserServiceTest.java +++ b/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/job/SecHubJobInfoForUserServiceTest.java @@ -37,7 +37,7 @@ class SecHubJobInfoForUserServiceTest { private SecHubJobInfoForUserService serviceToTest; private SecHubJobRepository jobRepository; private ScheduleAssertService assertService; - private SecHubConfigurationModelAccess configurationModelAccess; + private SecHubConfigurationModelAccessService configurationModelAccess; @BeforeEach void beforeEach() { @@ -45,7 +45,7 @@ void beforeEach() { jobRepository = mock(SecHubJobRepository.class); assertService = mock(ScheduleAssertService.class); - configurationModelAccess = mock(SecHubConfigurationModelAccess.class); + configurationModelAccess = mock(SecHubConfigurationModelAccessService.class); serviceToTest = new SecHubJobInfoForUserService(); diff --git a/sechub-sereco/src/test/java/com/mercedesbenz/sechub/sereco/metadata/SeverityTest.java b/sechub-sereco/src/test/java/com/mercedesbenz/sechub/sereco/metadata/SerecoSeverityTest.java similarity index 97% rename from sechub-sereco/src/test/java/com/mercedesbenz/sechub/sereco/metadata/SeverityTest.java rename to sechub-sereco/src/test/java/com/mercedesbenz/sechub/sereco/metadata/SerecoSeverityTest.java index 5593f390d4..5e6268cda4 100644 --- a/sechub-sereco/src/test/java/com/mercedesbenz/sechub/sereco/metadata/SeverityTest.java +++ b/sechub-sereco/src/test/java/com/mercedesbenz/sechub/sereco/metadata/SerecoSeverityTest.java @@ -5,7 +5,7 @@ import org.junit.Test; -public class SeverityTest { +public class SerecoSeverityTest { @Test public void value_null_is_null() { diff --git a/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/RunSecHubJobDefinitionTransformerTest.java b/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/config/RunSecHubJobDefinitionTransformerTest.java similarity index 97% rename from sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/RunSecHubJobDefinitionTransformerTest.java rename to sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/config/RunSecHubJobDefinitionTransformerTest.java index 053d6151f9..cd3c70554c 100644 --- a/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/RunSecHubJobDefinitionTransformerTest.java +++ b/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/config/RunSecHubJobDefinitionTransformerTest.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.systemtest.runtime; +package com.mercedesbenz.sechub.systemtest.config; import static org.junit.jupiter.api.Assertions.*; @@ -22,9 +22,6 @@ import com.mercedesbenz.sechub.commons.model.SecHubSecretScanConfiguration; import com.mercedesbenz.sechub.commons.model.SecHubSourceDataConfiguration; import com.mercedesbenz.sechub.commons.model.SecHubWebScanConfiguration; -import com.mercedesbenz.sechub.systemtest.config.RunSecHubJobDefinition; -import com.mercedesbenz.sechub.systemtest.config.RunSecHubJobDefinitionTransformer; -import com.mercedesbenz.sechub.systemtest.config.UploadDefinition; class RunSecHubJobDefinitionTransformerTest { diff --git a/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/CurrentTestVariableCalculatorTest.java b/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/testengine/CurrentTestVariableCalculatorTest.java similarity index 94% rename from sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/CurrentTestVariableCalculatorTest.java rename to sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/testengine/CurrentTestVariableCalculatorTest.java index 55bb509cfa..1d8f2759ff 100644 --- a/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/CurrentTestVariableCalculatorTest.java +++ b/sechub-systemtest/src/test/java/com/mercedesbenz/sechub/systemtest/runtime/testengine/CurrentTestVariableCalculatorTest.java @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.systemtest.runtime; +package com.mercedesbenz.sechub.systemtest.runtime.testengine; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @@ -15,7 +15,8 @@ import com.mercedesbenz.sechub.systemtest.config.CalculatedVariables; import com.mercedesbenz.sechub.systemtest.config.TestDefinition; -import com.mercedesbenz.sechub.systemtest.runtime.testengine.CurrentTestVariableCalculator; +import com.mercedesbenz.sechub.systemtest.runtime.LocationSupport; +import com.mercedesbenz.sechub.systemtest.runtime.SystemTestRuntimeContext; import com.mercedesbenz.sechub.test.TestUtil; class CurrentTestVariableCalculatorTest { diff --git a/sechub-test/src/test/java/com/mercedesbenz/sechub/test/PackageStructureTest.java b/sechub-test/src/test/java/com/mercedesbenz/sechub/test/PackageStructureTest.java deleted file mode 100644 index b1bca66159..0000000000 --- a/sechub-test/src/test/java/com/mercedesbenz/sechub/test/PackageStructureTest.java +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.test; - -import static org.junit.Assert.*; - -import java.io.File; -import java.util.List; - -import org.junit.Test; - -import com.mercedesbenz.sechub.test.DomainAccessSourceVisitor.DomainProblem; - -/** - * This test case checks that domain communication is only done from packages - * inside a domain but never between domains directly! - * - * @author Albert Tregnaghi - * - */ -public class PackageStructureTest { - - @Test - public void test_no_java_file_exists_where_package_with_com_mercedesbenz_secub_domain__imports_from_another_domain() { - SimpleFileBasedPackageScanner scanner = new SimpleFileBasedPackageScanner(); - - TestFileSupport support = new TestFileSupport(null); - File root = support.getRootFolder(); - DomainAccessSourceVisitor visitor = new DomainAccessSourceVisitor(); -// scanner.setVerbose(true); - scanner.visit(root, visitor); - - List problems = visitor.getProblems(); - if (problems.isEmpty()) { - throw new IllegalStateException("testcase corrupt, did not found even expected test problem!"); - } - StringBuilder sb = new StringBuilder(); - for (DomainProblem problem : problems) { - if (problem.getFile().getName().endsWith("TestScanDomainUsesOtherDomain.java")) { - /* this is test case file to check problem is identified - we ignore this */ - continue; - } - sb.append(problem.getFile() + "\n" + problem.getProblem()); - sb.append("\n\n"); - } - if (sb.length() == 0) { - /* okay, only test problem found */ - return; - } - fail("Found problems:\n" + sb.toString()); - } -} diff --git a/sechub-testframework/src/main/java/com/mercedesbenz/sechub/test/DomainAccessSourceVisitor.java b/sechub-testframework/src/main/java/com/mercedesbenz/sechub/test/DomainAccessSourceVisitor.java deleted file mode 100644 index 5db583a76f..0000000000 --- a/sechub-testframework/src/main/java/com/mercedesbenz/sechub/test/DomainAccessSourceVisitor.java +++ /dev/null @@ -1,75 +0,0 @@ -// SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.test; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import com.mercedesbenz.sechub.test.SimpleFileBasedPackageScanner.PackageSourceVisitor; - -public class DomainAccessSourceVisitor implements PackageSourceVisitor { - - private static final String COM_MERCEDESBENZ_SECHUB_DOMAIN = "com.mercedesbenz.sechub.domain."; - - public class DomainProblem { - private File file; - private String problem; - - public DomainProblem(File sourceFile, String string) { - this.file = sourceFile; - this.problem = string; - } - - public File getFile() { - return file; - } - - public String getProblem() { - return problem; - } - - } - - private List problems; - - public List getProblems() { - return problems; - } - - public DomainAccessSourceVisitor() { - problems = new ArrayList<>(); - } - - @Override - public void visit(File sourceFile, String packageOfFile, List importedPackages) { - if (sourceFile.getName().endsWith("Test.java") && sourceFile.getAbsolutePath().contains("sechub-test")) { - // inside sechub-test project we allow this inside tests - e.g. when we test - // that constants are same between two different domains (means defined twice). - return; - } - String packageDomainName = fetchDomainName(packageOfFile); - if (packageDomainName == null || packageDomainName.isEmpty()) { - return; - } - for (String imported : importedPackages) { - String importDomainName = fetchDomainName(imported); - if (importDomainName != null && !importDomainName.equals(packageDomainName)) { - problems.add(new DomainProblem(sourceFile, "import problem:" + imported + " imported but inside package:" + packageOfFile)); - } - } - } - - private String fetchDomainName(String packageOfFile) { - int index = packageOfFile.indexOf(COM_MERCEDESBENZ_SECHUB_DOMAIN); - if (index == -1) { - return null; - } - String result = packageOfFile.substring(index + COM_MERCEDESBENZ_SECHUB_DOMAIN.length()); - int indexPoint = result.indexOf('.'); - if (indexPoint != -1) { - result = result.substring(0, indexPoint); - } - return result; - } - -} \ No newline at end of file diff --git a/sechub-testframework/src/main/java/com/mercedesbenz/sechub/test/SimpleFileBasedPackageScanner.java b/sechub-testframework/src/main/java/com/mercedesbenz/sechub/test/SimpleFileBasedPackageScanner.java deleted file mode 100644 index 03bf6d0362..0000000000 --- a/sechub-testframework/src/main/java/com/mercedesbenz/sechub/test/SimpleFileBasedPackageScanner.java +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.test; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileFilter; -import java.io.FileInputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.List; - -public class SimpleFileBasedPackageScanner { - private static final String PACKAGE = "package"; - private static final String IMPORT = "import"; - private static final JavaFileFiter FILE_FILTER = new JavaFileFiter(); - - private static class JavaFileFiter implements FileFilter { - - @Override - public boolean accept(File file) { - if (file.isDirectory()) { - return true; - } - String name = file.getName(); - return name.endsWith(".java"); - } - } - - public static interface PackageSourceVisitor { - - public void visit(File sourceFile, String packageOfFile, List importedPackages); - } - - private boolean verbose; - - public void visit(File file, PackageSourceVisitor visitor) { - if (file.isDirectory()) { - if (verbose) { - System.out.println("visiting directory:" + file); - } - for (File child : file.listFiles(FILE_FILTER)) { - visit(child, visitor); - } - } else { - if (verbose) { - System.out.println("visiting file:" + file); - } - loadAndVisitFile(file, visitor); - } - } - - private void loadAndVisitFile(File file, PackageSourceVisitor visitor) { - List imports = new ArrayList<>(); - - String packageOfFile = ""; - try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) { - String line = null; - while ((line = br.readLine()) != null) { - String trimmedLine = line.trim(); - if (trimmedLine.startsWith(IMPORT)) { - String importLine = reduceLineWithoutPrefixAndTrailingSemicolon(trimmedLine, IMPORT); - imports.add(importLine); - } else if (trimmedLine.startsWith(PACKAGE)) { - packageOfFile = reduceLineWithoutPrefixAndTrailingSemicolon(trimmedLine, PACKAGE); - } - } - } catch (Exception e) { - throw new IllegalStateException("Something corrupt: Cannot read file " + file.getAbsolutePath(), e); - } - visitor.visit(file, packageOfFile, imports); - } - - private String reduceLineWithoutPrefixAndTrailingSemicolon(String trimmedLine, String prefix) { - String reduced = trimmedLine.substring(prefix.length()).trim(); - /* remove ; */ - if (reduced.endsWith(";")) { - reduced = reduced.substring(0, reduced.length() - 1); - } - return reduced.trim(); - } - - public void setVerbose(boolean verbose) { - this.verbose = verbose; - }; -} \ No newline at end of file diff --git a/sechub-testframework/src/test/java/com/mercedesbenz/sechub/test/DomainAccessSourceVisitorTest.java b/sechub-testframework/src/test/java/com/mercedesbenz/sechub/test/DomainAccessSourceVisitorTest.java deleted file mode 100644 index 9968d109fc..0000000000 --- a/sechub-testframework/src/test/java/com/mercedesbenz/sechub/test/DomainAccessSourceVisitorTest.java +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-License-Identifier: MIT -package com.mercedesbenz.sechub.test; - -import static org.junit.Assert.*; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import org.junit.Before; -import org.junit.Test; - -public class DomainAccessSourceVisitorTest { - - private DomainAccessSourceVisitor visitorToTest; - private List packages; - private File sourceFile; - - @Test - public void same_domains_no_problem() { - /* execute */ - visitorToTest.visit(sourceFile, "com.mercedesbenz.sechub.domain.alpha", packages); - - /* test */ - assertTrue(visitorToTest.getProblems().isEmpty()); - - } - - @Test - public void different_domains_2_problem_when_2_imports() { - /* execute */ - visitorToTest.visit(sourceFile, "com.mercedesbenz.sechub.domain.beta", packages); - - /* test */ - assertEquals(2, visitorToTest.getProblems().size()); - - } - - @Before - public void before() { - packages = new ArrayList<>(); - sourceFile = new File("."); - - packages.add("com.mercedesbenz.sechub.domain.alpha.centauri"); - packages.add("com.mercedesbenz.sechub.domain.alpha.else"); - - visitorToTest = new DomainAccessSourceVisitor(); - } - -} diff --git a/sechub-webui/src/main/java/com/mercedesbenz/sechub/webui/page/user/UserDetailInformationService.java b/sechub-webui/src/main/java/com/mercedesbenz/sechub/webui/page/user/UserDetailInformationService.java index 83c8b4d068..3400bbc5f5 100644 --- a/sechub-webui/src/main/java/com/mercedesbenz/sechub/webui/page/user/UserDetailInformationService.java +++ b/sechub-webui/src/main/java/com/mercedesbenz/sechub/webui/page/user/UserDetailInformationService.java @@ -3,12 +3,15 @@ import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.crypto.factory.PasswordEncoderFactories; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @Service public class UserDetailInformationService { public UserDetails getUser() { /* FIXME Albert Tregnaghi, 2024-02-28:implement real user management */ - return User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build(); + PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); + return User.builder().passwordEncoder(encoder::encode).username("user").password("password").roles("USER").build(); } } \ No newline at end of file diff --git a/sechub-wrapper-checkmarx/src/main/java/com/mercedesbenz/sechub/wrapper/checkmarx/cli/CheckmarxWrapperCLI.java b/sechub-wrapper-checkmarx/src/main/java/com/mercedesbenz/sechub/wrapper/checkmarx/cli/CheckmarxWrapperCLI.java index 756487090d..0de95a4eb4 100644 --- a/sechub-wrapper-checkmarx/src/main/java/com/mercedesbenz/sechub/wrapper/checkmarx/cli/CheckmarxWrapperCLI.java +++ b/sechub-wrapper-checkmarx/src/main/java/com/mercedesbenz/sechub/wrapper/checkmarx/cli/CheckmarxWrapperCLI.java @@ -31,7 +31,6 @@ public void run(String... args) throws Exception { storageService.store(result); } catch (Exception e) { - System.out.println("Execution failed - " + e.getMessage()); LOG.error("Execution failed", e); System.exit(2); diff --git a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/AbstractPrepareWrapperModule.java b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/AbstractPrepareWrapperModule.java index 2ba00217e8..9c1a4bd67e 100644 --- a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/AbstractPrepareWrapperModule.java +++ b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/AbstractPrepareWrapperModule.java @@ -31,7 +31,7 @@ protected void ensureDirectoryExists(Path path) { try { Files.createDirectories(path); } catch (IOException e) { - throw new RuntimeException("Error while creating download directory: " + path, e); + throw new IllegalStateException("Error while creating download directory: " + path, e); } } diff --git a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/PrepareWrapperModule.java b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/PrepareWrapperModule.java index f43f2cc323..60ca9edffb 100644 --- a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/PrepareWrapperModule.java +++ b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/PrepareWrapperModule.java @@ -3,11 +3,8 @@ import java.io.IOException; -import org.springframework.stereotype.Service; - import com.mercedesbenz.sechub.wrapper.prepare.PrepareWrapperContext; -@Service public interface PrepareWrapperModule { /** diff --git a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/git/GitPrepareWrapperModule.java b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/git/GitPrepareWrapperModule.java index 016c829339..56a2545c98 100644 --- a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/git/GitPrepareWrapperModule.java +++ b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/git/GitPrepareWrapperModule.java @@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import com.mercedesbenz.sechub.commons.model.SecHubMessage; import com.mercedesbenz.sechub.commons.model.SecHubMessageType; @@ -31,7 +31,7 @@ import com.mercedesbenz.sechub.wrapper.prepare.upload.PrepareWrapperUploadException; import com.mercedesbenz.sechub.wrapper.prepare.upload.PrepareWrapperUploadService; -@Service +@Component public class GitPrepareWrapperModule extends AbstractPrepareWrapperModule { private static final Logger LOG = LoggerFactory.getLogger(GitPrepareWrapperModule.class); @@ -157,7 +157,7 @@ protected void assertDownloadSuccessful(GitContext gitContext) { } else { LOG.error("Download of git repository was not successful. Git download directory is not a directory: {}", path); - throw new RuntimeException("Download of git repository was not successful. Git download directory is not a directory."); + throw new IllegalStateException("Download of git repository was not successful. Git download directory is not a directory."); } } diff --git a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/skopeo/SkopeoPrepareWrapperModule.java b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/skopeo/SkopeoPrepareWrapperModule.java index 210c676a6f..5356e97bdd 100644 --- a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/skopeo/SkopeoPrepareWrapperModule.java +++ b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/skopeo/SkopeoPrepareWrapperModule.java @@ -15,7 +15,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import com.mercedesbenz.sechub.commons.model.SecHubRemoteCredentialConfiguration; import com.mercedesbenz.sechub.commons.model.SecHubRemoteCredentialUserData; @@ -28,7 +28,7 @@ import com.mercedesbenz.sechub.wrapper.prepare.upload.PrepareWrapperUploadException; import com.mercedesbenz.sechub.wrapper.prepare.upload.PrepareWrapperUploadService; -@Service +@Component public class SkopeoPrepareWrapperModule extends AbstractPrepareWrapperModule { private static final Logger LOG = LoggerFactory.getLogger(SkopeoPrepareWrapperModule.class); diff --git a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/test/IntegrationTestPrepareWrapperModule.java b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/test/IntegrationTestPrepareWrapperModule.java index bf59ab7e47..e383e94792 100644 --- a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/test/IntegrationTestPrepareWrapperModule.java +++ b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/modules/test/IntegrationTestPrepareWrapperModule.java @@ -8,7 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import com.mercedesbenz.sechub.commons.TextFileWriter; import com.mercedesbenz.sechub.commons.model.SecHubRemoteDataConfiguration; @@ -17,7 +17,7 @@ import com.mercedesbenz.sechub.wrapper.prepare.modules.AbstractPrepareWrapperModule; import com.mercedesbenz.sechub.wrapper.prepare.upload.PrepareWrapperUploadService; -@Service +@Component @Profile(PDSProfiles.INTEGRATIONTEST) /** * Special integration test prepare wrapper module. Is always active in profile diff --git a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/upload/PrepareWrapperArchiveCreator.java b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/upload/PrepareWrapperArchiveCreator.java index 58cfddbe54..67cacf302c 100644 --- a/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/upload/PrepareWrapperArchiveCreator.java +++ b/sechub-wrapper-prepare/src/main/java/com/mercedesbenz/sechub/wrapper/prepare/upload/PrepareWrapperArchiveCreator.java @@ -4,14 +4,14 @@ import java.io.IOException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import com.mercedesbenz.sechub.commons.archive.ArchiveSupport; import com.mercedesbenz.sechub.commons.model.SecHubConfigurationModel; import com.mercedesbenz.sechub.wrapper.prepare.PrepareWrapperContext; import com.mercedesbenz.sechub.wrapper.prepare.modules.PrepareToolContext; -@Service +@Component public class PrepareWrapperArchiveCreator { @Autowired diff --git a/settings.gradle b/settings.gradle index aa295cf046..2b5c400749 100644 --- a/settings.gradle +++ b/settings.gradle @@ -33,6 +33,9 @@ include 'sechub-cli', /* integration test*/ 'sechub-integrationtest', +/* Arch Unit */ +'sechub-archunit-test', + /* server parts */ 'sechub-schedule', 'sechub-scan', @@ -111,6 +114,8 @@ include 'sechub-cli', 'sechub-webui', 'sechub-webui-solution' + + buildCache { def useTempCache = System.getenv('SECHUB_BUILD_USE_TMP_CACHE')