Skip to content

Commit 51516d7

Browse files
authored
Merge pull request #203 from tommylehmann/fix/202-referenceUrl_not_correct
Add fix for reference URL calculation and add/change coresponding tests
2 parents 2acfc35 + df6452d commit 51516d7

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

src/main/java/de/bsi/secvisogram/csaf_cms_backend/json/AdvisoryWrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ public String getDocumentPublisherName() {
511511
*/
512512
public String getDocumentDistributionTlp() {
513513

514-
JsonNode tlpNode = this.at("/csaf/document/distribution/tlp");
514+
JsonNode tlpNode = this.at("/csaf/document/distribution/tlp/label");
515515
return (tlpNode.isMissingNode()) ? null : tlpNode.asText();
516516
}
517517

@@ -922,7 +922,7 @@ String calculateReferenceUrl(String baseUrl, String trackingId) {
922922
int year = calculatePublishYear();
923923
String fileName = calculateFileName(trackingId);
924924
String tlpLabel = getDocumentDistributionTlp() != null ? getDocumentDistributionTlp() : "WHITE";
925-
return baseUrl + "/" + tlpLabel + "/" + year + "/" + fileName;
925+
return baseUrl + "/" + tlpLabel.toLowerCase() + "/" + year + "/" + fileName;
926926
}
927927

928928
/**

src/test/java/de/bsi/secvisogram/csaf_cms_backend/json/AdvisoryWrapperTest.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,10 +606,39 @@ public void setFinalTrackingIdTest() throws IOException, CsafException {
606606
advisory.setFinalTrackingIdAndUrl("https://example.com", "example", "5", 158L);
607607
long year = ZonedDateTime.now().getYear();
608608
assertEquals("example-" + year + "-00158", advisory.getDocumentTrackingId());
609-
assertEquals("https://example.com/WHITE/" + year + "/example-" + year + "-00158.json", advisory.at("/csaf/document/references/0/url").asText());
609+
assertEquals("https://example.com/white/" + year + "/example-" + year + "-00158.json", advisory.at("/csaf/document/references/0/url").asText());
610610
assertEquals("URL generated by system", advisory.at("/csaf/document/references/0/summary").asText());
611611
assertEquals("self", advisory.at("/csaf/document/references/0/category").asText());
612612
assertEquals("tempExamle-TEMP-0000123", advisory.getTempTrackingIdInFromMeta());
613613
}
614614

615+
@Test
616+
@SuppressFBWarnings(value = "CE_CLASS_ENVY", justification = "Only for Test")
617+
public void setFinalTrackingIdTest_label_not_null() throws IOException, CsafException {
618+
619+
final String TLP_LABEL = "AMBER";
620+
621+
var csafJsonWithReleaseDate = """
622+
{ "document": {
623+
"distribution": {
624+
"tlp": {
625+
"label": "%s"
626+
}
627+
},
628+
"publisher": {
629+
"name": "Red flag company"
630+
}
631+
}
632+
}""".formatted(TLP_LABEL);
633+
634+
AdvisoryWrapper advisory = AdvisoryWrapper.createNewFromCsaf(csafToRequest(csafJsonWithReleaseDate), "Mustermann", Semantic.name());
635+
advisory.setTemporaryTrackingId("tempExamle", "7", 123L);
636+
advisory.setFinalTrackingIdAndUrl("https://example.com", "example", "5", 158L);
637+
long year = ZonedDateTime.now().getYear();
638+
assertEquals("example-" + year + "-00158", advisory.getDocumentTrackingId());
639+
assertEquals("https://example.com/" + TLP_LABEL.toLowerCase() + "/" + year + "/example-" + year + "-00158.json", advisory.at("/csaf/document/references/0/url").asText());
640+
assertEquals("URL generated by system", advisory.at("/csaf/document/references/0/summary").asText());
641+
assertEquals("self", advisory.at("/csaf/document/references/0/category").asText());
642+
assertEquals("tempExamle-TEMP-0000123", advisory.getTempTrackingIdInFromMeta());
643+
}
615644
}

0 commit comments

Comments
 (0)