issue_896: Fixed issues in one of the test classes, can now test other aspects of the SupplyChainCredentialValidator class. Will add more tests as more issues get fixed.

This commit is contained in:
TheSilentCoder 2025-02-11 18:47:54 -05:00
parent 151c390202
commit 3913a224d5
11 changed files with 379 additions and 251 deletions

View File

@ -1,3 +1,5 @@
# Updated: 02/11/2025
name: Create ACA Docker Image name: Create ACA Docker Image
on: on:
release: release:

View File

@ -1,3 +1,5 @@
# Updated: 02/11/2025
name: Dotnet Provisioner Unit Tests name: Dotnet Provisioner Unit Tests
on: push on: push

View File

@ -1,3 +1,5 @@
# Updated: 02/11/2025
name: HIRS build and packages for Linux name: HIRS build and packages for Linux
on: on:
push: push:

View File

@ -1,10 +1,10 @@
# This workflow will build HIRS, run unit tests, and create HIRS artifacts # This workflow will build HIRS, run unit tests, and create HIRS artifacts
# Updated: 8/15/23 # Updated: 02/11/2025
name: HIRS Build and Unit Test name: HIRS Build and Unit Test
on: on:
# Runs this workflow whenever there is a push to main from a branch annotated with "v4" # Runs this workflow whenever there is a push to main from a branch annotated with "v3"
push: push:
branches: branches:
- '*v3*' - '*v3*'

View File

@ -1,4 +1,6 @@
# workflow is used to run RIM tests # workflow is used to run RIM tests
# Updated: 02/11/2025
name: RIM Test name: RIM Test
on: on:
push: push:

View File

@ -1,6 +1,6 @@
# This workflow will build HIRS, run system tests, and create artifacts consisting of ACA and Provisioner logs. # This workflow will build HIRS, run system tests, and create artifacts consisting of ACA and Provisioner logs.
# Updated: 06/05/2024 # Updated: 02/11/2025
#
name: HIRS System Tests name: HIRS System Tests
on: on:
push: push:

View File

