Skip to content

Commit c39d4e7

Browse files
committed
Update MontioredArtifact to not take an optional parameter. Change ScannerModule to use local date. Add unit test for created date delay
1 parent 1b145ba commit c39d4e7

4 files changed

Lines changed: 39 additions & 13 deletions

File tree

core/src/main/java/io/snyk/plugins/artifactory/model/MonitoredArtifact.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public class MonitoredArtifact {
2222

2323
private final Ignores ignores;
2424

25-
private final Optional<Instant> createdDate;
25+
private final Instant createdDate;
2626

2727
public MonitoredArtifact(String path, TestResult testResult, Ignores ignores) {
28-
this(path, testResult, ignores, Optional.empty());
28+
this(path, testResult, ignores, null);
2929
}
3030

31-
public MonitoredArtifact(String path, TestResult testResult, Ignores ignores, Optional<Instant> createdDate) {
31+
public MonitoredArtifact(String path, TestResult testResult, Ignores ignores, Instant createdDate) {
3232
this.path = path;
3333
this.testResult = testResult;
3434
this.ignores = ignores;
@@ -48,7 +48,7 @@ public Ignores getIgnores() {
4848
}
4949

5050
public Optional<Instant> getCreatedDate() {
51-
return createdDate;
51+
return Optional.ofNullable(createdDate);
5252
}
5353

5454
public MonitoredArtifact write(ArtifactProperties properties) {

core/src/main/java/io/snyk/plugins/artifactory/model/ValidationSettings.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ public class ValidationSettings {
1313

1414
private final Optional<Severity> vulnSeverityThreshold;
1515
private final Optional<Severity> licenseSeverityThreshold;
16-
private final int createdDelayDays;
16+
private final Optional<int> createdDelayDays;
1717

1818
public ValidationSettings() {
19-
this(Optional.of(Severity.HIGH), Optional.of(Severity.HIGH), 0);
19+
this(Optional.of(Severity.HIGH), Optional.of(Severity.HIGH), Optional.of(0));
2020
}
2121

22-
private ValidationSettings(Optional<Severity> vulnSeverityThreshold, Optional<Severity> licenseSeverityThreshold, int createdDelayDays) {
22+
private ValidationSettings(Optional<Severity> vulnSeverityThreshold, Optional<Severity> licenseSeverityThreshold, Optional<int> createdDelayDays) {
2323
this.vulnSeverityThreshold = vulnSeverityThreshold;
2424
this.licenseSeverityThreshold = licenseSeverityThreshold;
2525
this.createdDelayDays = createdDelayDays;
@@ -33,7 +33,7 @@ public ValidationSettings withLicenseSeverityThreshold(Optional<Severity> thresh
3333
return new ValidationSettings(vulnSeverityThreshold, threshold, createdDelayDays);
3434
}
3535

36-
public ValidationSettings withCreatedDelayDays(int days) {
36+
public ValidationSettings withCreatedDelayDays(Optional<int> days) {
3737
return new ValidationSettings(vulnSeverityThreshold, licenseSeverityThreshold, days);
3838
}
3939

@@ -45,7 +45,7 @@ public Optional<Severity> getLicenseSeverityThreshold() {
4545
return licenseSeverityThreshold;
4646
}
4747

48-
public int getCreatedDelayDays() {
48+
public Optional<int> getCreatedDelayDays() {
4949
return createdDelayDays;
5050
}
5151

core/src/main/java/io/snyk/plugins/artifactory/scanner/ScannerModule.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import javax.annotation.Nonnull;
2222
import java.time.Duration;
2323
import java.time.Instant;
24-
import java.util.Date;
24+
import java.util.LocalDate;
2525
import java.util.Optional;
2626

2727
import static java.util.Objects.requireNonNull;
@@ -105,13 +105,13 @@ private Optional<Instant> getCreatedDate(RepoPath repoPath) {
105105
try {
106106
ItemInfo itemInfo = repositories.getItemInfo(repoPath);
107107
if (itemInfo != null) {
108-
Date created = new Date(itemInfo.getCreated());
108+
LocalDate created = Instant.ofEpochMilli(createdDate).atZone(ZoneId.systemDefault()).toLocalDate();
109109
if (created != null) {
110-
return Optional.of(created.toInstant());
110+
return Optional.of(created.atStartOfDay(ZoneId.systemDefault()).toInstant(););
111111
}
112112
}
113113
} catch (Exception e) {
114-
LOG.debug("Could not retrieve created date for {}: {}", repoPath, e.getMessage());
114+
LOG.debug("Could not retrieve created date for {}: {}", repoPath, e);
115115
}
116116
return Optional.empty();
117117
}

core/src/test/java/io/snyk/plugins/artifactory/scanner/PackageValidatorTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.junit.jupiter.api.Test;
77

88
import java.net.URI;
9+
import java.time.Instant;
910
import java.util.Optional;
1011
import java.util.stream.Stream;
1112

@@ -141,4 +142,29 @@ void validate_includesSnykDetailsUrlInCancelException() {
141142
.isExactlyInstanceOf(CancelException.class)
142143
.hasMessageContaining("https://snyk.io/package/details");
143144
}
145+
146+
@Test
147+
void validate_includesCreatedDateDelay() {
148+
int createdDelayDays = 14
149+
ValidationSettings settings = new ValidationSettings()
150+
.withCreatedDelayDays(createdDelayDays)
151+
.withVulnSeverityThreshold(Optional.empty())
152+
.withLicenseSeverityThreshold(Optional.empty());
153+
154+
PackageValidator validator = new PackageValidator(settings);
155+
156+
MonitoredArtifact artifact = new MonitoredArtifact("",
157+
new TestResult(
158+
IssueSummary.from(Stream.of(Severity.LOW)),
159+
IssueSummary.from(Stream.empty()),
160+
URI.create("https://snyk.io/package/details")
161+
),
162+
new Ignores()
163+
Instant.now()
164+
);
165+
166+
assertThatThrownBy(() -> validator.validate(artifact))
167+
.isExactlyInstanceOf(CancelException.class)
168+
.hasMessageContaining(format("Artifact was created 0 days ago, which is less than the configured delay of %d days", createdDelayDays))
169+
}
144170
}

0 commit comments

Comments
 (0)