diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/helm/HelmUrlUpdater.java b/cli/src/main/java/com/devonfw/tools/ide/tool/helm/HelmUrlUpdater.java
index 7bdcbf6fa..8f4311f4e 100644
--- a/cli/src/main/java/com/devonfw/tools/ide/tool/helm/HelmUrlUpdater.java
+++ b/cli/src/main/java/com/devonfw/tools/ide/tool/helm/HelmUrlUpdater.java
@@ -47,6 +47,11 @@ public String mapUrlVersionToCpeVersion(String version) {
return version.substring(getVersionPrefixToRemove().length());
}
+ public String mapCpeVersionToUrlVersion(String version) {
+
+ return getVersionPrefixToRemove() + version;
+ }
+
@Override
protected void addVersion(UrlVersion urlVersion) {
diff --git a/cli/src/main/java/com/devonfw/tools/ide/url/updater/AbstractUrlUpdater.java b/cli/src/main/java/com/devonfw/tools/ide/url/updater/AbstractUrlUpdater.java
index 5803708fa..0e6cec0d1 100644
--- a/cli/src/main/java/com/devonfw/tools/ide/url/updater/AbstractUrlUpdater.java
+++ b/cli/src/main/java/com/devonfw/tools/ide/url/updater/AbstractUrlUpdater.java
@@ -105,6 +105,7 @@ public String getCpeVendor() {
return null;
}
+
/***
* @return the product name of the tool as specified in the CPE (Common Platform Enumeration)
*/
@@ -121,15 +122,23 @@ public String getCpeEdition() {
return null;
}
- /***
+ /**
* @return maps the version as specified by the directory name in the url repository to the version as specified in
- * the CPE (Common Platform Enumeration).
+ * the CPE (Common Platform Enumeration).
*/
public String mapUrlVersionToCpeVersion(String version) {
return version;
}
+ /**
+ * @return maps the cpe version to the version as specified in the CPE (Common Platform Enumeration).
+ */
+ public String mapCpeVersionToUrlVersion(String version) {
+
+ return version;
+ }
+
/**
* Retrieves the response body from a given URL.
*
@@ -294,9 +303,9 @@ private boolean isValidDownload(String url, String tool, String version, HttpRes
if (isSuccess(response)) {
String contentType = response.headers().firstValue("content-type").orElse("undefined");
boolean isValidContentType = isValidContentType(contentType);
- if (!isValidContentType){
+ if (!isValidContentType) {
logger.error("For tool {} and version {} the download has an invalid content type {} for URL {}", tool, version,
- contentType, url);
+ contentType, url);
return false;
}
return true;
@@ -306,7 +315,8 @@ private boolean isValidDownload(String url, String tool, String version, HttpRes
}
/**
- * Checks if the content type was not of type text (this method is required because {@link com.devonfw.tools.ide.tool.pip.PipUrlUpdater} returns text and needs to be overridden)
+ * Checks if the content type was not of type text (this method is required because
+ * {@link com.devonfw.tools.ide.tool.pip.PipUrlUpdater} returns text and needs to be overridden)
*
* See: #1343 for reference.
*
@@ -351,7 +361,7 @@ private boolean checkDownloadUrl(String url, UrlVersion urlVersion, OperatingSys
if (success) {
if (checksum == null || checksum.isEmpty()) {
String contentType = response.headers().firstValue("content-type").orElse("undefined");
- checksum = doGenerateChecksum(doGetResponseAsStream( url), url, version, contentType);
+ checksum = doGenerateChecksum(doGetResponseAsStream(url), url, version, contentType);
}
success = isChecksumStillValid(url, urlVersion, os, architecture, checksum, tool, version);
@@ -472,8 +482,8 @@ private void doUpdateStatusJson(boolean success, int statusCode, UrlVersion urlV
modified = true;
}
- logger.info("For tool {} and version {} the download verification succeeded with status code {} for URL {}.", tool,
- version, code, url);
+ logger.info("For tool {} and version {} the download verification succeeded with status code {} for URL {}.",
+ tool, version, code, url);
} else {
if (status != null) {
if (errorStatus == null) {
diff --git a/cli/src/main/java/com/devonfw/tools/ide/version/VersionIdentifier.java b/cli/src/main/java/com/devonfw/tools/ide/version/VersionIdentifier.java
index 797ee49e2..f7f9d3631 100644
--- a/cli/src/main/java/com/devonfw/tools/ide/version/VersionIdentifier.java
+++ b/cli/src/main/java/com/devonfw/tools/ide/version/VersionIdentifier.java
@@ -1,5 +1,8 @@
package com.devonfw.tools.ide.version;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
import java.util.Objects;
/**
@@ -191,6 +194,7 @@ public boolean equals(Object obj) {
}
@Override
+ @JsonSerialize
public String toString() {
StringBuilder sb = new StringBuilder();
@@ -206,6 +210,7 @@ public String toString() {
* @param version the {@link #toString() string representation} of the {@link VersionIdentifier} to parse.
* @return the parsed {@link VersionIdentifier}.
*/
+ @JsonCreator
public static VersionIdentifier of(String version) {
if (version.equals("latest")) {
diff --git a/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java b/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java
index 8f19dd228..8cd63029d 100644
--- a/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java
+++ b/cli/src/main/java/com/devonfw/tools/ide/version/VersionRange.java
@@ -18,13 +18,47 @@ public final class VersionRange implements Comparable {
private final boolean rightIsExclusive;
+ private static final String VERSION_SEPARATOR = ">";
+
+ private static final String START_EXCLUDING_PREFIX = "(";
+
+ private static final String START_INCLUDING_PREFIX = "[";
+
+ private static final String END_EXCLUDING_SUFFIX = ")";
+
+ private static final String END_INCLUDING_SUFFIX = "]";
+
+ public static String getVersionSeparator() {
+
+ return VERSION_SEPARATOR;
+ }
+
+ public static String getStartExcludingPrefix() {
+
+ return START_EXCLUDING_PREFIX;
+ }
+
+ public static String getStartIncludingPrefix() {
+
+ return START_INCLUDING_PREFIX;
+ }
+
+ public static String getEndExcludingSuffix() {
+
+ return END_EXCLUDING_SUFFIX;
+ }
+
+ public static String getEndIncludingSuffix() {
+
+ return END_INCLUDING_SUFFIX;
+ }
+
/**
* The constructor.
*
* @param min the {@link #getMin() minimum}.
- * @param max the {@link #getMax() maximum} (including).
+ * @param max the {@link #getMax() maximum}.
*/
-
public VersionRange(VersionIdentifier min, VersionIdentifier max) {
super();
@@ -71,7 +105,6 @@ public VersionRange(VersionIdentifier min, VersionIdentifier max, boolean leftIs
/**
* @return the minimum {@link VersionIdentifier} or {@code null} for no lower bound.
*/
- // @JsonBackReference
public VersionIdentifier getMin() {
return this.min;
@@ -80,7 +113,6 @@ public VersionIdentifier getMin() {
/**
* @return the maximum {@link VersionIdentifier} or {@code null} for no upper bound.
*/
- // @JsonBackReference
public VersionIdentifier getMax() {
return this.max;
@@ -193,15 +225,15 @@ public boolean equals(Object obj) {
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append(this.leftIsExclusive ? '(' : '[');
+ sb.append(this.leftIsExclusive ? START_EXCLUDING_PREFIX : START_INCLUDING_PREFIX);
if (this.min != null) {
sb.append(this.min);
}
- sb.append('>');
+ sb.append(VERSION_SEPARATOR);
if (this.max != null) {
sb.append(this.max);
}
- sb.append(this.rightIsExclusive ? ')' : ']');
+ sb.append(this.rightIsExclusive ? END_EXCLUDING_SUFFIX : END_INCLUDING_SUFFIX);
return sb.toString();
}
@@ -215,22 +247,22 @@ public static VersionRange of(String value) {
boolean leftIsExclusive = false;
boolean rightIsExclusive = false;
- if (value.startsWith("(")) {
+ if (value.startsWith(START_EXCLUDING_PREFIX)) {
leftIsExclusive = true;
- value = value.substring(1);
+ value = value.substring(START_EXCLUDING_PREFIX.length());
}
- if (value.startsWith("[")) {
- value = value.substring(1);
+ if (value.startsWith(START_INCLUDING_PREFIX)) {
+ value = value.substring(START_INCLUDING_PREFIX.length());
}
- if (value.endsWith(")")) {
+ if (value.endsWith(END_EXCLUDING_SUFFIX)) {
rightIsExclusive = true;
- value = value.substring(0, value.length() - 1);
+ value = value.substring(0, value.length() - END_EXCLUDING_SUFFIX.length());
}
- if (value.endsWith("]")) {
- value = value.substring(0, value.length() - 1);
+ if (value.endsWith(END_INCLUDING_SUFFIX)) {
+ value = value.substring(0, value.length() - END_EXCLUDING_SUFFIX.length());
}
- int index = value.indexOf('>');
+ int index = value.indexOf(VERSION_SEPARATOR);
if (index == -1) {
return null; // log warning?
}
diff --git a/security/pom.xml b/security/pom.xml
index 4838fe849..369d05e9a 100644
--- a/security/pom.xml
+++ b/security/pom.xml
@@ -31,5 +31,17 @@
compile
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 9
+ 9
+
+
+
+
\ No newline at end of file
diff --git a/security/src/main/java/com/devonfw/tools/security/BuildSecurityJsonFile.java b/security/src/main/java/com/devonfw/tools/security/BuildSecurityJsonFile.java
index 6ed39c476..640571c4e 100644
--- a/security/src/main/java/com/devonfw/tools/security/BuildSecurityJsonFile.java
+++ b/security/src/main/java/com/devonfw/tools/security/BuildSecurityJsonFile.java
@@ -3,10 +3,10 @@
import java.math.BigDecimal;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -50,7 +50,6 @@
import com.devonfw.tools.ide.url.model.file.UrlSecurityJsonFile;
import com.devonfw.tools.ide.url.updater.AbstractUrlUpdater;
import com.devonfw.tools.ide.url.updater.UpdateManager;
-import com.devonfw.tools.ide.version.VersionIdentifier;
import com.devonfw.tools.ide.version.VersionRange;
// TODO Doesn't yet work with versions defined like this ///latest
@@ -126,14 +125,9 @@ private static void run() {
securityFile.clearSecurityWarnings();
}
- List sortedVersions = context.getUrls().getSortedVersions(tool, edition);
- List sortedCpeVersions = sortedVersions.stream().map(VersionIdentifier::toString)
- .map(urlUpdater::mapUrlVersionToCpeVersion).map(VersionIdentifier::of)
- .collect(Collectors.toCollection(ArrayList::new));
-
Set vulnerabilities = dependency.getVulnerabilities(true);
for (Vulnerability vulnerability : vulnerabilities) {
- addVulnerabilityToSecurityFile(vulnerability, securityFile, sortedVersions, sortedCpeVersions);
+ addVulnerabilityToSecurityFile(vulnerability, securityFile, urlUpdater);
}
securityFile.save();
}
@@ -165,7 +159,7 @@ private static Dependency[] getDependenciesWithVulnerabilities(UpdateManager upd
}
private static void addVulnerabilityToSecurityFile(Vulnerability vulnerability, UrlSecurityJsonFile securityFile,
- List sortedVersions, List sortedCpeVersions) {
+ AbstractUrlUpdater urlUpdater) {
if (vulnerability.getCvssV2() == null && vulnerability.getCvssV3() == null) {
// if this ever happens, add a case that handles this
@@ -196,7 +190,7 @@ private static void addVulnerabilityToSecurityFile(Vulnerability vulnerability,
if (toLowSeverity) {
return;
}
- VersionRange versionRange = getVersionRangeFromVulnerability(sortedVersions, sortedCpeVersions, vulnerability);
+ VersionRange versionRange = getVersionRangeFromVulnerability(vulnerability, urlUpdater);
if (versionRange == null) {
logger.info(
"Vulnerability {} seems to be irrelevant because its affected versions have no overlap with the versions "
@@ -223,125 +217,61 @@ private static void addVulnerabilityToSecurityFile(Vulnerability vulnerability,
/***
* From the vulnerability determine the {@link VersionRange versionRange} to which the vulnerability applies.
*
- * @param sortedVersions sorted versions of the tool available through IDEasy.
- * @param sortedCpeVersions sorted versions of the tool. Must match the format of the CPE versions. See
- * {@link AbstractUrlUpdater#mapUrlVersionToCpeVersion(String)}.
* @param vulnerability the vulnerability determined by OWASP dependency check.
+ * @param urlUpdater the {@link AbstractUrlUpdater} of the tool to which the vulnerability applies. TODOO
* @return the {@link VersionRange versionRange} to which the vulnerability applies.
*/
- static VersionRange getVersionRangeFromVulnerability(List sortedVersions,
- List sortedCpeVersions, Vulnerability vulnerability) {
+ static VersionRange getVersionRangeFromVulnerability(Vulnerability vulnerability, AbstractUrlUpdater urlUpdater) {
VulnerableSoftware matchedVulnerableSoftware = vulnerability.getMatchedVulnerableSoftware();
- String vEndExcluding = matchedVulnerableSoftware.getVersionEndExcluding();
- String vEndIncluding = matchedVulnerableSoftware.getVersionEndIncluding();
+
String vStartExcluding = matchedVulnerableSoftware.getVersionStartExcluding();
String vStartIncluding = matchedVulnerableSoftware.getVersionStartIncluding();
+ String vEndExcluding = matchedVulnerableSoftware.getVersionEndExcluding();
+ String vEndIncluding = matchedVulnerableSoftware.getVersionEndIncluding();
+ String singleVersion = matchedVulnerableSoftware.getVersion();
- if (vEndExcluding == null && vEndIncluding == null && vStartExcluding == null && vStartIncluding == null) {
- String singleAffectedVersion = vulnerability.getMatchedVulnerableSoftware().getVersion();
- return VersionRange.of(singleAffectedVersion + ">" + singleAffectedVersion);
- }
-
- return getVersionRangeFromInterval(sortedVersions, sortedCpeVersions, vStartExcluding, vStartIncluding,
- vEndIncluding, vEndExcluding);
- }
-
- static VersionRange getVersionRangeFromInterval(List sortedVersions, String vStartExcluding,
- String vStartIncluding, String vEndIncluding, String vEndExcluding) {
-
- return getVersionRangeFromInterval(sortedVersions, sortedVersions, vStartExcluding, vStartIncluding, vEndIncluding,
- vEndExcluding);
- }
+ vEndExcluding = Optional.ofNullable(vEndExcluding).map(urlUpdater::mapCpeVersionToUrlVersion).orElse(null);
+ vEndIncluding = Optional.ofNullable(vEndIncluding).map(urlUpdater::mapCpeVersionToUrlVersion).orElse(null);
+ vStartExcluding = Optional.ofNullable(vStartExcluding).map(urlUpdater::mapCpeVersionToUrlVersion).orElse(null);
+ vStartIncluding = Optional.ofNullable(vStartIncluding).map(urlUpdater::mapCpeVersionToUrlVersion).orElse(null);
+ singleVersion = Optional.ofNullable(singleVersion).map(urlUpdater::mapCpeVersionToUrlVersion).orElse(null);
- /***
- * From the interval determine the {@link VersionRange versionRange} to which the vulnerability applies. Since the
- * versions as specified in the vulnerability might not be in the {@code sortedVersions} list, the
- * {@link VersionRange} is determined by finding the versions in the {@code sortedVersions} list that, when selected,
- * cover all affected versions correctly.
- */
- static VersionRange getVersionRangeFromInterval(List sortedVersions,
- List sortedCpeVersions, String vStartExcluding, String vStartIncluding, String vEndIncluding,
- String vEndExcluding) {
-
- VersionIdentifier min = null;
- if (vStartExcluding != null) {
- min = findMinFromStartExcluding(sortedVersions, sortedCpeVersions, vStartExcluding);
- if (min == null) {
- return null;
- }
- } else if (vStartIncluding != null) {
- min = findMinFromStartIncluding(sortedVersions, sortedCpeVersions, vStartIncluding);
- if (min == null) {
- return null;
- }
- }
-
- VersionIdentifier max = null;
- if (vEndIncluding != null) {
- max = findMaxFromEndIncluding(sortedVersions, sortedCpeVersions, vEndIncluding);
- if (max == null) {
- return null;
- }
- } else if (vEndExcluding != null) {
- max = findMaxFromEndExcluding(sortedVersions, sortedCpeVersions, vEndExcluding);
- if (max == null) {
- return null;
- }
+ VersionRange affectedRange = null;
+ try {
+ affectedRange = getVersionRangeFromInterval(vStartIncluding, vStartExcluding, vEndExcluding, vEndIncluding,
+ singleVersion);
+ } catch (IllegalStateException e) {
+ throw new IllegalStateException(
+ "Getting the VersionRange for the vulnerability " + vulnerability.getName() + " failed.", e);
}
- return new VersionRange(min, max);
- }
- private static VersionIdentifier findMinFromStartExcluding(List sortedVs,
- List sortedCpeVs, String vStartExcluding) {
+ return affectedRange;
- VersionIdentifier startExcl = VersionIdentifier.of(vStartExcluding);
- for (int i = sortedCpeVs.size() - 1; i >= 0; i--) {
- VersionIdentifier version = sortedCpeVs.get(i);
- if (version.isGreater(startExcl) && !version.compareVersion(startExcl).isUnsafe()) {
- return sortedVs.get(i);
- }
- }
- return null;
}
- private static VersionIdentifier findMinFromStartIncluding(List sortedVs,
- List sortedCpeVs, String vStartIncluding) {
+ public static VersionRange getVersionRangeFromInterval(String si, String se, String ee, String ei, String s)
+ throws IllegalStateException {
- VersionIdentifier startIncl = VersionIdentifier.of(vStartIncluding);
- for (int i = sortedCpeVs.size() - 1; i >= 0; i--) {
- VersionIdentifier version = sortedCpeVs.get(i);
- if (version.compareTo(startIncl) >= 0) {
- return sortedVs.get(i);
+ if (ee == null && ei == null && se == null && si == null) {
+ if (s == null) {
+ throw new IllegalStateException(
+ "Vulnerability has no interval of affected versions or single affected version.");
}
+ return VersionRange.of(s + ">" + s);
}
- return null;
- }
+ se = Optional.ofNullable(se).orElse("");
+ si = Optional.ofNullable(si).orElse("");
+ ee = Optional.ofNullable(ee).orElse("");
+ ei = Optional.ofNullable(ei).orElse("");
- private static VersionIdentifier findMaxFromEndIncluding(List sortedVs,
- List sortedCpeVs, String vEndIncluding) {
+ String leftBoundary = se.isEmpty() ? VersionRange.getStartIncludingPrefix() + si
+ : VersionRange.getStartExcludingPrefix() + se;
- VersionIdentifier endIncl = VersionIdentifier.of(vEndIncluding);
- for (int i = 0; i < sortedCpeVs.size(); i++) {
- VersionIdentifier version = sortedCpeVs.get(i);
- if (version.compareTo(endIncl) <= 0) {
- return sortedVs.get(i);
- }
- }
- return null;
- }
+ String rightBoundary = ee.isEmpty() ? ei + VersionRange.getEndIncludingSuffix()
+ : ee + VersionRange.getEndExcludingSuffix();
- private static VersionIdentifier findMaxFromEndExcluding(List sortedVs,
- List sortedCpeVs, String vEndExcluding) {
-
- VersionIdentifier endExl = VersionIdentifier.of(vEndExcluding);
- for (int i = 0; i < sortedCpeVs.size(); i++) {
- VersionIdentifier version = sortedCpeVs.get(i);
- if (version.isLess(endExl)) {
- return sortedVs.get(i);
- }
- }
- return null;
+ return VersionRange.of(leftBoundary + VersionRange.getVersionSeparator() + rightBoundary);
}
private static void printAllOwaspAnalyzers(Engine engine) {
diff --git a/security/src/test/java/com/devonfw/tools/security/BuildSecurityJsonFileTest.java b/security/src/test/java/com/devonfw/tools/security/BuildSecurityJsonFileTest.java
index d8f926483..a36350fa8 100644
--- a/security/src/test/java/com/devonfw/tools/security/BuildSecurityJsonFileTest.java
+++ b/security/src/test/java/com/devonfw/tools/security/BuildSecurityJsonFileTest.java
@@ -1,107 +1,28 @@
package com.devonfw.tools.security;
-import com.devonfw.tools.ide.version.VersionIdentifier;
import com.devonfw.tools.ide.version.VersionRange;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
-import java.util.ArrayList;
-import java.util.List;
-
import static com.devonfw.tools.security.BuildSecurityJsonFile.getVersionRangeFromInterval;
+/**
+ * Test of {@link BuildSecurityJsonFile}.
+ */
public class BuildSecurityJsonFileTest extends Assertions {
- /***
- * Test of {@link BuildSecurityJsonFile#getVersionRangeFromInterval(List, String, String, String, String)} and passing
- * vStartExcluding and null for the other parameters .
+ /**
+ * Test of {@link BuildSecurityJsonFile#getVersionRangeFromInterval(String, String, String, String, String)}.
*/
@Test
- public void testGetVersionRangeFromIntervalStartExcluding() {
-
- // arrange
- List v = getSortedVersions();
+ public void testGetVersionRangeFromInterval() {
// act & assert
- assertThat(getVersionRangeFromInterval(v, null, null, null, null)).isEqualTo(VersionRange.of(">"));
- assertThat(getVersionRangeFromInterval(v, "1", null, null, null)).isEqualTo(VersionRange.of("1.2.3>"));
- assertThat(getVersionRangeFromInterval(v, "1.2.3", null, null, null)).isEqualTo(VersionRange.of("1.2.4>"));
- assertThat(getVersionRangeFromInterval(v, "1.4", null, null, null)).isEqualTo(VersionRange.of("2.0>"));
- assertThat(getVersionRangeFromInterval(v, "1.5", null, null, null)).isEqualTo(VersionRange.of("2.0>"));
- assertThat(getVersionRangeFromInterval(v, "2.1", null, null, null)).isNull();
- assertThat(getVersionRangeFromInterval(v, "2.2", null, null, null)).isNull();
-
- }
- /***
- * Test of {@link BuildSecurityJsonFile#getVersionRangeFromInterval(List, String, String, String, String)} and passing
- * vStartIncluding and null for the other parameters .
- */
- @Test
- public void testGetVersionRangeFromIntervalStartIncluding() {
-
- // arrange
- List v = getSortedVersions();
-
- // act & assert
- assertThat(getVersionRangeFromInterval(v, null, "1", null, null)).isEqualTo(VersionRange.of("1.2.3>"));
- assertThat(getVersionRangeFromInterval(v, null, "1.2.3", null, null)).isEqualTo(VersionRange.of("1.2.3>"));
- assertThat(getVersionRangeFromInterval(v, null, "1.4", null, null)).isEqualTo(VersionRange.of("1.4>"));
- assertThat(getVersionRangeFromInterval(v, null, "1.5", null, null)).isEqualTo(VersionRange.of("2.0>"));
- assertThat(getVersionRangeFromInterval(v, null, "2.1", null, null)).isEqualTo(VersionRange.of("2.1>"));
- assertThat(getVersionRangeFromInterval(v, null, "2.2", null, null)).isNull();
-
- }
-
- /***
- * Test of {@link BuildSecurityJsonFile#getVersionRangeFromInterval(List, String, String, String, String)} and passing
- * vEndIncluding and null for the other parameters .
- */
- @Test
- public void testGetVersionRangeFromIntervalEndIncluding() {
-
- // arrange
- List v = getSortedVersions();
-
- // act & assert
- assertThat(getVersionRangeFromInterval(v, null, null, "1", null)).isNull();
- assertThat(getVersionRangeFromInterval(v, null, null, "1.2.3", null)).isEqualTo(VersionRange.of(">1.2.3"));
- assertThat(getVersionRangeFromInterval(v, null, null, "1.4", null)).isEqualTo(VersionRange.of(">1.4"));
- assertThat(getVersionRangeFromInterval(v, null, null, "1.5", null)).isEqualTo(VersionRange.of(">1.4"));
- assertThat(getVersionRangeFromInterval(v, null, null, "2.1", null)).isEqualTo(VersionRange.of(">2.1"));
- assertThat(getVersionRangeFromInterval(v, null, null, "2.2", null)).isEqualTo(VersionRange.of(">2.1"));
-
- }
-
- /***
- * Test of {@link BuildSecurityJsonFile#getVersionRangeFromInterval(List, String, String, String, String)} and passing
- * vEndExcluding and null for the other parameters .
- */
- @Test
- public void testGetVersionRangeFromIntervalEndExcluding() {
-
- // arrange
- List v = getSortedVersions();
-
- // act & assert
- assertThat(getVersionRangeFromInterval(v, null, null, null, " 1")).isNull();
- assertThat(getVersionRangeFromInterval(v, null, null, null, "1.2.3")).isNull();
- assertThat(getVersionRangeFromInterval(v, null, null, null, "1.4")).isEqualTo(VersionRange.of(">1.3"));
- assertThat(getVersionRangeFromInterval(v, null, null, null, "1.5")).isEqualTo(VersionRange.of(">1.4"));
- assertThat(getVersionRangeFromInterval(v, null, null, null, "2.1")).isEqualTo(VersionRange.of(">2.0"));
- assertThat(getVersionRangeFromInterval(v, null, null, null, "2.2")).isEqualTo(VersionRange.of(">2.1"));
-
- }
-
- private static List getSortedVersions() {
-
- List sortedVersions = new ArrayList<>();
- sortedVersions.add(VersionIdentifier.of("2.1"));
- sortedVersions.add(VersionIdentifier.of("2.0"));
- sortedVersions.add(VersionIdentifier.of("1.4"));
- sortedVersions.add(VersionIdentifier.of("1.3"));
- sortedVersions.add(VersionIdentifier.of("1.2.5"));
- sortedVersions.add(VersionIdentifier.of("1.2.4"));
- sortedVersions.add(VersionIdentifier.of("1.2.3"));
- return sortedVersions;
+ assertThat(getVersionRangeFromInterval("1", null, null, null, null)).isEqualTo(VersionRange.of("1>"));
+ assertThat(getVersionRangeFromInterval(null, "1", null, null, null)).isEqualTo(VersionRange.of("(1>"));
+ assertThat(getVersionRangeFromInterval(null, null, "1", null, null)).isEqualTo(VersionRange.of(">1)"));
+ assertThat(getVersionRangeFromInterval(null, null, null, "1", null)).isEqualTo(VersionRange.of(">1"));
+ assertThat(getVersionRangeFromInterval(null, null, null, null, "1")).isEqualTo(VersionRange.of("1>1"));
+ assertThat(getVersionRangeFromInterval(null, "1", null, "2", "1")).isEqualTo(VersionRange.of("(1>2]"));
}
-}
+}
\ No newline at end of file