mirror of
https://github.com/nsacyber/HIRS.git
synced 2025-03-23 12:35:18 +00:00
Trying to fix up code to pull down the correct library for JPARepository
This commit is contained in:
parent
d4b0a87228
commit
53c565717d
@ -14,6 +14,7 @@ dependencies {
|
||||
compile libs.commons_codec
|
||||
compile libs.commons_lang
|
||||
compile libs.spring_webmvc
|
||||
compile libs.spring_data // Cyrus ?
|
||||
compile libs.log4j2
|
||||
compile libs.log4j2_web
|
||||
compile libs.protobuf_java
|
||||
|
@ -100,7 +100,8 @@ public class AttestationCertificateAuthorityConfiguration implements WebMvcConfi
|
||||
*/
|
||||
// @Bean
|
||||
public SessionFactory sessionFactory() {
|
||||
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(getSettings()).build();
|
||||
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
|
||||
.applySettings(getSettings()).build();
|
||||
MetadataSources metadataSources = new MetadataSources(serviceRegistry);
|
||||
Metadata metadata = metadataSources.buildMetadata();
|
||||
// LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
|
||||
@ -113,14 +114,19 @@ public class AttestationCertificateAuthorityConfiguration implements WebMvcConfi
|
||||
|
||||
private Map<String, String> getSettings() {
|
||||
Map<String, String> settings = new HashMap<>();
|
||||
settings.put("connection.driver_class", environment.getRequiredProperty("persistence.db.driverClass"));
|
||||
settings.put("connection.driver_class",
|
||||
environment.getRequiredProperty("persistence.db.driverClass"));
|
||||
settings.put("dialect", environment.getRequiredProperty("persistence.hibernate.dialect"));
|
||||
settings.put("hibernate.connection.url", environment.getRequiredProperty("persistence.db.url"));
|
||||
settings.put("hibernate.connection.username", environment.getRequiredProperty("persistence.db.username"));
|
||||
settings.put("hibernate.connection.password", environment.getRequiredProperty("persistence.db.password"));
|
||||
settings.put("hibernate.connection.url",
|
||||
environment.getRequiredProperty("persistence.db.url"));
|
||||
settings.put("hibernate.connection.username",
|
||||
environment.getRequiredProperty("persistence.db.username"));
|
||||
settings.put("hibernate.connection.password",
|
||||
environment.getRequiredProperty("persistence.db.password"));
|
||||
// settings.put("hibernate.current_session_context_class", );
|
||||
settings.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
|
||||
settings.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
|
||||
settings.put("hibernate.format_sql",
|
||||
environment.getRequiredProperty("hibernate.format_sql"));
|
||||
return settings;
|
||||
}
|
||||
|
||||
@ -141,9 +147,12 @@ public class AttestationCertificateAuthorityConfiguration implements WebMvcConfi
|
||||
dataSource.setDriverClassName(
|
||||
environment.getRequiredProperty("persistence.db.driverClass"));
|
||||
|
||||
// dataSource.setMaximumPoolSize(Integer.parseInt(environment.getRequiredProperty("persistence.db.maximumPoolSize"));
|
||||
// dataSource.setConnectionTimeout(Long.parseLong(environment.getRequiredProperty("persistence.db.connectionTimeout"));
|
||||
// dataSource.setLeakDetectionThreshold(Long.parseLong(environment.getRequiredProperty("persistence.db.leakDetectionThreshold"));
|
||||
// dataSource.setMaximumPoolSize(Integer.parseInt(environment
|
||||
// .getRequiredProperty("persistence.db.maximumPoolSize"));
|
||||
// dataSource.setConnectionTimeout(Long.parseLong(environment.
|
||||
// getRequiredProperty("persistence.db.connectionTimeout"));
|
||||
// dataSource.setLeakDetectionThreshold(Long.parseLong(environment
|
||||
// .getRequiredProperty("persistence.db.leakDetectionThreshold"));
|
||||
|
||||
return dataSource;
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package hirs.attestationca;
|
||||
|
||||
import hirs.attestationca.persist.DBAppraiserManager;
|
||||
import hirs.attestationca.persist.DBDeviceGroupManager;
|
||||
import hirs.attestationca.persist.DBPolicyManager;
|
||||
import hirs.attestationca.servicemanager.DBAppraiserManager;
|
||||
import hirs.attestationca.servicemanager.DBDeviceGroupManager;
|
||||
import hirs.attestationca.servicemanager.DBPolicyManager;
|
||||
import hirs.utils.HIRSProfiles;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
|
||||
@ -25,8 +25,10 @@ public class InitializationListener implements ServletContextListener {
|
||||
context.refresh();
|
||||
|
||||
// obtain reference to hibernate session factory
|
||||
// SessionFactory sessionFactory = context.getBean(LocalSessionFactoryBean.class).getObject();
|
||||
EntityManager entityManager = context.getBean(EntityManagerFactory.class).createEntityManager();
|
||||
// SessionFactory sessionFactory = context.getBean(LocalSessionFactoryBean.class)
|
||||
// .getObject();
|
||||
EntityManager entityManager = context.getBean(EntityManagerFactory.class)
|
||||
.createEntityManager();
|
||||
AcaDbInit.insertDefaultEntries(
|
||||
new DBAppraiserManager(entityManager),
|
||||
new DBDeviceGroupManager(entityManager),
|
||||
|
@ -1,17 +1,17 @@
|
||||
package hirs.attestationca.configuration;
|
||||
|
||||
import hirs.attestationca.AttestationCertificateAuthorityConfiguration;
|
||||
import hirs.attestationca.persist.DBCertificateManager;
|
||||
import hirs.attestationca.persist.DBDeviceGroupManager;
|
||||
import hirs.attestationca.persist.DBDeviceManager;
|
||||
import hirs.attestationca.persist.DBManager;
|
||||
import hirs.attestationca.persist.DBPolicyManager;
|
||||
import hirs.attestationca.persist.DBPortalInfoManager;
|
||||
import hirs.attestationca.persist.DBReferenceEventManager;
|
||||
import hirs.attestationca.persist.DBReferenceManifestManager;
|
||||
import hirs.attestationca.persist.DBReportManager;
|
||||
import hirs.attestationca.persist.DBReportRequestStateManager;
|
||||
import hirs.attestationca.persist.DBReportSummaryManager;
|
||||
import hirs.attestationca.servicemanager.DBCertificateManager;
|
||||
import hirs.attestationca.servicemanager.DBDeviceGroupManager;
|
||||
import hirs.attestationca.servicemanager.DBDeviceManager;
|
||||
import hirs.attestationca.servicemanager.DBManager;
|
||||
import hirs.attestationca.servicemanager.DBPolicyManager;
|
||||
import hirs.attestationca.servicemanager.DBPortalInfoManager;
|
||||
import hirs.attestationca.servicemanager.DBReferenceEventManager;
|
||||
import hirs.attestationca.servicemanager.DBReferenceManifestManager;
|
||||
import hirs.attestationca.servicemanager.DBReportManager;
|
||||
import hirs.attestationca.servicemanager.DBReportRequestStateManager;
|
||||
import hirs.attestationca.servicemanager.DBReportSummaryManager;
|
||||
import hirs.data.persist.SupplyChainValidationSummary;
|
||||
import hirs.persist.CertificateManager;
|
||||
import hirs.persist.CrudManager;
|
||||
@ -50,9 +50,10 @@ public class PersistenceConfiguration {
|
||||
public static final String DEVICE_STATE_MANAGER_BEAN_NAME = "general_db_man_bean";
|
||||
|
||||
@Autowired
|
||||
EntityManagerFactory entityManagerFactory;
|
||||
private EntityManagerFactory entityManagerFactory;
|
||||
|
||||
@PersistenceContext
|
||||
EntityManager entityManager = entityManagerFactory.createEntityManager();
|
||||
private EntityManager entityManager = entityManagerFactory.createEntityManager();
|
||||
|
||||
@Autowired
|
||||
private long retryWaitTimeMilliseconds;
|
||||
@ -184,9 +185,10 @@ public class PersistenceConfiguration {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link hirs.attestationca.persist.DBManager} for SupplyChainValidationSummary persistence, ready for use.
|
||||
* Creates a {@link hirs.attestationca.servicemanager.DBManager}
|
||||
* for SupplyChainValidationSummary persistence, ready for use.
|
||||
*
|
||||
* @return {@link hirs.attestationca.persist.DBManager}
|
||||
* @return {@link hirs.attestationca.servicemanager.DBManager}
|
||||
*/
|
||||
@Bean
|
||||
public CrudManager<SupplyChainValidationSummary> supplyChainValidationSummaryManager() {
|
||||
|
@ -1,7 +0,0 @@
|
||||
/**
|
||||
* Data access objects (DAOs) for storing and retrieving objects from the
|
||||
* database.
|
||||
*/
|
||||
|
||||
package hirs.attestationca.persist;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.FilteredRecordsList;
|
||||
import hirs.data.persist.ArchivableEntity;
|
||||
@ -9,19 +9,13 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.StatelessSession;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.boot.Metadata;
|
||||
import org.hibernate.boot.MetadataSources;
|
||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||
import org.hibernate.criterion.Conjunction;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Disjunction;
|
||||
import org.hibernate.criterion.MatchMode;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.hibernate.query.Query;
|
||||
import org.hibernate.service.ServiceRegistry;
|
||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -509,7 +503,7 @@ public abstract class AbstractDbManager<T> implements CrudManager<T> {
|
||||
return null;
|
||||
}
|
||||
Transaction tx = null;
|
||||
Session session =getSession();
|
||||
Session session = getSession();
|
||||
try {
|
||||
LOGGER.debug("retrieving object from db");
|
||||
tx = session.beginTransaction();
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.appraiser.Appraiser;
|
||||
import hirs.persist.AppraiserManager;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.data.persist.certificate.Certificate;
|
||||
import hirs.persist.CertificateManager;
|
||||
@ -39,8 +39,10 @@ public class DBCertificateManager extends DBManager<Certificate>
|
||||
}
|
||||
|
||||
/**
|
||||
* This method does not need to be used directly as it is used by {@link hirs.persist.CertificateSelector}'s
|
||||
* get* methods. Regardless, it may be used to retrieve certificates by other code in this
|
||||
* This method does not need to be used directly as it is used by
|
||||
* {@link hirs.persist.CertificateSelector}'s
|
||||
* get methods. Regardless, it may be used to retrieve certificates
|
||||
* by other code in this
|
||||
* package, given a configured CertificateSelector.
|
||||
*
|
||||
* Example:
|
||||
@ -55,7 +57,8 @@ public class DBCertificateManager extends DBManager<Certificate>
|
||||
* </pre>
|
||||
*
|
||||
* @param <T> the type of certificate that will be retrieved
|
||||
* @param certificateSelector a configured {@link hirs.persist.CertificateSelector} to use for querying
|
||||
* @param certificateSelector a configured {@link hirs.persist.CertificateSelector}
|
||||
* to use for querying
|
||||
* @return the resulting set of Certificates, possibly empty
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.FilteredRecordsList;
|
||||
import hirs.data.persist.DeviceGroup;
|
||||
@ -12,7 +12,6 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.query.Query;
|
||||
import org.springframework.stereotype.Service;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.FilteredRecordsList;
|
||||
import hirs.data.persist.Device;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.FilteredRecordsList;
|
||||
import hirs.data.persist.ArchivableEntity;
|
||||
@ -7,7 +7,6 @@ import hirs.persist.DBManagerException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.StaleObjectStateException;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.exception.LockAcquisitionException;
|
||||
@ -118,7 +117,8 @@ public class DBManager<T> extends AbstractDbManager<T> {
|
||||
* @param predicateCollection the collection of Criterion to apply
|
||||
*
|
||||
* @return a List of objects that match the criteria
|
||||
* @throws hirs.persist.DBManagerException if an error is encountered while performing the query or creating
|
||||
* @throws hirs.persist.DBManagerException if an error is encountered
|
||||
* while performing the query or creating
|
||||
* the result objects
|
||||
*/
|
||||
public final List<T> getWithCriteria(final Collection<Predicate> predicateCollection)
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import hirs.appraiser.Appraiser;
|
||||
@ -12,7 +12,6 @@ import hirs.persist.PolicyMapper;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.query.Query;
|
||||
import org.springframework.stereotype.Repository;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.data.persist.enums.PortalScheme;
|
||||
import hirs.data.persist.info.PortalInfo;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.data.persist.BaseReferenceManifest;
|
||||
import hirs.data.persist.ReferenceDigestRecord;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.data.persist.ReferenceManifest;
|
||||
import hirs.persist.ReferenceManifestManager;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.data.persist.Report;
|
||||
import hirs.persist.DBManagerException;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.data.persist.Device;
|
||||
import hirs.data.persist.ReportRequestState;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.data.persist.ReportSummary;
|
||||
import hirs.persist.DBManagerException;
|
@ -1,4 +1,4 @@
|
||||
package hirs.attestationca.persist;
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
||||
import hirs.persist.RepositoryManager;
|
||||
import hirs.repository.RepoPackage;
|
||||
@ -10,7 +10,8 @@ import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class defines a {@link hirs.persist.RepositoryManager} that stores Repositories and RepoPackages
|
||||
* This class defines a {@link hirs.persist.RepositoryManager} that
|
||||
* stores Repositories and RepoPackages
|
||||
* in a database.
|
||||
*/
|
||||
@Service
|
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Service objects for the DAOs; storing and retrieving objects from the
|
||||
* database.
|
||||
*/
|
||||
|
||||
package hirs.attestationca.servicemanager;
|
||||
|
@ -19,6 +19,10 @@ hibernate.format_sql = true
|
||||
persistence.hibernate.contextClass = org.springframework.orm.hibernate5.SpringSessionContext
|
||||
persistence.hibernate.provider = org.hibernate.hikaricp.internal.HikariCPConnectionProvider
|
||||
|
||||
|
||||
spring.datasource.url = jdbc:mariadb://localhost/hirs_db?autoReconnect=true&useSSL=true&requireSSL=true&enabledSslProtocolSuites=TLSv1&disableSslHostnameVerification=true
|
||||
spring.datasource.username = hirs_db
|
||||
spring.datasource.password = hirs_db
|
||||
spring.datasource.driver-class-name = org.mariadb.jdbc.Driver
|
||||
spring.jpa.generate-ddl = true
|
||||
# caching the entity manager in a persistence
|
||||
# inject the entity manger in spring using context
|
@ -5,7 +5,6 @@ import hirs.data.persist.AppraisalStatus;
|
||||
import hirs.data.persist.Device;
|
||||
import hirs.data.persist.DeviceGroup;
|
||||
import hirs.data.persist.DeviceInfoReport;
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import hirs.data.persist.SupplyChainPolicy;
|
||||
import hirs.data.persist.SupplyChainValidation;
|
||||
import hirs.data.persist.SupplyChainValidationSummary;
|
||||
@ -17,9 +16,9 @@ import hirs.data.persist.certificate.PlatformCredential;
|
||||
import hirs.persist.AppraiserManager;
|
||||
import hirs.persist.CertificateManager;
|
||||
import hirs.persist.CrudManager;
|
||||
import hirs.attestationca.persist.DBCertificateManager;
|
||||
import hirs.attestationca.persist.DBDeviceGroupManager;
|
||||
import hirs.attestationca.persist.DBDeviceManager;
|
||||
import hirs.attestationca.servicemanager.DBCertificateManager;
|
||||
import hirs.attestationca.servicemanager.DBDeviceGroupManager;
|
||||
import hirs.attestationca.servicemanager.DBDeviceManager;
|
||||
import hirs.persist.DeviceGroupManager;
|
||||
import hirs.persist.DeviceManager;
|
||||
import hirs.persist.PolicyManager;
|
||||
|
@ -9,7 +9,7 @@ import hirs.attestationca.portal.page.params.NoPageParams;
|
||||
import hirs.data.persist.Device;
|
||||
import hirs.data.persist.certificate.Certificate;
|
||||
import hirs.data.persist.certificate.DeviceAssociatedCertificate;
|
||||
import hirs.attestationca.persist.DBManager;
|
||||
import hirs.attestationca.servicemanager.DBManager;
|
||||
import hirs.persist.DeviceManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
|
@ -13,8 +13,8 @@ import hirs.data.persist.SupportReferenceManifest;
|
||||
import hirs.data.persist.certificate.Certificate;
|
||||
import hirs.persist.CriteriaModifier;
|
||||
import hirs.persist.DBManagerException;
|
||||
import hirs.attestationca.persist.DBReferenceEventManager;
|
||||
import hirs.attestationca.persist.DBReferenceManifestManager;
|
||||
import hirs.attestationca.servicemanager.DBReferenceEventManager;
|
||||
import hirs.attestationca.servicemanager.DBReferenceManifestManager;
|
||||
import hirs.persist.ReferenceEventManager;
|
||||
import hirs.persist.ReferenceManifestManager;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
@ -4,6 +4,7 @@ import javax.persistence.Column;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.MappedSuperclass;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -11,7 +12,7 @@ import java.util.UUID;
|
||||
* An abstract database entity.
|
||||
*/
|
||||
@MappedSuperclass
|
||||
public abstract class AbstractEntity {
|
||||
public abstract class AbstractEntity implements Serializable {
|
||||
|
||||
/**
|
||||
* static value for the length of a status message for objects that
|
||||
|
@ -72,33 +72,21 @@ public abstract class ReferenceManifest extends ArchivableEntity {
|
||||
private byte[] rimBytes;
|
||||
@Column(nullable = false)
|
||||
private String rimType = "Base";
|
||||
@Column
|
||||
private String tagId = null;
|
||||
@Column
|
||||
private boolean swidPatch = false;
|
||||
@Column
|
||||
private boolean swidSupplemental = false;
|
||||
@Column
|
||||
private String platformManufacturer = null;
|
||||
@Column
|
||||
private String platformManufacturerId = null;
|
||||
@Column
|
||||
private String swidTagVersion = null;
|
||||
@Column
|
||||
private String swidVersion = null;
|
||||
@Column
|
||||
private String platformModel = null;
|
||||
@Column(nullable = false)
|
||||
private String fileName = null;
|
||||
@Column
|
||||
private UUID associatedRim;
|
||||
@Column
|
||||
@JsonIgnore
|
||||
private String deviceName;
|
||||
@Column
|
||||
@JsonIgnore
|
||||
private String hexDecHash = "";
|
||||
@Column
|
||||
@JsonIgnore
|
||||
private String eventLogHash = "";
|
||||
|
||||
|
@ -1,372 +0,0 @@
|
||||
package hirs.data.persist;
|
||||
|
||||
import hirs.data.persist.info.FirmwareInfo;
|
||||
import hirs.data.persist.info.HardwareInfo;
|
||||
import hirs.data.persist.info.NetworkInfo;
|
||||
import hirs.data.persist.info.OSInfo;
|
||||
import hirs.data.persist.info.TPMInfo;
|
||||
import hirs.foss.XMLCleaner;
|
||||
import hirs.persist.DBReportManager;
|
||||
import hirs.persist.ReportManager;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.query.Query;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.AfterClass;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Root;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Marshaller;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* DeviceInfoReportTest is a unit test class for DeviceInfoReports.
|
||||
*/
|
||||
public class DeviceInfoReportTest extends SpringPersistenceTest {
|
||||
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";
|
||||
|
||||
private ReportManager reportManager;
|
||||
|
||||
/**
|
||||
* Initializes a <code>SessionFactory</code>. The factory is used for an
|
||||
* in-memory database that is used for testing.
|
||||
*/
|
||||
@BeforeClass
|
||||
public final void setup() {
|
||||
LOGGER.debug("retrieving session factory");
|
||||
reportManager = new DBReportManager(sessionFactory);
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the <code>SessionFactory</code> from setup.
|
||||
*/
|
||||
@AfterClass
|
||||
public final void tearDown() {
|
||||
LOGGER.debug("closing session factory");
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the test state to a known good state. This currently only resets
|
||||
* the database by removing all <code>Report</code> objects.
|
||||
*/
|
||||
@AfterMethod
|
||||
public final void resetTestState() {
|
||||
LOGGER.debug("reset test state");
|
||||
LOGGER.debug("deleting all reports");
|
||||
Session session = sessionFactory.getCurrentSession();
|
||||
session.beginTransaction();
|
||||
CriteriaBuilder builder = session.getCriteriaBuilder();
|
||||
CriteriaQuery<Report> criteriaQuery = builder.createQuery(Report.class);
|
||||
Root<Report> root = criteriaQuery.from(Report.class);
|
||||
criteriaQuery.select(root);
|
||||
Query<Report> query = session.createQuery(criteriaQuery);
|
||||
try {
|
||||
final List<Report> reports = query.getResultList();
|
||||
// final List<?> reports = session.createCriteria(Report.class).list();
|
||||
for (Object o : reports) {
|
||||
LOGGER.debug("deleting report: {}", o);
|
||||
session.delete(o);
|
||||
}
|
||||
LOGGER.debug("all reports removed");
|
||||
} finally {
|
||||
session.getTransaction().commit();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests instantiation of a DeviceInfoReport.
|
||||
*/
|
||||
@Test
|
||||
public final void deviceInfoReport() {
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that NetworkInfo cannot be null.
|
||||
*/
|
||||
@Test(expectedExceptions = NullPointerException.class)
|
||||
public final void networkInfoNull() {
|
||||
new DeviceInfoReport(null, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that OSInfo cannot be null.
|
||||
*/
|
||||
@Test(expectedExceptions = NullPointerException.class)
|
||||
public final void osInfoNull() {
|
||||
new DeviceInfoReport(networkInfo, null, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that FirmwareInfo cannot be null.
|
||||
*/
|
||||
@Test(expectedExceptions = NullPointerException.class)
|
||||
public final void firmwareInfoNull() {
|
||||
new DeviceInfoReport(networkInfo, osInfo, null, hardwareInfo, tpmInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that HardwareInfo cannot be null.
|
||||
*/
|
||||
@Test(expectedExceptions = NullPointerException.class)
|
||||
public final void hardwareInfoNull() {
|
||||
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);
|
||||
Assert.assertEquals(deviceInfoReport.getNetworkInfo(), networkInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getOSInfo(), osInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getFirmwareInfo(), firmwareInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getHardwareInfo(), hardwareInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getTPMInfo(), tpmInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getClientApplicationVersion(),
|
||||
EXPECTED_CLIENT_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the XML is generated correctly.
|
||||
*
|
||||
* @throws JAXBException
|
||||
* in case there are errors marshalling/unmarshalling
|
||||
*/
|
||||
@Test
|
||||
public final void marshalUnmarshalTest() throws JAXBException {
|
||||
DeviceInfoReport deviceInfoReport =
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
String xml = getXMLFromReport(deviceInfoReport);
|
||||
DeviceInfoReport deviceInfoReportFromXML = getReportFromXML(xml);
|
||||
Assert.assertEquals(deviceInfoReportFromXML.getNetworkInfo(), networkInfo);
|
||||
Assert.assertEquals(deviceInfoReportFromXML.getOSInfo(), osInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getFirmwareInfo(), firmwareInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getHardwareInfo(), hardwareInfo);
|
||||
Assert.assertEquals(deviceInfoReportFromXML.getTPMInfo(), tpmInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getClientApplicationVersion(),
|
||||
EXPECTED_CLIENT_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a <code>DeviceInfoReport</code> can be saved in the
|
||||
* <code>ReportManager</code>.
|
||||
*/
|
||||
@Test
|
||||
public final void testSaveReport() {
|
||||
final DeviceInfoReport deviceInfoReport = new DeviceInfoReport(
|
||||
networkInfo, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
final DeviceInfoReport savedReport = (DeviceInfoReport) reportManager
|
||||
.saveReport(deviceInfoReport);
|
||||
Assert.assertEquals(savedReport.getNetworkInfo(), networkInfo);
|
||||
Assert.assertEquals(savedReport.getOSInfo(), osInfo);
|
||||
Assert.assertEquals(savedReport.getFirmwareInfo(), firmwareInfo);
|
||||
Assert.assertEquals(savedReport.getHardwareInfo(), hardwareInfo);
|
||||
Assert.assertEquals(savedReport.getTPMInfo(), tpmInfo);
|
||||
Assert.assertEquals(deviceInfoReport.getClientApplicationVersion(),
|
||||
EXPECTED_CLIENT_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a <code>DeviceInfoReport</code> can be saved in the
|
||||
* <code>ReportManager</code> and then retrieved.
|
||||
*/
|
||||
@Test
|
||||
public final void testGetReport() {
|
||||
final DeviceInfoReport deviceInfoReport =
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
final DeviceInfoReport savedReport =
|
||||
(DeviceInfoReport) reportManager.saveReport(deviceInfoReport);
|
||||
final DeviceInfoReport getReport =
|
||||
(DeviceInfoReport) reportManager.getReport(savedReport.getId());
|
||||
Assert.assertEquals(getReport.getNetworkInfo(), networkInfo);
|
||||
Assert.assertEquals(getReport.getOSInfo(), osInfo);
|
||||
Assert.assertEquals(getReport.getFirmwareInfo(), firmwareInfo);
|
||||
Assert.assertEquals(getReport.getHardwareInfo(), hardwareInfo);
|
||||
Assert.assertEquals(getReport.getTPMInfo(), tpmInfo);
|
||||
Assert.assertEquals(getReport.getClientApplicationVersion(),
|
||||
EXPECTED_CLIENT_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a <code>DeviceInfoReport</code> can be saved in the
|
||||
* <code>ReportManager</code> and then deleted.
|
||||
*/
|
||||
@Test
|
||||
public final void testDeleteReport() {
|
||||
final DeviceInfoReport deviceInfoReport =
|
||||
new DeviceInfoReport(networkInfo, osInfo, firmwareInfo, hardwareInfo, tpmInfo);
|
||||
final DeviceInfoReport savedReport =
|
||||
(DeviceInfoReport) reportManager.saveReport(deviceInfoReport);
|
||||
Assert.assertNotNull(savedReport);
|
||||
final UUID id = savedReport.getId();
|
||||
Assert.assertNotNull(reportManager.getReport(id));
|
||||
Assert.assertTrue(reportManager.deleteReport(id));
|
||||
Assert.assertNull(reportManager.getReport(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
private String getXMLFromReport(final DeviceInfoReport deviceInfoReport)
|
||||
throws JAXBException {
|
||||
String xml = null;
|
||||
JAXBContext context = JAXBContext.newInstance(DeviceInfoReport.class);
|
||||
Marshaller marshaller = context.createMarshaller();
|
||||
StringWriter writer = new StringWriter();
|
||||
marshaller.marshal(deviceInfoReport, writer);
|
||||
xml = writer.toString();
|
||||
xml = XMLCleaner.stripNonValidXMLCharacters(xml);
|
||||
return xml;
|
||||
}
|
||||
|
||||
private DeviceInfoReport getReportFromXML(final String xml)
|
||||
throws JAXBException {
|
||||
DeviceInfoReport deviceInfoReport;
|
||||
JAXBContext context;
|
||||
context = JAXBContext.newInstance(DeviceInfoReport.class);
|
||||
Unmarshaller unmarshaller = context.createUnmarshaller();
|
||||
StringReader reader = new StringReader(xml);
|
||||
deviceInfoReport = (DeviceInfoReport) unmarshaller.unmarshal(reader);
|
||||
return deviceInfoReport;
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package hirs.data.persist;
|
||||
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
|
||||
|
||||
/**
|
||||
* Base class that autowires a session factory for use of
|
||||
* any tests that need a database connection.
|
||||
*/
|
||||
@ContextConfiguration(classes = PersistenceConfiguration.class)
|
||||
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
|
||||
public class SpringPersistenceTest extends AbstractTestNGSpringContextTests {
|
||||
|
||||
/**
|
||||
* Autowired session factory.
|
||||
*/
|
||||
@SuppressWarnings("checkstyle:visibilitymodifier")
|
||||
@Autowired
|
||||
protected SessionFactory sessionFactory;
|
||||
}
|
@ -1,347 +0,0 @@
|
||||
package hirs.data.persist;
|
||||
|
||||
import hirs.data.persist.certificate.Certificate;
|
||||
import hirs.persist.DBCertificateManager;
|
||||
import hirs.persist.DBManager;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.AfterClass;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import hirs.data.persist.certificate.CertificateTest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Tests the functionality in SupplyChainValidationSummary, as well as the persistence of
|
||||
* SupplyChainValidationSummary and SupplyChainValidation.
|
||||
*/
|
||||
public class SupplyChainValidationSummaryTest extends SpringPersistenceTest {
|
||||
private Device device;
|
||||
private DeviceGroup deviceGroup;
|
||||
private List<ArchivableEntity> certificates;
|
||||
|
||||
/**
|
||||
* Create a session factory to use for persistence testing and persist some certificates
|
||||
* for use by these tests.
|
||||
*
|
||||
* @throws Exception if there is a problem deserializing certificates or creating test device
|
||||
*/
|
||||
@BeforeClass
|
||||
public void setup() throws Exception {
|
||||
certificates = CertificateTest.getAllTestCertificates();
|
||||
DBCertificateManager certMan = new DBCertificateManager(sessionFactory);
|
||||
for (ArchivableEntity cert : certificates) {
|
||||
certMan.save((Certificate) cert);
|
||||
}
|
||||
|
||||
deviceGroup = new DeviceGroup("TestDeviceGroup", "TestDeviceGroupDescription");
|
||||
DBManager<DeviceGroup> devicGroupMan = new DBManager<>(DeviceGroup.class, sessionFactory);
|
||||
deviceGroup = devicGroupMan.save(deviceGroup);
|
||||
|
||||
device = DeviceTest.getTestDevice("TestDevice");
|
||||
device.setDeviceGroup(deviceGroup);
|
||||
DBManager<Device> deviceMan = new DBManager<>(Device.class, sessionFactory);
|
||||
device = deviceMan.save(device);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove test certificates and close the session factory.
|
||||
*/
|
||||
@AfterClass
|
||||
public void teardown() {
|
||||
DBCertificateManager certManager = new DBCertificateManager(sessionFactory);
|
||||
for (ArchivableEntity cert : certificates) {
|
||||
certManager.deleteCertificate((Certificate) cert);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the test state to a known good state. This resets
|
||||
* the database by removing all {@link Certificate} objects.
|
||||
*/
|
||||
@AfterMethod
|
||||
public void resetTestState() {
|
||||
DBManager<SupplyChainValidationSummary> summaryManager = new DBManager<>(
|
||||
SupplyChainValidationSummary.class,
|
||||
sessionFactory
|
||||
);
|
||||
|
||||
for (SupplyChainValidationSummary summary
|
||||
: summaryManager.getList(SupplyChainValidationSummary.class)) {
|
||||
summaryManager.deleteById(summary.getId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that an empty summary behaves as expected.
|
||||
*/
|
||||
@Test
|
||||
public void testEmptySummary() {
|
||||
SupplyChainValidationSummary emptySummary = getTestSummary(
|
||||
0,
|
||||
0,
|
||||
certificates
|
||||
);
|
||||
|
||||
Assert.assertEquals(emptySummary.getDevice(), device);
|
||||
Assert.assertEquals(emptySummary.getValidations(), Collections.EMPTY_LIST);
|
||||
Assert.assertEquals(emptySummary.getOverallValidationResult(), AppraisalStatus.Status.PASS);
|
||||
Assert.assertNotNull(emptySummary.getCreateTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that a summary can't be created with a null validationIdentifier.
|
||||
*/
|
||||
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||
public void testNullValidationIdentifier() {
|
||||
new SupplyChainValidationSummary(null, Collections.emptyList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that a summary can't be created with a null validations list.
|
||||
*/
|
||||
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||
public void testNullValidationList() {
|
||||
new SupplyChainValidationSummary(device, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that summaries with one and two component validations, which both represent successful
|
||||
* validations, have getters that return the expected information.
|
||||
*/
|
||||
@Test
|
||||
public void testSuccessfulSummary() {
|
||||
SupplyChainValidationSummary oneValidation = getTestSummary(
|
||||
1,
|
||||
0,
|
||||
certificates
|
||||
);
|
||||
|
||||
Assert.assertEquals(oneValidation.getDevice(), device);
|
||||
Assert.assertEquals(oneValidation.getValidations().size(), 1);
|
||||
Assert.assertEquals(oneValidation.getOverallValidationResult(),
|
||||
AppraisalStatus.Status.PASS);
|
||||
Assert.assertNotNull(oneValidation.getCreateTime());
|
||||
|
||||
SupplyChainValidationSummary twoValidations = getTestSummary(
|
||||
2,
|
||||
0,
|
||||
certificates
|
||||
);
|
||||
|
||||
Assert.assertEquals(twoValidations.getDevice(), device);
|
||||
Assert.assertEquals(twoValidations.getValidations().size(), 2);
|
||||
Assert.assertEquals(twoValidations.getOverallValidationResult(),
|
||||
AppraisalStatus.Status.PASS);
|
||||
Assert.assertNotNull(twoValidations.getCreateTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that summaries with one and two component validations, of which one represents an
|
||||
* unsuccessful validations, have getters that return the expected information.
|
||||
*/
|
||||
@Test
|
||||
public void testUnsuccessfulSummary() {
|
||||
SupplyChainValidationSummary oneValidation = getTestSummary(
|
||||
1,
|
||||
1,
|
||||
certificates
|
||||
);
|
||||
|
||||
Assert.assertEquals(oneValidation.getDevice(), device);
|
||||
Assert.assertEquals(oneValidation.getValidations().size(), 1);
|
||||
Assert.assertEquals(oneValidation.getOverallValidationResult(),
|
||||
AppraisalStatus.Status.FAIL);
|
||||
Assert.assertNotNull(oneValidation.getCreateTime());
|
||||
|
||||
SupplyChainValidationSummary twoValidations = getTestSummary(
|
||||
2,
|
||||
1,
|
||||
certificates
|
||||
);
|
||||
|
||||
Assert.assertEquals(twoValidations.getDevice(), device);
|
||||
Assert.assertEquals(twoValidations.getValidations().size(), 2);
|
||||
Assert.assertEquals(twoValidations.getOverallValidationResult(),
|
||||
AppraisalStatus.Status.FAIL);
|
||||
Assert.assertNotNull(twoValidations.getCreateTime());
|
||||
|
||||
SupplyChainValidationSummary twoBadValidations = getTestSummary(
|
||||
2,
|
||||
2,
|
||||
certificates
|
||||
);
|
||||
|
||||
Assert.assertEquals(twoBadValidations.getDevice(), device);
|
||||
Assert.assertEquals(twoBadValidations.getValidations().size(), 2);
|
||||
Assert.assertEquals(twoBadValidations.getOverallValidationResult(),
|
||||
AppraisalStatus.Status.FAIL);
|
||||
Assert.assertNotNull(twoBadValidations.getCreateTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a SupplyChainValidationSummary can be persisted.
|
||||
*/
|
||||
@Test
|
||||
public void testSave() {
|
||||
DBManager<SupplyChainValidationSummary> supplyMan = new DBManager<>(
|
||||
SupplyChainValidationSummary.class, sessionFactory
|
||||
);
|
||||
|
||||
SupplyChainValidationSummary summary = getTestSummary(
|
||||
2,
|
||||
1,
|
||||
certificates
|
||||
);
|
||||
SupplyChainValidationSummary savedSummary = supplyMan.save(summary);
|
||||
Assert.assertEquals(savedSummary, summary);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that an empty SupplyChainValidationSummary can be persisted and retrieved.
|
||||
*/
|
||||
@Test
|
||||
public void testSaveAndGetEmpty() {
|
||||
DBManager<SupplyChainValidationSummary> supplyMan = new DBManager<>(
|
||||
SupplyChainValidationSummary.class, sessionFactory
|
||||
);
|
||||
|
||||
SupplyChainValidationSummary emptySummary = getTestSummary(
|
||||
0,
|
||||
0,
|
||||
Collections.emptyList()
|
||||
);
|
||||
SupplyChainValidationSummary savedEmptySummary = supplyMan.save(emptySummary);
|
||||
|
||||
SupplyChainValidationSummary retrievedEmptySummary =
|
||||
supplyMan.get(savedEmptySummary.getId());
|
||||
Assert.assertEquals(retrievedEmptySummary, emptySummary);
|
||||
Assert.assertEquals(retrievedEmptySummary.getValidations().size(), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a SupplyChainValidationSummary with a single validation can be persisted
|
||||
* and retrieved.
|
||||
*/
|
||||
@Test
|
||||
public void testSaveAndGetSmall() {
|
||||
DBManager<SupplyChainValidationSummary> supplyMan = new DBManager<>(
|
||||
SupplyChainValidationSummary.class, sessionFactory
|
||||
);
|
||||
|
||||
List<ArchivableEntity> singleCert = certificates.subList(0, 1);
|
||||
|
||||
SupplyChainValidationSummary smallSummary = getTestSummary(
|
||||
1,
|
||||
0,
|
||||
singleCert
|
||||
);
|
||||
SupplyChainValidationSummary savedSmallSummary = supplyMan.save(smallSummary);
|
||||
|
||||
SupplyChainValidationSummary retrievedSmallSummary =
|
||||
supplyMan.get(savedSmallSummary.getId());
|
||||
Assert.assertEquals(retrievedSmallSummary, smallSummary);
|
||||
Assert.assertEquals(
|
||||
new ArrayList<>(retrievedSmallSummary.getValidations())
|
||||
.get(0).getCertificatesUsed(),
|
||||
singleCert
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a SupplyChainValidationSummary can be retrieved and that its fields are properly
|
||||
* restored.
|
||||
*/
|
||||
@Test
|
||||
public void testGet() {
|
||||
DBManager<SupplyChainValidationSummary> supplyMan = new DBManager<>(
|
||||
SupplyChainValidationSummary.class, sessionFactory
|
||||
);
|
||||
|
||||
SupplyChainValidationSummary summary = getTestSummary(
|
||||
2,
|
||||
1,
|
||||
certificates
|
||||
);
|
||||
|
||||
SupplyChainValidationSummary savedSummary = supplyMan.save(summary);
|
||||
Assert.assertEquals(savedSummary, summary);
|
||||
|
||||
SupplyChainValidationSummary retrievedSummary = supplyMan.get(savedSummary.getId());
|
||||
Assert.assertNotNull(retrievedSummary);
|
||||
Assert.assertEquals(
|
||||
retrievedSummary.getDevice(),
|
||||
summary.getDevice()
|
||||
);
|
||||
Assert.assertEquals(retrievedSummary.getCreateTime(), summary.getCreateTime());
|
||||
Assert.assertEquals(
|
||||
retrievedSummary.getOverallValidationResult(),
|
||||
summary.getOverallValidationResult()
|
||||
);
|
||||
Assert.assertEquals(retrievedSummary.getValidations(), summary.getValidations());
|
||||
|
||||
SupplyChainValidation failedValidation = null;
|
||||
for (SupplyChainValidation validation : retrievedSummary.getValidations()) {
|
||||
if (validation.getResult() != AppraisalStatus.Status.PASS) {
|
||||
failedValidation = validation;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Assert.assertNotNull(failedValidation);
|
||||
Assert.assertEquals(
|
||||
failedValidation.getCertificatesUsed(),
|
||||
certificates
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
private SupplyChainValidationSummary getTestSummary(
|
||||
final int numberOfValidations,
|
||||
final int numFail,
|
||||
final List<ArchivableEntity> certificates
|
||||
) {
|
||||
SupplyChainValidation.ValidationType[] validationTypes =
|
||||
SupplyChainValidation.ValidationType.values();
|
||||
|
||||
if (numberOfValidations > validationTypes.length) {
|
||||
throw new IllegalArgumentException(String.format(
|
||||
"Cannot have more than %d validation types",
|
||||
validationTypes.length
|
||||
));
|
||||
}
|
||||
|
||||
if (numFail > numberOfValidations) {
|
||||
throw new IllegalArgumentException(String.format(
|
||||
"Cannot have more than %d failed validations",
|
||||
validationTypes.length
|
||||
));
|
||||
}
|
||||
|
||||
List<SupplyChainValidation> validations = new ArrayList<>();
|
||||
for (int i = 0; i < numberOfValidations; i++) {
|
||||
boolean successful = true;
|
||||
if (i >= (numberOfValidations - numFail)) {
|
||||
successful = false;
|
||||
}
|
||||
|
||||
AppraisalStatus.Status result = AppraisalStatus.Status.FAIL;
|
||||
if (successful) {
|
||||
result = AppraisalStatus.Status.PASS;
|
||||
}
|
||||
|
||||
validations.add(SupplyChainValidationTest.getTestSupplyChainValidation(
|
||||
validationTypes[i],
|
||||
result,
|
||||
certificates
|
||||
));
|
||||
}
|
||||
|
||||
return new SupplyChainValidationSummary(device, validations);
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package hirs.persist;
|
||||
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import hirs.data.persist.certificate.CertificateAuthorityCredential;
|
||||
import org.springframework.util.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
|
@ -4,7 +4,6 @@ import hirs.appraiser.Appraiser;
|
||||
import hirs.appraiser.IMAAppraiser;
|
||||
import hirs.appraiser.TPMAppraiser;
|
||||
import hirs.appraiser.TestAppraiser;
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.query.Query;
|
||||
import org.testng.Assert;
|
||||
|
@ -2,7 +2,6 @@ package hirs.persist;
|
||||
|
||||
import hirs.data.persist.Device;
|
||||
import hirs.data.persist.DeviceGroup;
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import hirs.data.persist.certificate.Certificate;
|
||||
import hirs.data.persist.certificate.CertificateAuthorityCredential;
|
||||
import hirs.data.persist.certificate.CertificateTest;
|
||||
|
@ -11,7 +11,6 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import hirs.data.persist.TestPolicy;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
@ -14,7 +14,6 @@ import hirs.data.persist.DeviceInfoReport;
|
||||
import hirs.data.persist.DeviceTest;
|
||||
import hirs.data.persist.enums.HealthStatus;
|
||||
import hirs.data.persist.info.NetworkInfo;
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
package hirs.persist;
|
||||
|
||||
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import org.hibernate.LazyInitializationException;
|
||||
import org.hibernate.StaleObjectStateException;
|
||||
import org.hibernate.exception.LockAcquisitionException;
|
||||
|
@ -6,7 +6,6 @@ import hirs.data.persist.Device;
|
||||
import hirs.data.persist.DeviceGroup;
|
||||
import hirs.data.persist.DeviceTest;
|
||||
import hirs.data.persist.Policy;
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import hirs.data.persist.TestPolicy;
|
||||
import hirs.data.persist.TestPolicy2;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
@ -6,7 +6,6 @@ import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import hirs.data.persist.info.PortalInfo;
|
||||
|
@ -3,7 +3,6 @@ package hirs.persist;
|
||||
import hirs.data.persist.Device;
|
||||
import hirs.data.persist.DeviceGroup;
|
||||
import hirs.data.persist.ReportRequestState;
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import hirs.data.persist.type.ReportRequestType;
|
||||
|
||||
import org.testng.Assert;
|
||||
|
@ -6,7 +6,6 @@ import hirs.data.persist.AppraisalResult;
|
||||
import hirs.data.persist.AppraisalStatus;
|
||||
import hirs.data.persist.ReportSummary;
|
||||
|
||||
import hirs.data.persist.SpringPersistenceTest;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.AfterClass;
|
||||
|
14
build.gradle
14
build.gradle
@ -137,11 +137,15 @@ subprojects {
|
||||
reflections: 'org.reflections:reflections:0.10.2',
|
||||
servlet_api: 'javax.servlet:javax.servlet-api:4.0.1',
|
||||
slf4j: 'org.slf4j:slf4j-api:1.7.36',
|
||||
spring_core: ['org.springframework:spring-aop:5.3.19',
|
||||
'org.springframework:spring-beans:5.3.19',
|
||||
'org.springframework:spring-context:5.3.19',
|
||||
'org.springframework:spring-expression:5.3.19',
|
||||
'org.springframework:spring-orm:5.3.19'],
|
||||
spring_core: ['org.springframework:spring-aop:5.3.22',
|
||||
'org.springframework:spring-beans:5.3.22',
|
||||
'org.springframework:spring-context:5.3.22',
|
||||
'org.springframework:spring-expression:5.3.22',
|
||||
'org.springframework:spring-orm:5.3.22'],
|
||||
spring_boot: ['org.springframework:spring-boot-starter-web: 2.6.10',
|
||||
'org.springframework:spring-boot-starter-thymeleaf: 2.6.10',
|
||||
'org.springframework:spring-boot-starter-data-jpa: 2.6.10'],
|
||||
spring_data: ['org.springframework.data:spring-data-jpa:2.7.2'],
|
||||
spring_msg: 'org.springframework:spring-messaging:5.3.19',
|
||||
spring_plugin: 'org.springframework.plugin:spring-plugin-core:2.0.0.RELEASE',
|
||||
spring_retry: 'org.springframework.retry:spring-retry:1.3.2',
|
||||
|
Loading…
x
Reference in New Issue
Block a user