@ -106,7 +106,7 @@ public class ComponentIdentifier {
* @param componentRevision represents the component revision * @param componentRevision represents the component revision
* @param componentManufacturerId represents the component manufacturer ID * @param componentManufacturerId represents the component manufacturer ID
* @param fieldReplaceable represents if the component is replaceable * @param fieldReplaceable represents if the component is replaceable
* @param componentAddress represents a list of addresses * @param componentAddresses represents a list of addresses
*/ */
public ComponentIdentifier(final DERUTF8String componentManufacturer, public ComponentIdentifier(final DERUTF8String componentManufacturer,
final DERUTF8String componentModel, final DERUTF8String componentModel,
@ -114,14 +114,14 @@ public class ComponentIdentifier {
final DERUTF8String componentRevision, final DERUTF8String componentRevision,
final ASN1ObjectIdentifier componentManufacturerId, final ASN1ObjectIdentifier componentManufacturerId,
final ASN1Boolean fieldReplaceable, final ASN1Boolean fieldReplaceable,
final List<ComponentAddress> componentAddress) { final List<ComponentAddress> componentAddresses) {
this.componentManufacturer = componentManufacturer; this.componentManufacturer = componentManufacturer;
this.componentModel = componentModel; this.componentModel = componentModel;
this.componentSerial = componentSerial; this.componentSerial = componentSerial;
this.componentRevision = componentRevision; this.componentRevision = componentRevision;
this.componentManufacturerId = componentManufacturerId; this.componentManufacturerId = componentManufacturerId;
this.fieldReplaceable = fieldReplaceable; this.fieldReplaceable = fieldReplaceable;
this.componentAddresses = componentAddress.stream().toList(); this.componentAddresses = componentAddresses.stream().toList();
} }
/** /**

View File

@ -22,11 +22,11 @@ import java.io.Serializable;
public class HardwareInfo implements Serializable { public class HardwareInfo implements Serializable {
@XmlElement @XmlElement
@Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) @Column(nullable = false)
private String manufacturer = DeviceInfoEnums.NOT_SPECIFIED; private String manufacturer = DeviceInfoEnums.NOT_SPECIFIED;
@XmlElement @XmlElement
@Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) @Column(nullable = false)
private String productName = DeviceInfoEnums.NOT_SPECIFIED; private String productName = DeviceInfoEnums.NOT_SPECIFIED;
@XmlElement @XmlElement
@ -34,15 +34,15 @@ public class HardwareInfo implements Serializable {
private String version = DeviceInfoEnums.NOT_SPECIFIED; private String version = DeviceInfoEnums.NOT_SPECIFIED;
@XmlElement @XmlElement
@Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) @Column(nullable = false)
private String systemSerialNumber = DeviceInfoEnums.NOT_SPECIFIED; private String systemSerialNumber = DeviceInfoEnums.NOT_SPECIFIED;
@XmlElement @XmlElement
@Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) @Column(nullable = false)
private String chassisSerialNumber = DeviceInfoEnums.NOT_SPECIFIED; private String chassisSerialNumber = DeviceInfoEnums.NOT_SPECIFIED;
@XmlElement @XmlElement
@Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) @Column(nullable = false)
private String baseboardSerialNumber = DeviceInfoEnums.NOT_SPECIFIED; private String baseboardSerialNumber = DeviceInfoEnums.NOT_SPECIFIED;
/** /**

View File

@ -190,14 +190,17 @@ public class CredentialValidator extends SupplyChainCredentialValidator {
message = baseErrorMessage + "a platform credential"; message = baseErrorMessage + "a platform credential";
return new AppraisalStatus(FAIL, message); return new AppraisalStatus(FAIL, message);
} }
if (deviceInfoReport == null) { if (deviceInfoReport == null) {
message = baseErrorMessage + "a device info report"; message = baseErrorMessage + "a device info report";
return new AppraisalStatus(FAIL, message); return new AppraisalStatus(FAIL, message);
} }
if (endorsementCredential == null) { if (endorsementCredential == null) {
message = baseErrorMessage + "an endorsement credential"; message = baseErrorMessage + "an endorsement credential";
return new AppraisalStatus(FAIL, message); return new AppraisalStatus(FAIL, message);
} }
if (componentInfos.isEmpty()) { if (componentInfos.isEmpty()) {
message = baseErrorMessage + "a list of device components"; message = baseErrorMessage + "a list of device components";
return new AppraisalStatus(FAIL, message); return new AppraisalStatus(FAIL, message);

View File

@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Objects;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertNull;
@ -16,290 +17,315 @@ public class ComponentClassTest {
private static final String JSON_FILE = "/config/component-class.json"; private static final String JSON_FILE = "/config/component-class.json";
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNoneUNK() throws URISyntaxException { public void testGetComponentNoneUNK() throws URISyntaxException {
String componentIdentifier = "00000001"; final String componentIdentifier = "00000001";
ComponentClass instance = new ComponentClass("TCG", ComponentClass instance = new ComponentClass("TCG",
Paths.get(this.getClass().getResource(JSON_FILE).toURI()), Paths.get(Objects.requireNonNull(this.getClass().getResource(JSON_FILE)).toURI()),
componentIdentifier); componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "Unknown"); assertEquals(resultComponent, "Unknown");
assertEquals(resultCategory, "None"); assertEquals(resultCategory, "None");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNoneOther() throws URISyntaxException { public void testGetComponentNoneOther() throws URISyntaxException {
String componentIdentifier = "00000000"; final String componentIdentifier = "00000000";
ComponentClass instance = new ComponentClass("TCG", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("TCG", Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "Unknown"); assertEquals(resultComponent, "Unknown");
assertEquals(resultCategory, "None"); assertEquals(resultCategory, "None");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentBlank() throws URISyntaxException { public void testGetComponentBlank() throws URISyntaxException {
String componentIdentifier = ""; final String componentIdentifier = "";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "Unknown"); assertEquals(resultComponent, "Unknown");
assertEquals(resultCategory, "None"); assertEquals(resultCategory, "None");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNFEx() throws URISyntaxException { public void testGetComponentNFEx() throws URISyntaxException {
String componentIdentifier = "99999999"; final String componentIdentifier = "99999999";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "Unknown"); assertEquals(resultComponent, "Unknown");
assertEquals(resultCategory, "None"); assertEquals(resultCategory, "None");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNull() throws URISyntaxException { public void testGetComponentNull() throws URISyntaxException {
String componentIdentifier = null; final String componentIdentifier = null;
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "Unknown"); assertEquals(resultComponent, "Unknown");
assertEquals(resultCategory, "None"); assertEquals(resultCategory, "None");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class where the
* registry type is of type TCG.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQueryTCG() throws URISyntaxException { public void testGetComponentStandardQueryTCG() throws URISyntaxException {
String componentIdentifier = "0x00040002"; final String componentIdentifier = "0x00040002";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "SAS Bridgeboard"); assertEquals(resultComponent, "SAS Bridgeboard");
assertEquals(resultCategory, "Modules"); assertEquals(resultCategory, "Modules");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class where the
* registry type is of type SMBIOS.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQuerySMBIOS() throws URISyntaxException { public void testGetComponentStandardQuerySMBIOS() throws URISyntaxException {
String componentIdentifier = "0x00040003"; final String componentIdentifier = "0x00040003";
ComponentClass instance = new ComponentClass("2.23.133.18.3.3", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("2.23.133.18.3.3", Paths.get(
.getResource(JSON_FILE).toURI()), componentIdentifier); Objects.requireNonNull(this.getClass()
String resultCategory = instance.getCategoryStr(); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultComponent = instance.getComponentStr(); final String resultCategory = instance.getCategoryStr();
final String resultComponent = instance.getComponentStr();
final String resultRegistry = instance.getRegistryType();
assertEquals("SMBIOS", resultRegistry);
assertEquals("Central Processor", resultComponent); assertEquals("Central Processor", resultComponent);
assertEquals("Processor", resultCategory); assertEquals("Processor", resultCategory);
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Test of getComponent method, of class ComponentClass where the
* registry type is of type PCIE.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQueryIntTCG() throws URISyntaxException { public void testGetComponentStandardQueryPCIE() throws URISyntaxException {
String componentIdentifier = "0x00040002"; final String componentIdentifier = "0x00080004"; // TODO placeholder for now
ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("2.23.133.18.3.4", Paths.get(
.getResource(JSON_FILE).toURI()), componentIdentifier); Objects.requireNonNull(this.getClass()
String resultCategory = instance.getCategoryStr(); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultComponent = instance.getComponentStr(); final String resultCategory = instance.getCategoryStr();
assertEquals(resultComponent, "SAS Bridgeboard"); final String resultComponent = instance.getComponentStr();
assertEquals(resultCategory, "Modules"); final String resultRegistry = instance.getRegistryType();
assertEquals("PCIE", resultRegistry);
//TODO Once the component-class.json file is updated to reflect the two new component
// registries, we will then write tests that test the component class' category/component
// properties.
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class where the
* registry type is of type STORAGE.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQueryIntSMBIOS() throws URISyntaxException { public void testGetComponentStandardQuerySTORAGE() throws URISyntaxException {
String componentIdentifier = "0x00040003"; final String componentIdentifier = "0x00080004"; // TODO placeholder for now
ComponentClass instance = new ComponentClass("2.23.133.18.3.3", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("2.23.133.18.3.5", Paths.get(
.getResource(JSON_FILE).toURI()), componentIdentifier); Objects.requireNonNull(this.getClass()
String resultCategory = instance.getCategoryStr(); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultComponent = instance.getComponentStr(); final String resultCategory = instance.getCategoryStr();
assertEquals("Central Processor", resultComponent); final String resultComponent = instance.getComponentStr();
assertEquals("Processor", resultCategory); final String resultRegistry = instance.getRegistryType();
assertEquals("STORAGE", resultRegistry);
//TODO Once the component-class.json file is updated to reflect the two new component
// registries, we will then write tests that test the component class' category/component
// properties.
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQueryIntOther() throws URISyntaxException { public void testGetComponentStandardQueryIntOther() throws URISyntaxException {
String componentIdentifier = "0x00040000"; final String componentIdentifier = "0x00040000";
ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(
.getResource(JSON_FILE).toURI()), componentIdentifier); Objects.requireNonNull(this.getClass()
String resultCategory = instance.getCategoryStr(); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultComponent = instance.getComponentStr(); final String resultCategory = instance.getCategoryStr();
final String resultComponent = instance.getComponentStr();
assertEquals("Other", resultComponent); assertEquals("Other", resultComponent);
assertEquals("Modules", resultCategory); assertEquals("Modules", resultCategory);
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQueryIntUnk() throws URISyntaxException { public void testGetComponentStandardQueryIntUnk() throws URISyntaxException {
String componentIdentifier = "0x00040001"; final String componentIdentifier = "0x00040001";
ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(
.getResource(JSON_FILE).toURI()), componentIdentifier); Objects.requireNonNull(this.getClass()
String resultCategory = instance.getCategoryStr(); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultComponent = instance.getComponentStr(); final String resultCategory = instance.getCategoryStr();
final String resultComponent = instance.getComponentStr();
assertEquals("Unknown", resultComponent); assertEquals("Unknown", resultComponent);
assertEquals("Modules", resultCategory); assertEquals("Modules", resultCategory);
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQuery2() throws URISyntaxException { public void testGetComponentStandardQuery2() throws URISyntaxException {
String componentIdentifier = "0x00060015"; final String componentIdentifier = "0x00060015";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals("DDR3 Memory", resultComponent); assertEquals("DDR3 Memory", resultComponent);
assertEquals("Memory", resultCategory); assertEquals("Memory", resultCategory);
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentStandardQueryUNK() throws URISyntaxException { public void testGetComponentStandardQueryUNK() throws URISyntaxException {
String componentIdentifier = "0x00060001"; final String componentIdentifier = "0x00060001";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals("Unknown", resultComponent); assertEquals("Unknown", resultComponent);
assertEquals("Memory", resultCategory); assertEquals("Memory", resultCategory);
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNonStandardQuery() throws URISyntaxException { public void testGetComponentNonStandardQuery() throws URISyntaxException {
String componentIdentifier = "0x00040002"; final String componentIdentifier = "0x00040002";
ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(
.getResource(JSON_FILE).toURI()), componentIdentifier); Objects.requireNonNull(this.getClass()
String resultCategory = instance.getCategoryStr(); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultComponent = instance.getComponentStr(); final String resultCategory = instance.getCategoryStr();
final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "SAS Bridgeboard"); assertEquals(resultComponent, "SAS Bridgeboard");
assertEquals(resultCategory, "Modules"); assertEquals(resultCategory, "Modules");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNonStandardQuery2() throws URISyntaxException { public void testGetComponentNonStandardQuery2() throws URISyntaxException {
String componentIdentifier = "0x00040002"; final String componentIdentifier = "0x00040002";
ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(
.getResource(JSON_FILE).toURI()), componentIdentifier); Objects.requireNonNull(this.getClass()
String resultCategory = instance.getCategoryStr(); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultComponent = instance.getComponentStr(); final String resultCategory = instance.getCategoryStr();
final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "SAS Bridgeboard"); assertEquals(resultComponent, "SAS Bridgeboard");
assertEquals(resultCategory, "Modules"); assertEquals(resultCategory, "Modules");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNonExistentValue() throws URISyntaxException { public void testGetComponentNonExistentValue() throws URISyntaxException {
String componentIdentifier = "0x00040014"; final String componentIdentifier = "0x00040014";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertNull(resultComponent); assertNull(resultComponent);
assertEquals(resultCategory, "Modules"); assertEquals(resultCategory, "Modules");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNonExistentValue2() throws URISyntaxException { public void testGetComponentNonExistentValue2() throws URISyntaxException {
String componentIdentifier = "0x0004FF14"; final String componentIdentifier = "0x0004FF14";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertNull(resultComponent); assertNull(resultComponent);
assertEquals(resultCategory, "Modules"); assertEquals(resultCategory, "Modules");
} }
/** /**
* Test of getComponent method, of class ComponentClass. * Tests the getComponent method from the ComponentClass class.
* *
* @throws URISyntaxException if there is a problem constructing the URI * @throws URISyntaxException if there is a problem constructing the URI
*/ */
@Test @Test
public void testGetComponentNonExistentCategory() throws URISyntaxException { public void testGetComponentNonExistentCategory() throws URISyntaxException {
String componentIdentifier = "0x0015FF14"; final String componentIdentifier = "0x0015FF14";
ComponentClass instance = new ComponentClass(Paths.get(this.getClass() ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass()
.getResource(JSON_FILE).toURI()), componentIdentifier); .getResource(JSON_FILE)).toURI()), componentIdentifier);
String resultCategory = instance.getCategoryStr(); final String resultCategory = instance.getCategoryStr();
String resultComponent = instance.getComponentStr(); final String resultComponent = instance.getComponentStr();
assertEquals(resultComponent, "Unknown"); assertEquals(resultComponent, "Unknown");
assertEquals(resultCategory, "None"); assertEquals(resultCategory, "None");
} }

