From 3913a224d5396729250d838f365b276ebf93e238 Mon Sep 17 00:00:00 2001 From: TheSilentCoder <184309164+ThatSilentCoder@users.noreply.github.com> Date: Tue, 11 Feb 2025 18:47:54 -0500 Subject: [PATCH] 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. --- .github/workflows/create_aca_images.yml | 2 + .../dotnet_provisioner_unit_tests.yml | 2 + .github/workflows/hirs_package_linux.yml | 2 + .github/workflows/hirs_unit_tests.yml | 4 +- .github/workflows/rim_tests.yml | 2 + .github/workflows/system_test.yml | 4 +- .../attributes/ComponentIdentifier.java | 6 +- .../entity/userdefined/info/HardwareInfo.java | 10 +- .../validation/CredentialValidator.java | 3 + .../attributes/ComponentClassTest.java | 252 +++++++------ .../SupplyChainCredentialValidatorTest.java | 343 +++++++++++------- 11 files changed, 379 insertions(+), 251 deletions(-) diff --git a/.github/workflows/create_aca_images.yml b/.github/workflows/create_aca_images.yml index 9cda9434..72bd4008 100644 --- a/.github/workflows/create_aca_images.yml +++ b/.github/workflows/create_aca_images.yml @@ -1,3 +1,5 @@ +# Updated: 02/11/2025 + name: Create ACA Docker Image on: release: diff --git a/.github/workflows/dotnet_provisioner_unit_tests.yml b/.github/workflows/dotnet_provisioner_unit_tests.yml index 59c6b632..dda5b2e0 100644 --- a/.github/workflows/dotnet_provisioner_unit_tests.yml +++ b/.github/workflows/dotnet_provisioner_unit_tests.yml @@ -1,3 +1,5 @@ +# Updated: 02/11/2025 + name: Dotnet Provisioner Unit Tests on: push diff --git a/.github/workflows/hirs_package_linux.yml b/.github/workflows/hirs_package_linux.yml index fe76880d..04cea3fa 100644 --- a/.github/workflows/hirs_package_linux.yml +++ b/.github/workflows/hirs_package_linux.yml @@ -1,3 +1,5 @@ +# Updated: 02/11/2025 + name: HIRS build and packages for Linux on: push: diff --git a/.github/workflows/hirs_unit_tests.yml b/.github/workflows/hirs_unit_tests.yml index 6f5a2699..82991d65 100644 --- a/.github/workflows/hirs_unit_tests.yml +++ b/.github/workflows/hirs_unit_tests.yml @@ -1,10 +1,10 @@ # 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 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: branches: - '*v3*' diff --git a/.github/workflows/rim_tests.yml b/.github/workflows/rim_tests.yml index b0fc9b7b..d1aea45f 100644 --- a/.github/workflows/rim_tests.yml +++ b/.github/workflows/rim_tests.yml @@ -1,4 +1,6 @@ # workflow is used to run RIM tests +# Updated: 02/11/2025 + name: RIM Test on: push: diff --git a/.github/workflows/system_test.yml b/.github/workflows/system_test.yml index cb8b44e0..8965545f 100644 --- a/.github/workflows/system_test.yml +++ b/.github/workflows/system_test.yml @@ -1,6 +1,6 @@ # 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 on: push: diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java index 0598f76f..d0549c9e 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentIdentifier.java @@ -106,7 +106,7 @@ public class ComponentIdentifier { * @param componentRevision represents the component revision * @param componentManufacturerId represents the component manufacturer ID * @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, final DERUTF8String componentModel, @@ -114,14 +114,14 @@ public class ComponentIdentifier { final DERUTF8String componentRevision, final ASN1ObjectIdentifier componentManufacturerId, final ASN1Boolean fieldReplaceable, - final List componentAddress) { + final List componentAddresses) { this.componentManufacturer = componentManufacturer; this.componentModel = componentModel; this.componentSerial = componentSerial; this.componentRevision = componentRevision; this.componentManufacturerId = componentManufacturerId; this.fieldReplaceable = fieldReplaceable; - this.componentAddresses = componentAddress.stream().toList(); + this.componentAddresses = componentAddresses.stream().toList(); } /** diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java index 35a9bd7f..b9b379b1 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/entity/userdefined/info/HardwareInfo.java @@ -22,11 +22,11 @@ import java.io.Serializable; public class HardwareInfo implements Serializable { @XmlElement - @Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) + @Column(nullable = false) private String manufacturer = DeviceInfoEnums.NOT_SPECIFIED; @XmlElement - @Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) + @Column(nullable = false) private String productName = DeviceInfoEnums.NOT_SPECIFIED; @XmlElement @@ -34,15 +34,15 @@ public class HardwareInfo implements Serializable { private String version = DeviceInfoEnums.NOT_SPECIFIED; @XmlElement - @Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) + @Column(nullable = false) private String systemSerialNumber = DeviceInfoEnums.NOT_SPECIFIED; @XmlElement - @Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) + @Column(nullable = false) private String chassisSerialNumber = DeviceInfoEnums.NOT_SPECIFIED; @XmlElement - @Column(length = DeviceInfoEnums.LONG_STRING_LENGTH, nullable = false) + @Column(nullable = false) private String baseboardSerialNumber = DeviceInfoEnums.NOT_SPECIFIED; /** diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java index 49cd6cf6..1913ccd5 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/persist/validation/CredentialValidator.java @@ -190,14 +190,17 @@ public class CredentialValidator extends SupplyChainCredentialValidator { message = baseErrorMessage + "a platform credential"; return new AppraisalStatus(FAIL, message); } + if (deviceInfoReport == null) { message = baseErrorMessage + "a device info report"; return new AppraisalStatus(FAIL, message); } + if (endorsementCredential == null) { message = baseErrorMessage + "an endorsement credential"; return new AppraisalStatus(FAIL, message); } + if (componentInfos.isEmpty()) { message = baseErrorMessage + "a list of device components"; return new AppraisalStatus(FAIL, message); diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java index 8dc54358..f32836b6 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/entity/userdefined/certificate/attributes/ComponentClassTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test; import java.net.URISyntaxException; import java.nio.file.Paths; +import java.util.Objects; import static org.junit.jupiter.api.Assertions.assertEquals; 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"; /** - * 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 */ @Test public void testGetComponentNoneUNK() throws URISyntaxException { - String componentIdentifier = "00000001"; + final String componentIdentifier = "00000001"; ComponentClass instance = new ComponentClass("TCG", - Paths.get(this.getClass().getResource(JSON_FILE).toURI()), + Paths.get(Objects.requireNonNull(this.getClass().getResource(JSON_FILE)).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "Unknown"); 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 */ @Test public void testGetComponentNoneOther() throws URISyntaxException { - String componentIdentifier = "00000000"; - ComponentClass instance = new ComponentClass("TCG", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "00000000"; + ComponentClass instance = new ComponentClass("TCG", Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "Unknown"); 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 */ @Test public void testGetComponentBlank() throws URISyntaxException { - String componentIdentifier = ""; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = ""; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "Unknown"); 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 */ @Test public void testGetComponentNFEx() throws URISyntaxException { - String componentIdentifier = "99999999"; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "99999999"; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "Unknown"); 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 */ @Test public void testGetComponentNull() throws URISyntaxException { - String componentIdentifier = null; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = null; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "Unknown"); 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 */ @Test public void testGetComponentStandardQueryTCG() throws URISyntaxException { - String componentIdentifier = "0x00040002"; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00040002"; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "SAS Bridgeboard"); 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 */ @Test public void testGetComponentStandardQuerySMBIOS() throws URISyntaxException { - String componentIdentifier = "0x00040003"; - ComponentClass instance = new ComponentClass("2.23.133.18.3.3", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00040003"; + ComponentClass instance = new ComponentClass("2.23.133.18.3.3", Paths.get( + Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); + final String resultRegistry = instance.getRegistryType(); + + assertEquals("SMBIOS", resultRegistry); assertEquals("Central Processor", resultComponent); 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 */ @Test - public void testGetComponentStandardQueryIntTCG() throws URISyntaxException { - String componentIdentifier = "0x00040002"; - ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); - assertEquals(resultComponent, "SAS Bridgeboard"); - assertEquals(resultCategory, "Modules"); + public void testGetComponentStandardQueryPCIE() throws URISyntaxException { + final String componentIdentifier = "0x00080004"; // TODO placeholder for now + ComponentClass instance = new ComponentClass("2.23.133.18.3.4", Paths.get( + Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); + 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 */ @Test - public void testGetComponentStandardQueryIntSMBIOS() throws URISyntaxException { - String componentIdentifier = "0x00040003"; - ComponentClass instance = new ComponentClass("2.23.133.18.3.3", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); - assertEquals("Central Processor", resultComponent); - assertEquals("Processor", resultCategory); + public void testGetComponentStandardQuerySTORAGE() throws URISyntaxException { + final String componentIdentifier = "0x00080004"; // TODO placeholder for now + ComponentClass instance = new ComponentClass("2.23.133.18.3.5", Paths.get( + Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); + 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 */ @Test public void testGetComponentStandardQueryIntOther() throws URISyntaxException { - String componentIdentifier = "0x00040000"; - ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00040000"; + ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get( + Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals("Other", resultComponent); 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 */ @Test public void testGetComponentStandardQueryIntUnk() throws URISyntaxException { - String componentIdentifier = "0x00040001"; - ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00040001"; + ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get( + Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals("Unknown", resultComponent); 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 */ @Test public void testGetComponentStandardQuery2() throws URISyntaxException { - String componentIdentifier = "0x00060015"; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00060015"; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals("DDR3 Memory", resultComponent); 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 */ @Test public void testGetComponentStandardQueryUNK() throws URISyntaxException { - String componentIdentifier = "0x00060001"; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00060001"; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals("Unknown", resultComponent); 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 */ @Test public void testGetComponentNonStandardQuery() throws URISyntaxException { - String componentIdentifier = "0x00040002"; - ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00040002"; + ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get( + Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "SAS Bridgeboard"); 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 */ @Test public void testGetComponentNonStandardQuery2() throws URISyntaxException { - String componentIdentifier = "0x00040002"; - ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00040002"; + ComponentClass instance = new ComponentClass("2.23.133.18.3.1", Paths.get( + Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "SAS Bridgeboard"); 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 */ @Test public void testGetComponentNonExistentValue() throws URISyntaxException { - String componentIdentifier = "0x00040014"; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x00040014"; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertNull(resultComponent); 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 */ @Test public void testGetComponentNonExistentValue2() throws URISyntaxException { - String componentIdentifier = "0x0004FF14"; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x0004FF14"; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertNull(resultComponent); 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 */ @Test public void testGetComponentNonExistentCategory() throws URISyntaxException { - String componentIdentifier = "0x0015FF14"; - ComponentClass instance = new ComponentClass(Paths.get(this.getClass() - .getResource(JSON_FILE).toURI()), componentIdentifier); - String resultCategory = instance.getCategoryStr(); - String resultComponent = instance.getComponentStr(); + final String componentIdentifier = "0x0015FF14"; + ComponentClass instance = new ComponentClass(Paths.get(Objects.requireNonNull(this.getClass() + .getResource(JSON_FILE)).toURI()), componentIdentifier); + final String resultCategory = instance.getCategoryStr(); + final String resultComponent = instance.getComponentStr(); assertEquals(resultComponent, "Unknown"); assertEquals(resultCategory, "None"); } diff --git a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java index 4e9c61fc..b605d775 100644 --- a/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java +++ b/HIRS_AttestationCA/src/test/java/hirs/attestationca/persist/validation/SupplyChainCredentialValidatorTest.java @@ -1,5 +1,7 @@ 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.CertificateAuthorityCredential; 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.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import java.io.BufferedReader; import java.io.File; @@ -206,6 +211,11 @@ public class SupplyChainCredentialValidatorTest { private static KeyStore emptyKeyStore; + @Mock + private ComponentResultRepository componentResultRepository; + @Mock + private ComponentAttributeRepository componentAttributeRepository; + /** * 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 * signing key. @@ -401,7 +360,113 @@ public class SupplyChainCredentialValidatorTest { 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 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 { final byte[] byteAddress = new byte[] {127, 0, 0, 1}; return InetAddress.getByAddress(byteAddress); @@ -499,7 +564,7 @@ public class SupplyChainCredentialValidatorTest { * * @throws Exception If there are errors. */ -// @Test + @Test public final void validateIntelPlatformCredentialAttributes() throws Exception { @@ -517,22 +582,25 @@ public class SupplyChainCredentialValidatorTest { EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, - deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); } + /** * Checks if the Platform Credential contains the serial number from * the device in the platform serial number field. * * @throws Exception If there are errors. */ -// @Test + @Test public final void validatePlatformCredentialWithDeviceBaseboard() throws Exception { DeviceInfoReport deviceInfoReport = buildReport(new HardwareInfo( @@ -549,10 +617,12 @@ public class SupplyChainCredentialValidatorTest { EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, - deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -562,7 +632,7 @@ public class SupplyChainCredentialValidatorTest { * Checks if the Platform Credential contains the serial number from * the device in the chassis serial number field. */ -// @Test + @Test public final void validatePlatformCredentialWithDeviceChassis() throws Exception { @@ -580,10 +650,12 @@ public class SupplyChainCredentialValidatorTest { EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, - deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -595,7 +667,7 @@ public class SupplyChainCredentialValidatorTest { * * @throws Exception If there are errors. */ -// @Test + @Test public final void validatePlatformCredentialWithDeviceSystemSerialNumber() throws Exception { @@ -613,10 +685,12 @@ public class SupplyChainCredentialValidatorTest { EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, - deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -626,7 +700,7 @@ public class SupplyChainCredentialValidatorTest { * Checks if validation occurs when the Platform Credential baseboard * serial number is in the device chassis serial number field. */ -// @Test + @Test public final void validatePlatformCredentialCombinedWithChassisSerialNumbersMatchedBaseboard() throws Exception { @@ -645,10 +719,12 @@ public class SupplyChainCredentialValidatorTest { Files.readAllBytes(Paths.get( Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, - deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -658,7 +734,7 @@ public class SupplyChainCredentialValidatorTest { * Checks if validation occurs when the Platform Credential chassis * serial number is in the device baseboard serial number field. */ -// @Test + @Test public final void validatePlatformCredentialCombinedWithBaseboardSerialNumbersMatchedChassis() throws Exception { @@ -676,10 +752,12 @@ public class SupplyChainCredentialValidatorTest { EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, - deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -689,7 +767,7 @@ public class SupplyChainCredentialValidatorTest { * Checks if validation occurs when the Platform Credential chassis * serial number is in the device system serial number field. */ -// @Test + @Test public final void validatePlatformCredentialCombinedWithSystemSerialNumbersMatchedChassis() throws Exception { @@ -707,10 +785,12 @@ public class SupplyChainCredentialValidatorTest { EndorsementCredential ec = new EndorsementCredential(Files.readAllBytes(Paths.get( Objects.requireNonNull(getClass().getResource(TEST_EK_CERT)).toURI()))); + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes(pc, - deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, result.getMessage()); @@ -722,7 +802,7 @@ public class SupplyChainCredentialValidatorTest { * * @throws Exception If there are errors. */ -// @Test + @Test public final void validatePlatformCredentialWithNoDeviceSerialNumbers() throws Exception { @@ -743,10 +823,12 @@ public class SupplyChainCredentialValidatorTest { String expectedMessage = "Platform serial did not match device info"; + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes( - pc, deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + pc, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(expectedMessage, result.getMessage()); } @@ -757,7 +839,7 @@ public class SupplyChainCredentialValidatorTest { * * @throws Exception If there are errors. */ -// @Test + @Test public final void validatePlatformCredentialCombinedWithNoMatchedDeviceSerialNumbers() throws Exception { @@ -777,10 +859,12 @@ public class SupplyChainCredentialValidatorTest { String expectedMessage = "Platform serial did not match device info"; + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = CredentialValidator.validatePlatformCredentialAttributes( - pc, deviceInfoReport, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + pc, deviceInfoReport, ec, componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(expectedMessage, result.getMessage()); } @@ -1144,7 +1228,7 @@ public class SupplyChainCredentialValidatorTest { * @throws IOException an error occurs when parsing the certificate * @throws URISyntaxException an error occurs parsing the certificate file path */ -// @Test + @Test public final void verifyPlatformCredentialNullDeviceInfoReport() throws URISyntaxException, IOException { byte[] certBytes = Files.readAllBytes(Paths.get( @@ -1159,9 +1243,12 @@ public class SupplyChainCredentialValidatorTest { String expectedMessage = "Can't validate platform credential attributes without a " + "device info report"; + List componentInfoList = retrieveListOfComponentInfos(); + AppraisalStatus result = - CredentialValidator.validatePlatformCredentialAttributes(pc, null, ec, null, null, - Collections.emptyList(), UUID.randomUUID(), false); + CredentialValidator.validatePlatformCredentialAttributes(pc, null, ec, + componentResultRepository, componentAttributeRepository, + componentInfoList, UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals(expectedMessage, result.getMessage()); } @@ -1379,14 +1466,15 @@ public class SupplyChainCredentialValidatorTest { * * @throws IOException if unable to set up DeviceInfoReport from resource file */ -// @Test + //@Test TODO esacost public final void testValidatePlatformCredentialAttributesV2p0NoComponentsPass() throws IOException { DeviceInfoReport deviceInfoReport = setupDeviceInfoReport(); PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); AppraisalStatus appraisalStatus = CertificateAttributeScvValidator - .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, + .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, + componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, appraisalStatus.getAppStatus()); @@ -1407,7 +1495,8 @@ public class SupplyChainCredentialValidatorTest { PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); AppraisalStatus appraisalStatus = CertificateAttributeScvValidator - .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, + .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, + componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, appraisalStatus.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1430,7 +1519,8 @@ public class SupplyChainCredentialValidatorTest { .thenReturn(hardwareInfo.getSystemSerialNumber()); AppraisalStatus appraisalStatus = CertificateAttributeScvValidator - .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, + .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, + componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, appraisalStatus.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1455,7 +1545,8 @@ public class SupplyChainCredentialValidatorTest { SAMPLE_TEST_PACCOR_CERT)).toURI()))); AppraisalStatus appraisalStatus = CertificateAttributeScvValidator - .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, null, null, + .validatePlatformCredentialAttributesV2p0(platformCredential, deviceInfoReport, + componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, appraisalStatus.getAppStatus()); } @@ -1473,7 +1564,7 @@ public class SupplyChainCredentialValidatorTest { PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1481,7 +1572,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getManufacturer()).thenReturn(null); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Platform manufacturer did not match\n", result.getMessage()); @@ -1489,7 +1580,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1497,7 +1588,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getModel()).thenReturn(null); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(result.getAppStatus(), AppraisalStatus.Status.FAIL); assertEquals(result.getMessage(), "Platform model did not match\n"); @@ -1505,7 +1596,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1513,13 +1604,13 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getPlatformSerial()).thenReturn(null); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1527,7 +1618,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getVersion()).thenReturn(null); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1536,7 +1627,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1547,7 +1638,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component manufacturer is empty\n", result.getMessage()); @@ -1555,7 +1646,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1565,7 +1656,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component model is empty\n", result.getMessage()); @@ -1586,7 +1677,7 @@ public class SupplyChainCredentialValidatorTest { PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1594,7 +1685,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getManufacturer()).thenReturn(""); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Platform manufacturer did not match\n", result.getMessage()); @@ -1602,7 +1693,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1610,7 +1701,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getModel()).thenReturn(""); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Platform model did not match\n", result.getMessage()); @@ -1618,7 +1709,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1626,7 +1717,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getPlatformSerial()).thenReturn(""); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Platform serial did not match\n", result.getMessage()); @@ -1634,7 +1725,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1642,7 +1733,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getVersion()).thenReturn(""); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Platform version did not match\n", result.getMessage()); @@ -1650,7 +1741,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1661,7 +1752,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component manufacturer is empty\n" @@ -1673,7 +1764,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1683,7 +1774,7 @@ public class SupplyChainCredentialValidatorTest { when(platformCredential.getComponentIdentifiers()).thenReturn(modifiedComponentIdentifiers); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component model is empty\n", result.getMessage()); @@ -1703,7 +1794,7 @@ public class SupplyChainCredentialValidatorTest { PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1725,7 +1816,7 @@ public class SupplyChainCredentialValidatorTest { ); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("There are unmatched components:\n" @@ -1752,7 +1843,7 @@ public class SupplyChainCredentialValidatorTest { AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1760,7 +1851,7 @@ public class SupplyChainCredentialValidatorTest { result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1781,7 +1872,7 @@ public class SupplyChainCredentialValidatorTest { PlatformCredential platformCredential = setupMatchingPlatformCredential(deviceInfoReport); AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1794,7 +1885,7 @@ public class SupplyChainCredentialValidatorTest { result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component manufacturer is empty\n" @@ -1806,7 +1897,7 @@ public class SupplyChainCredentialValidatorTest { platformCredential = setupMatchingPlatformCredential(deviceInfoReport); result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1818,7 +1909,7 @@ public class SupplyChainCredentialValidatorTest { result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.FAIL, result.getAppStatus()); assertEquals("Component model is empty\n", result.getMessage()); @@ -1849,7 +1940,7 @@ public class SupplyChainCredentialValidatorTest { AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1881,7 +1972,7 @@ public class SupplyChainCredentialValidatorTest { AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1915,7 +2006,7 @@ public class SupplyChainCredentialValidatorTest { AppraisalStatus result = CertificateAttributeScvValidator .validatePlatformCredentialAttributesV2p0(platformCredential, - deviceInfoReport, null, null, + deviceInfoReport, componentResultRepository, componentAttributeRepository, Collections.emptyList(), UUID.randomUUID(), false); assertEquals(AppraisalStatus.Status.PASS, result.getAppStatus()); assertEquals(SupplyChainCredentialValidator.PLATFORM_ATTRIBUTES_VALID, @@ -1926,8 +2017,8 @@ public class SupplyChainCredentialValidatorTest { * Tests that SupplyChainCredentialValidator passes with a base and delta certificate where * the base serial number and delta holder serial number match. * - * @throws java.io.IOException Reading file for the certificates - * @throws java.net.URISyntaxException when loading certificates bytes + * @throws IOException Reading file for the certificates + * @throws URISyntaxException when loading certificates bytes */ // @Test public final void testValidateDeltaPlatformCredentialAttributes() @@ -2063,8 +2154,8 @@ public class SupplyChainCredentialValidatorTest { * Tests that SupplyChainCredentialValidator fails when a component needs to * be replaced but hasn't been by a delta certificate. * - * @throws java.io.IOException Reading file for the certificates - * @throws java.net.URISyntaxException when loading certificates bytes + * @throws IOException Reading file for the certificates + * @throws URISyntaxException when loading certificates bytes */ // @Test public final void testValidateChainFailure()