Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 47 additions & 1 deletion src/test/java/org/spdx/tools/SpdxConverterTestV3.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,23 @@
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

import org.junit.After;
import org.junit.Before;
import org.spdx.core.DefaultModelStore;
import org.spdx.core.InvalidSPDXAnalysisException;
import org.spdx.library.ModelCopyManager;
import org.spdx.library.SpdxModelFactory;
import org.spdx.library.model.v3_0_1.SpdxConstantsV3;
import org.spdx.library.model.v3_0_1.core.Element;
import org.spdx.library.model.v3_0_1.core.Hash;
import org.spdx.library.model.v3_0_1.core.HashAlgorithm;
import org.spdx.library.model.v3_0_1.core.NamespaceMap;
import org.spdx.library.model.v3_0_1.core.SpdxDocument;
import org.spdx.library.model.v3_0_1.software.SpdxFile;
import org.spdx.library.model.v3_0_1.software.SpdxPackage;
import org.spdx.library.model.v3_0_1.software.Snippet;
import org.spdx.storage.simple.InMemSpdxStore;
import org.spdx.tools.SpdxToolsHelper.SerFileType;
import org.spdx.utility.compare.SpdxCompareException;
Expand Down Expand Up @@ -116,7 +121,48 @@ public void testV2JsonToV3JsonLD() throws SpdxConverterException, InvalidSPDXAna
assertTrue(map.isPresent());
assertEquals("http://spdx.org/spdxdocs/spdx-tools-v1.2-3F2504E0-4F89-41D3-9A0C-0305E82C3301#", map.get().getNamespace());
assertEquals("DocumentRef-spdx-tool-1.2", map.get().getPrefix());
// TODO: create a more extensive set of checks

// Snippet fidelity. Expected values are SPDXRef-Snippet's fields in SPDXJSONExample-v2.3.spdx.json.
List<Snippet> resultSnippets = SpdxModelFactory.getSpdxObjects(resultDoc.getModelStore(), null,
SpdxConstantsV3.SOFTWARE_SNIPPET, null, null)
.map(o -> (Snippet)o).collect(Collectors.toList());
assertEquals(1, resultSnippets.size());
Snippet resultSnippet = resultSnippets.get(0);
assertEquals("from linux kernel", resultSnippet.getName().get());
assertEquals("Copyright 2008-2010 John Smith", resultSnippet.getCopyrightText().get());
// byte offset range (ranges[0]) and line number range (ranges[1]) from the source snippet
assertEquals(Integer.valueOf(310), resultSnippet.getByteRange().get().getBeginIntegerRange());
assertEquals(Integer.valueOf(420), resultSnippet.getByteRange().get().getEndIntegerRange());
assertEquals(Integer.valueOf(5), resultSnippet.getLineRange().get().getBeginIntegerRange());
assertEquals(Integer.valueOf(23), resultSnippet.getLineRange().get().getEndIntegerRange());
assertNotNull(resultSnippet.getSnippetFromFile());

// File checksum fidelity.
// TODO: package checksums don't carry over as Hash verifiedUsings on the v3 Package
// (only PackageVerificationCode does) - fix in SpdxConverter/Spdx2to3Converter, then assert here too.
List<Hash> resultFileHashes = resultFile.getVerifiedUsings().stream()
.filter(im -> im instanceof Hash).map(im -> (Hash)im).collect(Collectors.toList());
Optional<Hash> resultSha1 = resultFileHashes.stream()
.filter(h -> {
try {
return HashAlgorithm.SHA1.equals(h.getAlgorithm());
} catch (InvalidSPDXAnalysisException e) {
throw new RuntimeException(e);
}
}).findFirst();
assertTrue(resultSha1.isPresent());
assertEquals("d6a770ba38583ed4bb4525bd96e50461655d2758", resultSha1.get().getHashValue());
assertEquals("Copyright 2008-2010 John Smith", resultPackage.getCopyrightText().get());

// Annotation count survives conversion (3 doc-level + 1 package + 1 file).
long resultAnnotationCount = SpdxModelFactory.getSpdxObjects(resultDoc.getModelStore(), null,
SpdxConstantsV3.CORE_ANNOTATION, null, null).count();
assertEquals(5, resultAnnotationCount);

// Relationship count: converter also synthesizes license/distribution relationships, so assert a floor.
long resultRelationshipCount = SpdxModelFactory.getSpdxObjects(resultDoc.getModelStore(), null,
SpdxConstantsV3.CORE_RELATIONSHIP, null, null).count();
assertTrue(resultRelationshipCount >= 7);
}

}
Loading