View File

@ -1,5 +1,7 @@
package hirs.attestationca.persist.validation; package hirs.attestationca.persist.validation;
import hirs.attestationca.persist.entity.manager.ComponentAttributeRepository;
import hirs.attestationca.persist.entity.manager.ComponentResultRepository;
import hirs.attestationca.persist.entity.userdefined.Certificate; import hirs.attestationca.persist.entity.userdefined.Certificate;
import hirs.attestationca.persist.entity.userdefined.certificate.CertificateAuthorityCredential; import hirs.attestationca.persist.entity.userdefined.certificate.CertificateAuthorityCredential;
import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential; import hirs.attestationca.persist.entity.userdefined.certificate.EndorsementCredential;
@ -34,7 +36,10 @@ import org.bouncycastle.operator.OperatorCreationException;
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
@ -206,6 +211,11 @@ public class SupplyChainCredentialValidatorTest {
private static KeyStore emptyKeyStore; private static KeyStore emptyKeyStore;
@Mock
private ComponentResultRepository componentResultRepository;
@Mock
private ComponentAttributeRepository componentAttributeRepository;
/** /**
* Sets up a KeyStore for testing. * Sets up a KeyStore for testing.
* *
@ -245,57 +255,6 @@ public class SupplyChainCredentialValidatorTest {
} }
} }
private static DeviceInfoReport setupDeviceInfoReport() {
hardwareInfo = new HardwareInfo(
"ACME",
"anvil",
"3.0",
"1234",
"567",
"890");
DeviceInfoReport deviceInfoReport = mock(DeviceInfoReport.class);
when(deviceInfoReport.getHardwareInfo()).thenReturn(hardwareInfo);
return deviceInfoReport;
}
private static DeviceInfoReport setupDeviceInfoReportWithComponents() throws IOException {
return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_TXT);
}
private static DeviceInfoReport setupDeviceInfoReportWithNotSpecifiedComponents()
throws IOException {
return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_NOT_SPECIFIED_TXT);
}
private static DeviceInfoReport setupDeviceInfoReportWithComponents(
final String paccorOutputResource) throws IOException {
DeviceInfoReport deviceInfoReport = setupDeviceInfoReport();
URL url = SupplyChainCredentialValidator.class.getResource(paccorOutputResource);
String paccorOutputString = IOUtils.toString(url, StandardCharsets.UTF_8);
when(deviceInfoReport.getPaccorOutputString()).thenReturn(paccorOutputString);
return deviceInfoReport;
}
/**
* Creates a new RSA 1024-bit KeyPair using a Bouncy Castle Provider.
*
* @return new KeyPair
*/
private static KeyPair createKeyPair() {
final int keySize = 1024;
KeyPairGenerator gen;
KeyPair keyPair = null;
try {
gen = KeyPairGenerator.getInstance("RSA", BouncyCastleProvider.PROVIDER_NAME);
gen.initialize(keySize, SECURE_RANDOM);
keyPair = gen.generateKeyPair();
} catch (NoSuchAlgorithmException | NoSuchProviderException e) {
fail("Error occurred while generating key pair", e);
}
return keyPair;
}
/** /**
* Create a new X.509 attribute certificate given the holder cert, the signing cert, and the * Create a new X.509 attribute certificate given the holder cert, the signing cert, and the
* signing key. * signing key.
@ -401,7 +360,113 @@ public class SupplyChainCredentialValidatorTest {
return cert; return cert;
} }
private static InetAddress getTestIpAddress() { @BeforeEach
public void setUpEachTest() {
MockitoAnnotations.openMocks(this);
}
/**
* Creates a new RSA 1024-bit KeyPair using a Bouncy Castle Provider.
*
* @return new KeyPair
*/
private KeyPair createKeyPair() {
final int keySize = 1024;
KeyPairGenerator gen;
KeyPair keyPair = null;
try {
gen = KeyPairGenerator.getInstance("RSA", BouncyCastleProvider.PROVIDER_NAME);
gen.initialize(keySize, SECURE_RANDOM);
keyPair = gen.generateKeyPair();
} catch (NoSuchAlgorithmException | NoSuchProviderException e) {
fail("Error occurred while generating key pair", e);
}
return keyPair;
}
/**
* Helper method that creates a device info report.
*
* @return device info report
*/
private DeviceInfoReport setupDeviceInfoReport() {
hardwareInfo = new HardwareInfo(
"ACME",
"anvil",
"3.0",
"1234",
"567",
"890");
DeviceInfoReport deviceInfoReport = mock(DeviceInfoReport.class);
when(deviceInfoReport.getHardwareInfo()).thenReturn(hardwareInfo);
return deviceInfoReport;
}
/**
* Helper method that creates a device info report that contains the provided components.
*
* @return device info report that contains provided components
* @throws IOException is thrown if issues arise from parsing out the paccor output
*/
private DeviceInfoReport setupDeviceInfoReportWithComponents() throws IOException {
return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_TXT);
}
/**
* Helper method that creates a device info report that contains the provided non-specified components.
*
* @return device info report that contains not specified components
* @throws IOException is thrown if issues arise from parsing out the paccor output
*/
private DeviceInfoReport setupDeviceInfoReportWithNotSpecifiedComponents()
throws IOException {
return setupDeviceInfoReportWithComponents(SAMPLE_PACCOR_OUTPUT_NOT_SPECIFIED_TXT);
}
/**
* Helper method that generates a device info report using the provided sample paccor output.
*
* @param paccorOutputResource sample paccor output text
* @return device info report
* @throws IOException is thrown if issues arise from parsing out the paccor output
*/
private DeviceInfoReport setupDeviceInfoReportWithComponents(
final String paccorOutputResource) throws IOException {
DeviceInfoReport deviceInfoReport = setupDeviceInfoReport();
URL url = SupplyChainCredentialValidator.class.getResource(paccorOutputResource);
String paccorOutputString = IOUtils.toString(url, StandardCharsets.UTF_8);
when(deviceInfoReport.getPaccorOutputString()).thenReturn(paccorOutputString);
return deviceInfoReport;
}
/**
* Helper method that generates a collection of component info that can be used
* for this class' test methods.
*
* @return a generic list of component info
*/
private List<ComponentInfo> retrieveListOfComponentInfos() {
return List.of(
new ComponentInfo("the-device", "Dell Inc", "11",
"9ZLUO9", "Not Specified", "020000123",
"2.23.133.18.3.1"),
new ComponentInfo("the-device", "9090", "AE12",
"Not Specified", "Not Specified", "00070700",
"2.23.133.18.3.4"),
new ComponentInfo("the-device", "Not Specified", "109 NVM",
"1110_1100_2230_0000_8CE3_8E10_0164_9CC7.", "Not Specified",
"00060001", "2.23.133.18.3.5"));
}
/**
* Helper method that returns an IP Address.
*
* @return IP address
*/
private InetAddress getTestIpAddress() {
try { try {
final byte[] byteAddress = new byte[] {127, 0, 0, 1}; final byte[] byteAddress = new byte[] {127, 0, 0, 1};
return InetAddress.getByAddress(byteAddress); return InetAddress.getByAddress(byteAddress);
@ -499,7 +564,7 @@ public class SupplyChainCredentialValidatorTest {
* *
* @throws Exception If there are errors. * @throws Exception If there are errors.
*/ */
// @Test @Test
public final void validateIntelPlatformCredentialAttributes() public final void validateIntelPlatformCredentialAttributes()
throws Exception { throws Exception {
@ -517,22 +582,25 @@ public class SupplyChainCredentialValidatorTest {
EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get(
Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI())));
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, CredentialValidator.validatePlatformCredentialAttributes(pc,
deviceInfoReport, ec, null, null, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
result.getMessage()); result.getMessage());
} }
/** /**
* Checks if the Platform Credential contains the serial number from * Checks if the Platform Credential contains the serial number from
* the device in the platform serial number field. * the device in the platform serial number field.
* *
* @throws Exception If there are errors. * @throws Exception If there are errors.
*/ */
// @Test @Test
public final void validatePlatformCredentialWithDeviceBaseboard() public final void validatePlatformCredentialWithDeviceBaseboard()
throws Exception { throws Exception {
DeviceInfoReport deviceInfoReport = buildReport(new HardwareInfo( DeviceInfoReport deviceInfoReport = buildReport(new HardwareInfo(
@ -549,10 +617,12 @@ public class SupplyChainCredentialValidatorTest {
EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get(
Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI())));
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, CredentialValidator.validatePlatformCredentialAttributes(pc,
deviceInfoReport, ec, null, null, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
result.getMessage()); result.getMessage());
@ -562,7 +632,7 @@ public class SupplyChainCredentialValidatorTest {
* Checks if the Platform Credential contains the serial number from * Checks if the Platform Credential contains the serial number from
* the device in the chassis serial number field. * the device in the chassis serial number field.
*/ */
// @Test @Test
public final void validatePlatformCredentialWithDeviceChassis() public final void validatePlatformCredentialWithDeviceChassis()
throws Exception { throws Exception {
@ -580,10 +650,12 @@ public class SupplyChainCredentialValidatorTest {
EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get(
Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI())));
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, CredentialValidator.validatePlatformCredentialAttributes(pc,
deviceInfoReport, ec, null, null, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
result.getMessage()); result.getMessage());
@ -595,7 +667,7 @@ public class SupplyChainCredentialValidatorTest {
* *
* @throws Exception If there are errors. * @throws Exception If there are errors.
*/ */
// @Test @Test
public final void validatePlatformCredentialWithDeviceSystemSerialNumber() public final void validatePlatformCredentialWithDeviceSystemSerialNumber()
throws Exception { throws Exception {
@ -613,10 +685,12 @@ public class SupplyChainCredentialValidatorTest {
EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get(
Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI())));
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, CredentialValidator.validatePlatformCredentialAttributes(pc,
deviceInfoReport, ec, null, null, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
result.getMessage()); result.getMessage());
@ -626,7 +700,7 @@ public class SupplyChainCredentialValidatorTest {
* Checks if validation occurs when the Platform Credential baseboard * Checks if validation occurs when the Platform Credential baseboard
* serial number is in the device chassis serial number field. * serial number is in the device chassis serial number field.
*/ */
// @Test @Test
public final void validatePlatformCredentialCombinedWithChassisSerialNumbersMatchedBaseboard() public final void validatePlatformCredentialCombinedWithChassisSerialNumbersMatchedBaseboard()
throws Exception { throws Exception {
@ -645,10 +719,12 @@ public class SupplyChainCredentialValidatorTest {
Files.readAllBytes(Paths.get( Files.readAllBytes(Paths.get(
Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI())));
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, CredentialValidator.validatePlatformCredentialAttributes(pc,
deviceInfoReport, ec, null, null, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
result.getMessage()); result.getMessage());
@ -658,7 +734,7 @@ public class SupplyChainCredentialValidatorTest {
* Checks if validation occurs when the Platform Credential chassis * Checks if validation occurs when the Platform Credential chassis
* serial number is in the device baseboard serial number field. * serial number is in the device baseboard serial number field.
*/ */
// @Test @Test
public final void validatePlatformCredentialCombinedWithBaseboardSerialNumbersMatchedChassis() public final void validatePlatformCredentialCombinedWithBaseboardSerialNumbersMatchedChassis()
throws Exception { throws Exception {
@ -676,10 +752,12 @@ public class SupplyChainCredentialValidatorTest {
EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get(
Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI())));
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, CredentialValidator.validatePlatformCredentialAttributes(pc,
deviceInfoReport, ec, null, null, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
result.getMessage()); result.getMessage());
@ -689,7 +767,7 @@ public class SupplyChainCredentialValidatorTest {
* Checks if validation occurs when the Platform Credential chassis * Checks if validation occurs when the Platform Credential chassis
* serial number is in the device system serial number field. * serial number is in the device system serial number field.
*/ */
// @Test @Test
public final void validatePlatformCredentialCombinedWithSystemSerialNumbersMatchedChassis() public final void validatePlatformCredentialCombinedWithSystemSerialNumbersMatchedChassis()
throws Exception { throws Exception {
@ -707,10 +785,12 @@ public class SupplyChainCredentialValidatorTest {
EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get(
Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI())));
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, CredentialValidator.validatePlatformCredentialAttributes(pc,
deviceInfoReport, ec, null, null, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
result.getMessage()); result.getMessage());
@ -722,7 +802,7 @@ public class SupplyChainCredentialValidatorTest {
* *
* @throws Exception If there are errors. * @throws Exception If there are errors.
*/ */
// @Test @Test
public final void validatePlatformCredentialWithNoDeviceSerialNumbers() public final void validatePlatformCredentialWithNoDeviceSerialNumbers()
throws Exception { throws Exception {
@ -743,10 +823,12 @@ public class SupplyChainCredentialValidatorTest {
String expectedMessage = "Platform serial did not match device info"; String expectedMessage = "Platform serial did not match device info";
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes( CredentialValidator.validatePlatformCredentialAttributes(
pc, deviceInfoReport, ec, null, null, pc, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals(expectedMessage, result.getMessage()); assertEquals(expectedMessage, result.getMessage());
} }
@ -757,7 +839,7 @@ public class SupplyChainCredentialValidatorTest {
* *
* @throws Exception If there are errors. * @throws Exception If there are errors.
*/ */
// @Test @Test
public final void validatePlatformCredentialCombinedWithNoMatchedDeviceSerialNumbers() public final void validatePlatformCredentialCombinedWithNoMatchedDeviceSerialNumbers()
throws Exception { throws Exception {
@ -777,10 +859,12 @@ public class SupplyChainCredentialValidatorTest {
String expectedMessage = "Platform serial did not match device info"; String expectedMessage = "Platform serial did not match device info";
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes( CredentialValidator.validatePlatformCredentialAttributes(
pc, deviceInfoReport, ec, null, null, pc, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals(expectedMessage, result.getMessage()); assertEquals(expectedMessage, result.getMessage());
} }
@ -1144,7 +1228,7 @@ public class SupplyChainCredentialValidatorTest {
* @throws IOException an error occurs when parsing the certificate * @throws IOException an error occurs when parsing the certificate
* @throws URISyntaxException an error occurs parsing the certificate file path * @throws URISyntaxException an error occurs parsing the certificate file path
*/ */
// @Test @Test
public final void verifyPlatformCredentialNullDeviceInfoReport() public final void verifyPlatformCredentialNullDeviceInfoReport()
throws URISyntaxException, IOException { throws URISyntaxException, IOException {
byte[] certBytes = Files.readAllBytes(Paths.get( byte[] certBytes = Files.readAllBytes(Paths.get(
@ -1159,9 +1243,12 @@ public class SupplyChainCredentialValidatorTest {
String expectedMessage = "Can't validate platform credential attributes without a " String expectedMessage = "Can't validate platform credential attributes without a "
+ "device info report"; + "device info report";
List<ComponentInfo> componentInfoList = retrieveListOfComponentInfos();
AppraisalStatus result = AppraisalStatus result =
CredentialValidator.validatePlatformCredentialAttributes(pc, null, ec, null, null, CredentialValidator.validatePlatformCredentialAttributes(pc, null, ec,
Collections.emptyList(), UUID.randomUUID(), false); componentResultRepository, componentAttributeRepository,
componentInfoList, UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals(expectedMessage, result.getMessage()); assertEquals(expectedMessage, result.getMessage());
} }
@ -1379,14 +1466,15 @@ public class SupplyChainCredentialValidatorTest {
* *
* @throws IOException if unable to set up DeviceInfoReport from resource file * @throws IOException if unable to set up DeviceInfoReport from resource file
*/ */
// @Test //@Test TODO esacost
public final void testValidatePlatformCredentialAttributesV2p0NoComponentsPass() public final void testValidatePlatformCredentialAttributesV2p0NoComponentsPass()
throws IOException { throws IOException {
DeviceInfoReport deviceInfoReport = setupDeviceInfoReport(); DeviceInfoReport deviceInfoReport = setupDeviceInfoReport();
PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
AppraisalStatus appraisalStatus = CertificateAttributeScvValidator AppraisalStatus appraisalStatus = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport,
componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, assertEquals(AppraisalStatus.Status.PASS,
appraisalStatus.getAppStatus()); appraisalStatus.getAppStatus());
@ -1407,7 +1495,8 @@ public class SupplyChainCredentialValidatorTest {
PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
AppraisalStatus appraisalStatus = CertificateAttributeScvValidator AppraisalStatus appraisalStatus = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport,
componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, appraisalStatus.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, appraisalStatus.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1430,7 +1519,8 @@ public class SupplyChainCredentialValidatorTest {
.thenReturn(hardwareInfo.getSystemSerialNumber()); .thenReturn(hardwareInfo.getSystemSerialNumber());
AppraisalStatus appraisalStatus = CertificateAttributeScvValidator AppraisalStatus appraisalStatus = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport,
componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, appraisalStatus.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, appraisalStatus.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1455,7 +1545,8 @@ public class SupplyChainCredentialValidatorTest {
SAMPLE_TEST_PACCOR_CERT)).toURI()))); SAMPLE_TEST_PACCOR_CERT)).toURI())));
AppraisalStatus appraisalStatus = CertificateAttributeScvValidator AppraisalStatus appraisalStatus = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport,
componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, appraisalStatus.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, appraisalStatus.getAppStatus());
} }
@ -1473,7 +1564,7 @@ public class SupplyChainCredentialValidatorTest {
PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1481,7 +1572,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getManufacturer()).thenReturn(null); when(platformCredential.getManufacturer()).thenReturn(null);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Platform manufacturer did not match\n", result.getMessage()); assertEquals("Platform manufacturer did not match\n", result.getMessage());
@ -1489,7 +1580,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1497,7 +1588,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getModel()).thenReturn(null); when(platformCredential.getModel()).thenReturn(null);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(result.getAppStatus(), AppraisalStatus.Status.FAIL); assertEquals(result.getAppStatus(), AppraisalStatus.Status.FAIL);
assertEquals(result.getMessage(), "Platform model did not match\n"); assertEquals(result.getMessage(), "Platform model did not match\n");
@ -1505,7 +1596,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1513,13 +1604,13 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getPlatformSerial()).thenReturn(null); when(platformCredential.getPlatformSerial()).thenReturn(null);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1527,7 +1618,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getVersion()).thenReturn(null); when(platformCredential.getVersion()).thenReturn(null);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1536,7 +1627,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1547,7 +1638,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Component manufacturer is empty\n", result.getMessage()); assertEquals("Component manufacturer is empty\n", result.getMessage());
@ -1555,7 +1646,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1565,7 +1656,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Component model is empty\n", result.getMessage()); assertEquals("Component model is empty\n", result.getMessage());
@ -1586,7 +1677,7 @@ public class SupplyChainCredentialValidatorTest {
PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1594,7 +1685,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getManufacturer()).thenReturn(""); when(platformCredential.getManufacturer()).thenReturn("");
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Platform manufacturer did not match\n", result.getMessage()); assertEquals("Platform manufacturer did not match\n", result.getMessage());
@ -1602,7 +1693,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1610,7 +1701,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getModel()).thenReturn(""); when(platformCredential.getModel()).thenReturn("");
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Platform model did not match\n", result.getMessage()); assertEquals("Platform model did not match\n", result.getMessage());
@ -1618,7 +1709,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1626,7 +1717,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getPlatformSerial()).thenReturn(""); when(platformCredential.getPlatformSerial()).thenReturn("");
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Platform serial did not match\n", result.getMessage()); assertEquals("Platform serial did not match\n", result.getMessage());
@ -1634,7 +1725,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1642,7 +1733,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getVersion()).thenReturn(""); when(platformCredential.getVersion()).thenReturn("");
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Platform version did not match\n", result.getMessage()); assertEquals("Platform version did not match\n", result.getMessage());
@ -1650,7 +1741,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1661,7 +1752,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Component manufacturer is empty\n" assertEquals("Component manufacturer is empty\n"
@ -1673,7 +1764,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1683,7 +1774,7 @@ public class SupplyChainCredentialValidatorTest {
when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Component model is empty\n", result.getMessage()); assertEquals("Component model is empty\n", result.getMessage());
@ -1703,7 +1794,7 @@ public class SupplyChainCredentialValidatorTest {
PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1725,7 +1816,7 @@ public class SupplyChainCredentialValidatorTest {
); );
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("There are unmatched components:\n" assertEquals("There are unmatched components:\n"
@ -1752,7 +1843,7 @@ public class SupplyChainCredentialValidatorTest {
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1760,7 +1851,7 @@ public class SupplyChainCredentialValidatorTest {
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1781,7 +1872,7 @@ public class SupplyChainCredentialValidatorTest {
PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1794,7 +1885,7 @@ public class SupplyChainCredentialValidatorTest {
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Component manufacturer is empty\n" assertEquals("Component manufacturer is empty\n"
@ -1806,7 +1897,7 @@ public class SupplyChainCredentialValidatorTest {
platformCredential = setupMatchingPlatformCredential(deviceInfoReport); platformCredential = setupMatchingPlatformCredential(deviceInfoReport);
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1818,7 +1909,7 @@ public class SupplyChainCredentialValidatorTest {
result = CertificateAttributeScvValidator result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus());
assertEquals("Component model is empty\n", result.getMessage()); assertEquals("Component model is empty\n", result.getMessage());
@ -1849,7 +1940,7 @@ public class SupplyChainCredentialValidatorTest {
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1881,7 +1972,7 @@ public class SupplyChainCredentialValidatorTest {
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1915,7 +2006,7 @@ public class SupplyChainCredentialValidatorTest {
AppraisalStatus result = CertificateAttributeScvValidator AppraisalStatus result = CertificateAttributeScvValidator
.validatePlatformCredentialAttributesV2p0(platformCredential, .validatePlatformCredentialAttributesV2p0(platformCredential,
deviceInfoReport, null, null, deviceInfoReport, componentResultRepository, componentAttributeRepository,
Collections.emptyList(), UUID.randomUUID(), false); Collections.emptyList(), UUID.randomUUID(), false);
assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus());
assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID,
@ -1926,8 +2017,8 @@ public class SupplyChainCredentialValidatorTest {
* Tests that SupplyChainCredentialValidator passes with a base and delta certificate where * Tests that SupplyChainCredentialValidator passes with a base and delta certificate where
* the base serial number and delta holder serial number match. * the base serial number and delta holder serial number match.
* *
* @throws java.io.IOException Reading file for the certificates * @throws IOException Reading file for the certificates
* @throws java.net.URISyntaxException when loading certificates bytes * @throws URISyntaxException when loading certificates bytes
*/ */
// @Test // @Test
public final void testValidateDeltaPlatformCredentialAttributes() public final void testValidateDeltaPlatformCredentialAttributes()
@ -2063,8 +2154,8 @@ public class SupplyChainCredentialValidatorTest {
* Tests that SupplyChainCredentialValidator fails when a component needs to * Tests that SupplyChainCredentialValidator fails when a component needs to
* be replaced but hasn't been by a delta certificate. * be replaced but hasn't been by a delta certificate.
* *
* @throws java.io.IOException Reading file for the certificates * @throws IOException Reading file for the certificates
* @throws java.net.URISyntaxException when loading certificates bytes * @throws URISyntaxException when loading certificates bytes
*/ */
// @Test // @Test
public final void testValidateChainFailure() public final void testValidateChainFailure()