mirror of
https://github.com/nsacyber/HIRS.git
synced 2024-12-18 20:47:58 +00:00
Merge pull request #658 from nsacyber/v3_issue_618-unittest
HIRS_Utils Unit Tests Migration from /hirs/data/persist directory
This commit is contained in:
commit
2efb1a98f3
@ -0,0 +1,155 @@
|
||||
package hirs.attestationca.persist.entity.userdefined;
|
||||
|
||||
import hirs.attestationca.persist.entity.userdefined.report.DeviceInfoReport;
|
||||
import hirs.attestationca.persist.entity.userdefined.report.DeviceInfoReportTest;
|
||||
import hirs.attestationca.persist.enums.AppraisalStatus;
|
||||
import hirs.attestationca.persist.enums.HealthStatus;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
/**
|
||||
* This is the test class for the <code>Device</code> class.
|
||||
*
|
||||
*/
|
||||
public final class DeviceTest {
|
||||
/**
|
||||
* Utility method for getting a <code>Device</code> that can be used for
|
||||
* testing.
|
||||
*
|
||||
* @param name name for the <code>Device</code>
|
||||
*
|
||||
* @return device
|
||||
*/
|
||||
public static Device getTestDevice(final String name) {
|
||||
final DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
return new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the device constructor can take a name.
|
||||
*/
|
||||
@Test
|
||||
public void testDevice() {
|
||||
final String name = "my-laptop";
|
||||
final Device device = new Device(name, null, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null , null);
|
||||
assertNotNull(device);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a name and device info report can be passed into the
|
||||
* constructor.
|
||||
*/
|
||||
@Test
|
||||
public void testDeviceNameAndInfo() {
|
||||
final String name = "my-laptop";
|
||||
final DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the device name can be supplied and device info be null.
|
||||
*/
|
||||
@Test
|
||||
public void testDeviceNameAndNullInfo() {
|
||||
final String name = "my-laptop";
|
||||
final DeviceInfoReport deviceInfo = null;
|
||||
new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that get device info report returns the device info report.
|
||||
*/
|
||||
@Test
|
||||
public void testGetDeviceInfo() {
|
||||
final String name = "my-laptop";
|
||||
final DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
final Device device = new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
assertEquals(deviceInfo, device.getDeviceInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that device info can be set.
|
||||
*/
|
||||
@Test
|
||||
public void testSetDeviceInfo() {
|
||||
final String name = "my-laptop";
|
||||
final Device device = new Device(name, null, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
assertNull(device.getDeviceInfo());
|
||||
final DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
device.setDeviceInfo(deviceInfo);
|
||||
assertEquals(deviceInfo, device.getDeviceInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that get device info report returns the device info report.
|
||||
*/
|
||||
@Test
|
||||
public void testSetNullDeviceInfo() {
|
||||
final String name = "my-laptop";
|
||||
final DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
final Device device = new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
assertEquals(deviceInfo, device.getDeviceInfo());
|
||||
device.setDeviceInfo(null);
|
||||
assertNull(device.getDeviceInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that retrieving a null LastReportTimestamp will not trigger an exception.
|
||||
*/
|
||||
@Test
|
||||
public void testNullLastReportTimeStamp() {
|
||||
final String name = "my-laptop";
|
||||
final DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
final Device device = new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
assertNull(device.getLastReportTimestamp());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that setting and getting the health status works correctly.
|
||||
*/
|
||||
@Test
|
||||
public void testSetHealthStatus() {
|
||||
final Device device = new Device("test-device", null, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
device.setHealthStatus(HealthStatus.TRUSTED);
|
||||
assertEquals(HealthStatus.TRUSTED, device.getHealthStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests equals returns true for two devices that have the same name.
|
||||
*/
|
||||
@Test
|
||||
public void testDeviceEquals() {
|
||||
final String name = "my-laptop";
|
||||
final String otherName = "my-laptop";
|
||||
final DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
final Device device = new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
final Device other = new Device(otherName, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
assertEquals(device, other);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the default setting of the supply chain validation status is unknown.
|
||||
*/
|
||||
@Test
|
||||
public void testGetDefaultSupplyChainStatus() {
|
||||
String name = "my-laptop";
|
||||
DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
final Device device = new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
assertEquals(AppraisalStatus.Status.UNKNOWN, device.getSupplyChainValidationStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the supply chain validation status getters and setters work.
|
||||
*/
|
||||
@Test
|
||||
public void testSetAndGetSupplyChainStatus() {
|
||||
String name = "my-laptop";
|
||||
DeviceInfoReport deviceInfo = DeviceInfoReportTest.getTestReport();
|
||||
final Device device = new Device(name, deviceInfo, HealthStatus.UNKNOWN, AppraisalStatus.Status.UNKNOWN, null, false, null, null);
|
||||
device.setSupplyChainValidationStatus(AppraisalStatus.Status.PASS);
|
||||
assertEquals(AppraisalStatus.Status.PASS, device.getSupplyChainValidationStatus());
|
||||
}
|
||||
}
|
@ -0,0 +1,284 @@
|
||||
package hirs.attestationca.persist.entity.userdefined.record;
|
||||
|
||||
import hirs.attestationca.persist.entity.userdefined.ExaminableRecord;
|
||||
import hirs.utils.digest.Digest;
|
||||
import hirs.utils.digest.DigestAlgorithm;
|
||||
import org.apache.commons.codec.DecoderException;
|
||||
import org.apache.commons.codec.binary.Hex;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
/**
|
||||
* <code>PCRMeasurementRecordTest</code> represents a unit test class for
|
||||
* <code>PCRMeasurementRecord</code>.
|
||||
*/
|
||||
public class TPMMeasurementRecordTest {
|
||||
|
||||
private static final Logger LOGGER
|
||||
= LogManager.getLogger(TPMMeasurementRecordTest.class);
|
||||
private static final int DEFAULT_PCR_ID = 3;
|
||||
private static final String DEFAULT_HASH =
|
||||
"3d5f3c2f7f3003d2e4baddc46ed4763a4954f648";
|
||||
private static final ExaminableRecord.ExamineState DEFAULT_STATE = ExaminableRecord.ExamineState.UNEXAMINED;
|
||||
|
||||
/**
|
||||
* Tests instantiation of new <code>PCRMeasurementRecord</code>.
|
||||
*/
|
||||
@Test
|
||||
public final void tpmMeasurementRecord() {
|
||||
TPMMeasurementRecord pcrRecord = new TPMMeasurementRecord(0,
|
||||
getDigest(DEFAULT_HASH));
|
||||
assertNotNull(pcrRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that <code>PCRMeasurementRecord</code> constructor throws a
|
||||
* NullPointerException with null hash.
|
||||
*/
|
||||
@Test
|
||||
public final void tpmMeasurementRecordNullHash() {
|
||||
Digest digest = null;
|
||||
assertThrows(NullPointerException.class, () ->
|
||||
new TPMMeasurementRecord(0, digest));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that <code>PCRMeasurementRecord</code> constructor throws a
|
||||
* IllegalArgumentException with negative value for pcr id.
|
||||
*/
|
||||
@Test
|
||||
public final void tpmMeasurementRecordNegativePcrId() {
|
||||
assertThrows(IllegalArgumentException.class, () ->
|
||||
new TPMMeasurementRecord(-1, getDigest(DEFAULT_HASH)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that <code>PCRMeasurementRecord</code> constructor throws a
|
||||
* IllegalArgumentException with pcr id greater than 23.
|
||||
*/
|
||||
@Test
|
||||
public final void tpmMeasurementRecordInvalidPcrId() {
|
||||
final int invalidPCR = 24;
|
||||
assertThrows(IllegalArgumentException.class, () ->
|
||||
new TPMMeasurementRecord(invalidPCR, getDigest(DEFAULT_HASH)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that <code>getHash()</code> returns the measurement hash.
|
||||
*/
|
||||
@Test
|
||||
public final void getHash() {
|
||||
TPMMeasurementRecord pcrRecord = new TPMMeasurementRecord(0,
|
||||
getDigest(DEFAULT_HASH));
|
||||
assertNotNull(pcrRecord.getHash());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that <code>getPcrId()</code> returns the pcr id.
|
||||
*/
|
||||
@Test
|
||||
public final void getPcrId() {
|
||||
int id;
|
||||
TPMMeasurementRecord pcrRecord = new TPMMeasurementRecord(0,
|
||||
getDigest(DEFAULT_HASH));
|
||||
id = pcrRecord.getPcrId();
|
||||
assertNotNull(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that <code>getExamineState</code> returns the correct state.
|
||||
*/
|
||||
@Test
|
||||
public final void getExamineState() {
|
||||
final TPMMeasurementRecord record = getDefaultRecord();
|
||||
assertEquals(DEFAULT_STATE, record.getExamineState());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that two <code>IMAMeasurementRecord</code>s are equal if they have
|
||||
* the same name and the same path.
|
||||
*/
|
||||
@Test
|
||||
public final void testEquals() {
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
TPMMeasurementRecord r2 = getDefaultRecord();
|
||||
assertEquals(r1, r2);
|
||||
assertEquals(r2, r1);
|
||||
assertEquals(r1, r1);
|
||||
assertEquals(r2, r2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that two <code>TPMMeasurementRecord</code>s are not equal if the
|
||||
* PCR IDs are different.
|
||||
*/
|
||||
@Test
|
||||
public final void testNotEqualsPcr() {
|
||||
final int pcrId = 5;
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
TPMMeasurementRecord r2 = new TPMMeasurementRecord(pcrId,
|
||||
getDigest(DEFAULT_HASH));
|
||||
assertNotEquals(r1, r2);
|
||||
assertNotEquals(r2, r1);
|
||||
assertEquals(r1, r1);
|
||||
assertEquals(r2, r2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that two <code>TPMMeasurementRecord</code>s are not equal if the
|
||||
* hashes are different.
|
||||
*/
|
||||
@Test
|
||||
public final void testNotEqualsHash() {
|
||||
final String hash = "aacc3c2f7f3003d2e4baddc46ed4763a4954f648";
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
TPMMeasurementRecord r2 =
|
||||
new TPMMeasurementRecord(DEFAULT_PCR_ID, getDigest(hash));
|
||||
assertNotEquals(r1, r2);
|
||||
assertNotEquals(r2, r1);
|
||||
assertEquals(r1, r1);
|
||||
assertEquals(r2, r2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the hash code of two <code>TPMMeasurementRecord</code>s are
|
||||
* the same.
|
||||
*/
|
||||
@Test
|
||||
public final void testHashCodeEquals() {
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
TPMMeasurementRecord r2 = getDefaultRecord();
|
||||
assertEquals(r1.hashCode(), r2.hashCode());
|
||||
assertEquals(r2.hashCode(), r1.hashCode());
|
||||
assertEquals(r1.hashCode(), r1.hashCode());
|
||||
assertEquals(r2.hashCode(), r2.hashCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the hash code of two <code>TPMBaselineRecord</code>s is
|
||||
* different if they have different names.
|
||||
*/
|
||||
@Test
|
||||
public final void testHashCodeNotEqualsPcrs() {
|
||||
final int pcrId = 5;
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
TPMMeasurementRecord r2 = new TPMMeasurementRecord(pcrId,
|
||||
getDigest(DEFAULT_HASH));
|
||||
assertNotEquals(r1.hashCode(), r2.hashCode());
|
||||
assertNotEquals(r2.hashCode(), r1.hashCode());
|
||||
assertEquals(r1.hashCode(), r1.hashCode());
|
||||
assertEquals(r2.hashCode(), r2.hashCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the hash code of two <code>TPMMeasurementRecord</code>s is
|
||||
* different if they have different hashes.
|
||||
*/
|
||||
@Test
|
||||
public final void testHashCodeNotEqualsHashes() {
|
||||
final String hash = "aacc3c2f7f3003d2e4baddc46ed4763a4954f648";
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
TPMMeasurementRecord r2 =
|
||||
new TPMMeasurementRecord(DEFAULT_PCR_ID, getDigest(hash));
|
||||
assertNotEquals(r1.hashCode(), r2.hashCode());
|
||||
assertNotEquals(r2.hashCode(), r1.hashCode());
|
||||
assertEquals(r1.hashCode(), r1.hashCode());
|
||||
assertEquals(r2.hashCode(), r2.hashCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the expected valid PCR IDs do not throw an IllegalArgumentException.
|
||||
*/
|
||||
@Test
|
||||
public final void testCheckForValidPcrId() {
|
||||
final int minPcrId = TPMMeasurementRecord.MIN_PCR_ID;
|
||||
final int maxPcrId = TPMMeasurementRecord.MAX_PCR_ID;
|
||||
for (int i = minPcrId; i < maxPcrId; i++) {
|
||||
TPMMeasurementRecord.checkForValidPcrId(i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a negative PCR ID throws an IllegalArgumentException.
|
||||
*/
|
||||
@Test
|
||||
public final void testCheckForValidPcrIdNegative() {
|
||||
final int pcrId = -1;
|
||||
assertThrows(IllegalArgumentException.class, () ->
|
||||
TPMMeasurementRecord.checkForValidPcrId(pcrId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a high invalid PCR ID throws an IllegalArgumentException.
|
||||
*/
|
||||
@Test
|
||||
public final void testCheckForValidPcrIdInvalidId() {
|
||||
final int pcrId = 35;
|
||||
assertThrows(IllegalArgumentException.class, () ->
|
||||
TPMMeasurementRecord.checkForValidPcrId(pcrId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the ExamineState can be successfully set to EXAMINED.
|
||||
*/
|
||||
@Test
|
||||
public final void testSetExamineStateExamined() {
|
||||
final ExaminableRecord.ExamineState state = ExaminableRecord.ExamineState.EXAMINED;
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
r1.setExamineState(state);
|
||||
assertEquals(state, r1.getExamineState());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the ExamineState can be successfully set to IGNORED.
|
||||
*/
|
||||
@Test
|
||||
public final void testSetExamineStateIgnored() {
|
||||
final ExaminableRecord.ExamineState state = ExaminableRecord.ExamineState.IGNORED;
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
r1.setExamineState(state);
|
||||
assertEquals(state, r1.getExamineState());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the ExamineState is successfully initialized to UNEXAMINED.
|
||||
*/
|
||||
@Test
|
||||
public final void testSetExamineStateInitial() {
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
assertEquals(ExaminableRecord.ExamineState.UNEXAMINED, r1.getExamineState());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that setting the ExamineState to UNEXAMINED throws an IllegalArgumentException.
|
||||
*/
|
||||
@Test
|
||||
public final void testSetExamineStateUnexamined() {
|
||||
final ExaminableRecord.ExamineState state = ExaminableRecord.ExamineState.UNEXAMINED;
|
||||
TPMMeasurementRecord r1 = getDefaultRecord();
|
||||
assertThrows(IllegalArgumentException.class, () ->
|
||||
r1.setExamineState(state));
|
||||
}
|
||||
|
||||
private TPMMeasurementRecord getDefaultRecord() {
|
||||
return new TPMMeasurementRecord(DEFAULT_PCR_ID,
|
||||
getDigest(DEFAULT_HASH));
|
||||
}
|
||||
|
||||
private Digest getDigest(final String hash) {
|
||||
try {
|
||||
final byte[] bytes = Hex.decodeHex(hash.toCharArray());
|
||||
return new Digest(DigestAlgorithm.SHA1, bytes);
|
||||
} catch (DecoderException e) {
|
||||
LOGGER.error("unable to create digest", e);
|
||||
throw new RuntimeException("unable to create digest", e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,209 @@
|
||||
package hirs.attestationca.persist.entity.userdefined.report;
|
||||
|
||||
import hirs.attestationca.persist.entity.userdefined.info.OSInfo;
|
||||
import hirs.attestationca.persist.entity.userdefined.info.TPMInfo;
|
||||
import hirs.attestationca.persist.entity.userdefined.info.NetworkInfo;
|
||||
import hirs.attestationca.persist.entity.userdefined.info.HardwareInfo;
|
||||
import hirs.attestationca.persist.entity.userdefined.info.FirmwareInfo;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
/**
|
||||
* DeviceInfoReportTest is a unit test class for DeviceInfoReports.
|
||||
*/
|
||||
public class DeviceInfoReportTest {
|
||||
private final NetworkInfo networkInfo = createTestNetworkInfo();
|
||||
private final OSInfo osInfo = createTestOSInfo();
|
||||
private final FirmwareInfo firmwareInfo = createTestFirmwareInfo();
|
||||
private final HardwareInfo hardwareInfo = createTestHardwareInfo();
|
||||
private final TPMInfo tpmInfo = createTPMInfo();
|
||||
private static final String TEST_IDENTITY_CERT = "/tpm/sample_identity_cert.cer";
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger(DeviceInfoReportTest.class);
|
||||
|
||||
private static final String EXPECTED_CLIENT_VERSION = "Test.Version";
|
||||
|
||||
/**
|
||||
* Tests instantiation of a DeviceInfoReport.
|
||||
*/
|
||||
@Test
|
||||
public final void deviceInfoReport() {
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that NetworkInfo cannot be null.
|
||||
*/
|
||||
@Test
|
||||
public final void networkInfoNull() {
|
||||
assertThrows(NullPointerException.class, () ->
|
||||
new DeviceInfoReport(null, osInfo, firmwareInfo, hardwareInfo, tpmInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that OSInfo cannot be null.
|
||||
*/
|
||||
@Test
|
||||
public final void osInfoNull() {
|
||||
assertThrows(NullPointerException.class, () ->
|
||||
new DeviceInfoReport(networkInfo, null, firmwareInfo, hardwareInfo, tpmInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that FirmwareInfo cannot be null.
|
||||
*/
|
||||
@Test
|
||||
public final void firmwareInfoNull() {
|
||||
assertThrows(NullPointerException.class, () ->
|
||||
new DeviceInfoReport(networkInfo, osInfo, null, hardwareInfo, tpmInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that HardwareInfo cannot be null.
|
||||
*/
|
||||
@Test
|
||||
public final void hardwareInfoNull() {
|
||||
assertThrows(NullPointerException.class, () ->
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, null, tpmInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that TPMInfo may be null.
|
||||
*/
|
||||
@Test
|
||||
public final void tpmInfoNull() {
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, hardwareInfo, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the getters for DeviceInfoReport work as expected.
|
||||
*/
|
||||
@Test
|
||||
public final void testGetters() {
|
||||
DeviceInfoReport deviceInfoReport =
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
assertEquals(networkInfo, deviceInfoReport.getNetworkInfo());
|
||||
assertEquals(osInfo, deviceInfoReport.getOSInfo());
|
||||
assertEquals(firmwareInfo, deviceInfoReport.getFirmwareInfo());
|
||||
assertEquals(hardwareInfo, deviceInfoReport.getHardwareInfo());
|
||||
assertEquals(tpmInfo, deviceInfoReport.getTpmInfo());
|
||||
assertEquals(EXPECTED_CLIENT_VERSION, deviceInfoReport.getClientApplicationVersion());
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a DeviceInfoReport instance usable for testing.
|
||||
*
|
||||
* @return a test DeviceInfoReport
|
||||
*/
|
||||
public static DeviceInfoReport getTestReport() {
|
||||
return new DeviceInfoReport(
|
||||
createTestNetworkInfo(), createTestOSInfo(), createTestFirmwareInfo(),
|
||||
createTestHardwareInfo(), createTPMInfo()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a test instance of NetworkInfo.
|
||||
*
|
||||
* @return network information for a fake device
|
||||
*/
|
||||
public static NetworkInfo createTestNetworkInfo() {
|
||||
try {
|
||||
final String hostname = "test.hostname";
|
||||
final InetAddress ipAddress =
|
||||
InetAddress.getByAddress(new byte[] {127, 0, 0, 1});
|
||||
final byte[] macAddress = new byte[] {11, 22, 33, 44, 55, 66};
|
||||
return new NetworkInfo(hostname, ipAddress, macAddress);
|
||||
|
||||
} catch (UnknownHostException e) {
|
||||
LOGGER.error("error occurred while creating InetAddress");
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a test instance of OSInfo.
|
||||
*
|
||||
* @return OS information for a fake device
|
||||
*/
|
||||
public static OSInfo createTestOSInfo() {
|
||||
return new OSInfo("test os name", "test os version", "test os arch",
|
||||
"test distribution", "test distribution release");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a test instance of FirmwareInfo.
|
||||
*
|
||||
* @return Firmware information for a fake device
|
||||
*/
|
||||
public static FirmwareInfo createTestFirmwareInfo() {
|
||||
return new FirmwareInfo("test bios vendor", "test bios version", "test bios release date");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a test instance of HardwareInfo.
|
||||
*
|
||||
* @return Hardware information for a fake device
|
||||
*/
|
||||
public static HardwareInfo createTestHardwareInfo() {
|
||||
return new HardwareInfo("test manufacturer", "test product name", "test version",
|
||||
"test really long serial number with many characters", "test really long chassis "
|
||||
+ "serial number with many characters",
|
||||
"test really long baseboard serial number with many characters");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a test instance of TPMInfo.
|
||||
*
|
||||
* @return TPM information for a fake device
|
||||
*/
|
||||
public static final TPMInfo createTPMInfo() {
|
||||
final short num1 = 1;
|
||||
final short num2 = 2;
|
||||
final short num3 = 3;
|
||||
final short num4 = 4;
|
||||
return new TPMInfo("test os make", num1, num2, num3, num4,
|
||||
getTestIdentityCertificate());
|
||||
}
|
||||
|
||||
private static X509Certificate getTestIdentityCertificate() {
|
||||
X509Certificate certificateValue = null;
|
||||
InputStream istream = null;
|
||||
istream = DeviceInfoReportTest.class.getResourceAsStream(
|
||||
TEST_IDENTITY_CERT
|
||||
);
|
||||
try {
|
||||
if (istream == null) {
|
||||
throw new FileNotFoundException(TEST_IDENTITY_CERT);
|
||||
}
|
||||
CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
||||
certificateValue = (X509Certificate) cf.generateCertificate(
|
||||
istream);
|
||||
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
} finally {
|
||||
if (istream != null) {
|
||||
try {
|
||||
istream.close();
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("test certificate file could not be closed");
|
||||
}
|
||||
}
|
||||
}
|
||||
return certificateValue;
|
||||
}
|
||||
}
|
1
HIRS_AttestationCA/src/test/resources/VERSION
Normal file
1
HIRS_AttestationCA/src/test/resources/VERSION
Normal file
@ -0,0 +1 @@
|
||||
Test.Version
|
Loading…
Reference in New Issue
Block a user