From 83e8b547a14cd0eb708be8fcd23b629d0e4c8169 Mon Sep 17 00:00:00 2001 From: Joze RIHTARSIC <joze.rihtarsic@ext.ec.europa.eu> Date: Sat, 13 Oct 2018 06:37:20 +0200 Subject: [PATCH] - add is alive function - update imports --- .../smp/conversion/ExtensionConverter.java | 8 +- .../smp/conversion/ServiceGroupConverter.java | 11 +- .../conversion/ServiceMetadataConverter.java | 10 +- .../ec/edelivery/smp/data/dao/BaseDao.java | 24 +++- .../smp/data/dao/ServiceMetadataDao.java | 2 - .../ec/edelivery/smp/data/dao/UserDao.java | 1 + .../edelivery/smp/data/model/BaseEntity.java | 4 - .../ec/edelivery/smp/data/model/DBDomain.java | 1 + .../smp/data/model/DBServiceGroupDomain.java | 4 +- .../smp/data/model/DBServiceMetadata.java | 1 - .../ec/edelivery/smp/data/model/DBUser.java | 1 - .../ec/edelivery/smp/data/ui/DomainRO.java | 2 - .../edelivery/smp/data/ui/ServiceGroupRO.java | 3 - .../smp/data/ui/ServiceMetadataRO.java | 3 - .../edelivery/smp/logging/SMPMessageCode.java | 5 + .../edelivery/smp/services/DomainService.java | 4 +- .../smp/services/ServiceMetadataService.java | 3 +- .../smp/services/ServiceMetadataSigner.java | 1 - .../smp/services/ui/UIDomainService.java | 6 - .../smp/services/ui/UIServiceBase.java | 20 +-- .../services/ui/UIServiceGroupService.java | 3 - .../smp/services/ui/UIUserService.java | 3 - .../edelivery/smp/BCryptPasswordHashTest.java | 1 - .../smp/config/H2JPATestConfiguration.java | 7 +- .../smp/config/SmpServicesTestConfig.java | 4 +- .../conversion/ExtensionConverterTest.java | 5 +- .../conversion/ServiceGroupConverterTest.java | 7 -- .../ServiceMetadataConverterTest.java | 1 - .../smp/data/dao/AuditIntegrationTest.java | 8 +- .../data/dao/DomainDaoIntegrationTest.java | 3 +- .../dao/ServiceGroupDaoIntegrationBase.java | 7 -- ...rviceGroupDaoOwnershipIntegrationTest.java | 3 +- .../ServiceMetadataDaoIntegrationTest.java | 5 +- .../smp/data/dao/UserDaoIntegrationTest.java | 4 - .../AbstractServiceIntegrationTest.java | 2 - .../DomainServiceIntegrationTest.java | 4 +- ...ServiceMultipleDomainsIntegrationTest.java | 5 - ...oupServiceSingleDomainIntegrationTest.java | 7 +- .../ServiceGroupServiceTestService.java | 4 +- .../ServiceMetadataIntegrationTest.java | 35 ++---- ...aSignerMultipleDomainsIntegrationTest.java | 1 - .../services/ServiceMetadataSignerTest.java | 9 -- .../ui/UIDomainServiceIntegrationTest.java | 4 +- .../UIServiceGroupServiceIntegrationTest.java | 2 - ...nticationByClientCertFromKeystoreTest.java | 5 +- .../smp/smlintegration/SmlConnectorTest.java | 5 - .../edelivery/smp/testutil/DBAssertion.java | 4 +- .../smp/auth/SMPAuthenticationProvider.java | 17 ++- .../edelivery/smp/config/SmpWebAppConfig.java | 1 + .../ServiceMetadataController.java | 2 +- .../smp/monitor/MonitorResource.java | 115 ++++++++++++++++++ .../isAliveTestFiles/ServiceGroupTest.xml | 15 +++ .../security/SecurityConfigurationTest.java | 3 +- .../security/SignatureValidatorTest.java | 3 +- .../ServiceGroupControllerTest.java | 22 ++-- .../smp/monitor/MonitorResourceTest.java | 104 ++++++++++++++++ .../webapp_integration_test_data.sql | 6 +- 57 files changed, 349 insertions(+), 201 deletions(-) create mode 100644 smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/monitor/MonitorResource.java create mode 100644 smp-webapp/src/main/resources/isAliveTestFiles/ServiceGroupTest.xml create mode 100644 smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/monitor/MonitorResourceTest.java diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java index 0a40e3176..423875c0e 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java @@ -17,7 +17,6 @@ import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; import org.apache.cxf.staxutils.PrettyPrintXMLStreamWriter; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ExtensionType; -import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup; import javax.xml.bind.*; import javax.xml.bind.annotation.XmlElement; @@ -27,12 +26,13 @@ import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.stream.StreamSource; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.util.Collections; import java.util.List; -import static java.nio.charset.StandardCharsets.UTF_8; - /** * Created by migueti on 13/02/2017. */ diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java index bc590f32c..0dbfa2a37 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java @@ -13,13 +13,16 @@ package eu.europa.ec.edelivery.smp.conversion; -import eu.europa.ec.edelivery.smp.exceptions.*; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; +import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; +import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.oasis_open.docs.bdxr.ns.smp._2016._05.*; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.ExtensionType; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadataReferenceCollectionType; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -33,12 +36,10 @@ import javax.xml.stream.XMLStreamException; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_EXTENSION_FOR_SG; -import static eu.europa.ec.edelivery.smp.logging.SMPMessageCode.BUS_INVALID_XML; import static java.nio.charset.StandardCharsets.UTF_8; /** diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java index 14fd39779..41db2fbdb 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java @@ -13,17 +13,11 @@ package eu.europa.ec.edelivery.smp.conversion; -; - import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; -import eu.europa.ec.edelivery.smp.services.ServiceGroupService; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.oasis_open.docs.bdxr.ns.smp._2016._05.DocumentIdentifier; -import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadata; -import org.slf4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; @@ -41,9 +35,9 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.*; -import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_EXTENSION_FOR_SG; import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_SMD_XML; -import static java.nio.charset.StandardCharsets.UTF_8; + +; /** * Created by gutowpa on 05/01/2017. diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java index 558edbed1..40515f875 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java @@ -34,7 +34,6 @@ import java.lang.reflect.Modifier; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; -import java.util.Map; /** * Database abstract resource file. Class implements all common methods for all resources. @@ -44,7 +43,7 @@ import java.util.Map; */ public abstract class BaseDao<E extends BaseEntity> { - private static final SMPLogger LOG = SMPLoggerFactory.getLogger(ServiceGroupService.class); + private static final SMPLogger LOG = SMPLoggerFactory.getLogger(BaseDao.class); @PersistenceContext protected EntityManager memEManager; @@ -59,6 +58,18 @@ public abstract class BaseDao<E extends BaseEntity> { return memEManager.find(entityClass, primaryKey); } + /** + * test database for isAlive function + * + * @param entity + */ + @Transactional + public void testPersist(E entity, String message) { + memEManager.persist(entity); + memEManager.flush(); + throw new RuntimeException(message); + } + /** * save or update database entity @@ -152,12 +163,12 @@ public abstract class BaseDao<E extends BaseEntity> { && !m.getReturnType().equals(Void.TYPE) && (mName.startsWith("get") || mName.startsWith("is"))) { String fieldName = mName.substring(mName.startsWith("get") ? 3 : 2); - // get retur parameter + // get return parameter Object searchValue; try { searchValue = m.invoke(searchParams, new Object[]{}); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { - // LOG.error(l, ex); + LOG.error("Error setting retrieveing search parameters", ex); continue; } @@ -179,6 +190,7 @@ public abstract class BaseDao<E extends BaseEntity> { cls.getMethod("set" + fieldName, new Class[]{m.getReturnType()}); } catch (NoSuchMethodException | SecurityException ex) { // method does not have setter // ignore other methods + LOG.error("Field '"+fieldName+"' does not have a setter!", ex); continue; } @@ -275,6 +287,7 @@ public abstract class BaseDao<E extends BaseEntity> { } lstResult = q.getResultList(); } catch (NoResultException ex) { + LOG.warn("No result for '"+filterType.getName()+"' does not have a setter!", ex); lstResult = new ArrayList<>(); } @@ -296,8 +309,7 @@ public abstract class BaseDao<E extends BaseEntity> { CriteriaQuery<Long> cqCount = createSearchCriteria(filters, null, true, null, null); - Long res = memEManager.createQuery(cqCount).getSingleResult(); - return res; + return memEManager.createQuery(cqCount).getSingleResult(); } diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java index 250f14b0d..37f44a5fa 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java @@ -13,8 +13,6 @@ package eu.europa.ec.edelivery.smp.data.dao; -import eu.europa.ec.edelivery.smp.data.model.DBDomain; -import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata; import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; import org.springframework.stereotype.Repository; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java index ac81494b6..a5cb8a172 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java @@ -18,6 +18,7 @@ import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Repository; + import javax.persistence.NoResultException; import javax.persistence.NonUniqueResultException; import javax.persistence.TypedQuery; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java index e41ff17c6..b5bedf13d 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java @@ -13,10 +13,6 @@ package eu.europa.ec.edelivery.smp.data.model; -import javax.persistence.Column; -import javax.persistence.PrePersist; -import javax.persistence.PreUpdate; -import java.math.BigInteger; import java.time.LocalDateTime; import java.util.Objects; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java index 3187eca27..1ad5e40e6 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java @@ -14,6 +14,7 @@ package eu.europa.ec.edelivery.smp.data.model; import org.hibernate.envers.Audited; + import javax.persistence.*; import java.time.LocalDateTime; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java index d4cc386bd..d47915011 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java @@ -4,7 +4,9 @@ import org.hibernate.envers.Audited; import javax.persistence.*; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** * Service group domain diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java index f5d1fd9f7..a724728d5 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java @@ -16,7 +16,6 @@ package eu.europa.ec.edelivery.smp.data.model; import org.hibernate.envers.Audited; import javax.persistence.*; - import java.time.LocalDateTime; import java.util.Objects; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java index 2e9a86436..272b0dede 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java @@ -15,7 +15,6 @@ package eu.europa.ec.edelivery.smp.data.model; import org.apache.commons.lang3.StringUtils; import org.hibernate.envers.Audited; - import javax.persistence.*; import java.time.LocalDateTime; import java.util.Objects; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java index a7bbbaa5f..11f1a5010 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java @@ -1,9 +1,7 @@ package eu.europa.ec.edelivery.smp.data.ui; -import javax.persistence.*; import java.io.Serializable; -import java.util.Objects; /** * @author Joze Rihtarsic diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java index 8fbbdfb09..88fe3ee5e 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java @@ -1,10 +1,7 @@ package eu.europa.ec.edelivery.smp.data.ui; - -import javax.persistence.*; import java.io.Serializable; -import java.util.Objects; /** * @author Joze Rihtarsic diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java index 2a2386982..b2e3ecb81 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java @@ -1,10 +1,7 @@ package eu.europa.ec.edelivery.smp.data.ui; - -import javax.persistence.*; import java.io.Serializable; -import java.util.Objects; /** * @author Joze Rihtarsic diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java index 70ec3af80..999cc6ef2 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java @@ -9,6 +9,7 @@ import eu.europa.ec.edelivery.smp.logging.api.MessageCode; */ public enum SMPMessageCode implements MessageCode { + BUS_SAVE_SERVICE_GROUP ("BUS-001", "Start inserting/updating ServiceGroup for part. Id: {} part. schema {}."), BUS_SAVE_SERVICE_GROUP_FAILED ("BUS-002", "Inserting/updating ServiceGroup for part. Id: {} part. schema {} failed! Error: [{}]"), @@ -16,6 +17,10 @@ public enum SMPMessageCode implements MessageCode { SEC_UNSECURED_LOGIN_ALLOWED("SEC-001", "Unsecure login is allowed, no authentication will be performed"), + SEC_USER_AUTHENTICATED("SEC-002", "User {} is authenticated with role {}."), + SEC_USER_NOT_EXISTS("SEC-003", "User {} not exists."), + SEC_INVALID_PASSWORD("SEC-004", "User {} has invalid password."), + ; String code; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java index fb2caa359..5a3823b51 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java @@ -12,9 +12,7 @@ import javax.validation.constraints.NotNull; import java.util.Optional; import java.util.regex.Pattern; -import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.DOMAIN_NOT_EXISTS; -import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_DOMAIN_CODE; -import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.MISSING_DOMAIN; +import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.*; /** diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java index 28fd6146d..a5a611b98 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java @@ -33,7 +33,8 @@ import java.util.List; import java.util.Optional; import static eu.europa.ec.edelivery.smp.conversion.ServiceMetadataConverter.toSignedServiceMetadatadaDocument; -import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.*; +import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.METADATA_NOT_EXISTS; +import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.SG_NOT_EXISTS; /** diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java index c64bd5eb0..02e94bda2 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java @@ -12,7 +12,6 @@ */ package eu.europa.ec.edelivery.smp.services; -import eu.europa.ec.edelivery.smp.exceptions.DocumentSigningException; import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import org.slf4j.Logger; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java index 8f0e0ba0a..e740304c2 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java @@ -5,16 +5,10 @@ import eu.europa.ec.edelivery.smp.data.dao.DomainDao; import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.data.ui.DomainRO; import eu.europa.ec.edelivery.smp.data.ui.ServiceResult; -import org.apache.commons.beanutils.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - @Service public class UIDomainService extends UIServiceBase<DBDomain, DomainRO> { diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java index 7704d6624..b68026665 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java @@ -2,35 +2,36 @@ package eu.europa.ec.edelivery.smp.services.ui; import eu.europa.ec.edelivery.smp.data.dao.BaseDao; import eu.europa.ec.edelivery.smp.data.model.BaseEntity; -import eu.europa.ec.edelivery.smp.data.model.DBDomain; -import eu.europa.ec.edelivery.smp.data.ui.DomainRO; import eu.europa.ec.edelivery.smp.data.ui.ServiceResult; +import eu.europa.ec.edelivery.smp.logging.SMPLogger; +import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; import org.apache.commons.beanutils.BeanUtils; import org.springframework.core.GenericTypeResolver; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; - +/** + * @author Joze Rihtarsic + * @since 4.1 + */ abstract class UIServiceBase<E extends BaseEntity, R> { + private static final SMPLogger LOG = SMPLoggerFactory.getLogger(UIServiceBase.class); + private final Class<R> roClass; - private final Class<E> dbClass; public UIServiceBase() { Class[] clsArg = GenericTypeResolver.resolveTypeArguments(getClass(), UIServiceBase.class); - dbClass =(Class<E>)clsArg[0]; roClass =(Class<R>)clsArg[1]; } /** - * Method returns Domain resource object list for page. + * Method returns UI resource object list for page. * * @param page * @param pageSize @@ -61,12 +62,11 @@ abstract class UIServiceBase<E extends BaseEntity, R> { BeanUtils.copyProperties(dro,d); lstRo.add(dro); } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) { - e.printStackTrace(); + LOG.error("Error occured while retrieving list for " +roClass.getName(), e ); } } - sg.getServiceEntities().addAll(lstRo); } return sg; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java index 60bb57f0c..fa6933690 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java @@ -1,11 +1,8 @@ package eu.europa.ec.edelivery.smp.services.ui; import eu.europa.ec.edelivery.smp.data.dao.BaseDao; -import eu.europa.ec.edelivery.smp.data.dao.DomainDao; import eu.europa.ec.edelivery.smp.data.dao.ServiceGroupDao; -import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; -import eu.europa.ec.edelivery.smp.data.ui.DomainRO; import eu.europa.ec.edelivery.smp.data.ui.ServiceGroupRO; import eu.europa.ec.edelivery.smp.data.ui.ServiceResult; import org.springframework.beans.factory.annotation.Autowired; diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java index 80609bea6..14af6dd50 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java @@ -1,11 +1,8 @@ package eu.europa.ec.edelivery.smp.services.ui; import eu.europa.ec.edelivery.smp.data.dao.BaseDao; -import eu.europa.ec.edelivery.smp.data.dao.DomainDao; import eu.europa.ec.edelivery.smp.data.dao.UserDao; -import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.data.model.DBUser; -import eu.europa.ec.edelivery.smp.data.ui.DomainRO; import eu.europa.ec.edelivery.smp.data.ui.ServiceResult; import eu.europa.ec.edelivery.smp.data.ui.UserRO; import org.springframework.beans.factory.annotation.Autowired; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java index 456d5d66a..f2d809d18 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java @@ -13,7 +13,6 @@ package eu.europa.ec.edelivery.smp; -import eu.europa.ec.edelivery.smp.BCryptPasswordHash; import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java index ae46dbfcf..624926327 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java @@ -1,16 +1,15 @@ package eu.europa.ec.edelivery.smp.config; - import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; -import org.springframework.core.io.FileSystemResource; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.Database; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java index 1a32718e6..434e5900b 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java @@ -15,7 +15,9 @@ package eu.europa.ec.edelivery.smp.config; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java index fbdd752ea..5487b68d6 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java @@ -23,14 +23,11 @@ import org.xmlunit.matchers.CompareMatcher; import javax.xml.bind.JAXBException; import javax.xml.stream.XMLStreamException; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThat; +import static org.junit.Assert.*; /** * Created by migueti on 13/02/2017. diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java index 07ff814d3..aa201aba6 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java @@ -14,7 +14,6 @@ package eu.europa.ec.edelivery.smp.conversion; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; -import eu.europa.ec.edelivery.smp.data.model.DBServiceGroupExtension; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import eu.europa.ec.edelivery.smp.testutil.TestDBUtils; import eu.europa.ec.edelivery.smp.testutil.XmlTestUtils; @@ -22,7 +21,6 @@ import org.hamcrest.Matchers; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.oasis_open.docs.bdxr.ns.smp._2016._05.ExtensionType; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup; import org.xml.sax.SAXParseException; @@ -31,12 +29,7 @@ import javax.xml.bind.UnmarshalException; import javax.xml.stream.XMLStreamException; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_EXTENSION_FOR_SG; -import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.SG_NOT_EXISTS; import static org.junit.Assert.*; /** diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java index 2edd221d9..4d9869838 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java @@ -24,7 +24,6 @@ import org.oasis_open.docs.bdxr.ns.smp._2016._05.RedirectType; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceEndpointList; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceInformationType; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadata; -import org.opensaml.core.xml.XMLRuntimeException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java index cb21fb5ce..a6778b6f1 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java @@ -17,9 +17,7 @@ import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration; import eu.europa.ec.edelivery.smp.data.model.*; import org.hibernate.envers.AuditReader; import org.hibernate.envers.AuditReaderFactory; -import org.junit.After; import org.junit.Assert; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; @@ -31,15 +29,11 @@ import org.springframework.test.util.ReflectionTestUtils; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceUnit; -import javax.persistence.Query; -import javax.xml.bind.JAXBException; -import java.io.IOException; -import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; import java.util.UUID; -import static eu.europa.ec.edelivery.smp.testutil.TestDBUtils.*; +import static eu.europa.ec.edelivery.smp.testutil.TestDBUtils.createDBDomain; import static org.junit.Assert.assertTrue; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java index 3a2256a0b..082bdd1d8 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java @@ -2,8 +2,8 @@ package eu.europa.ec.edelivery.smp.data.dao; import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration; import eu.europa.ec.edelivery.smp.data.model.DBDomain; -import eu.europa.ec.edelivery.smp.testutil.TestConstants; import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; +import eu.europa.ec.edelivery.smp.testutil.TestConstants; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -13,6 +13,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.SqlConfig; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + import java.util.Optional; import static org.junit.Assert.*; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java index d6df46a62..9f3582fb1 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java @@ -5,25 +5,18 @@ import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata; import eu.europa.ec.edelivery.smp.data.model.DBUser; -import eu.europa.ec.edelivery.smp.testutil.TestConstants; import eu.europa.ec.edelivery.smp.testutil.TestDBUtils; import org.junit.Before; import org.junit.Rule; -import org.junit.Test; import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.SqlConfig; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.transaction.Transactional; -import java.util.Optional; -import java.util.UUID; import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; -import static org.junit.Assert.*; /** diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java index 1c3c9ca41..9c5a93a33 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java @@ -11,7 +11,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.transaction.Transactional; import java.util.Optional; -import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; +import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_ID_1; +import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_SCHEMA_1; import static org.junit.Assert.*; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java index 3733438c8..70db93f7c 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java @@ -5,7 +5,6 @@ import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata; import eu.europa.ec.edelivery.smp.data.model.DBUser; -import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; import eu.europa.ec.edelivery.smp.testutil.TestConstants; import eu.europa.ec.edelivery.smp.testutil.TestDBUtils; import org.junit.Before; @@ -24,8 +23,8 @@ import java.util.List; import java.util.Optional; import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; -import static eu.europa.ec.edelivery.smp.testutil.TestConstants.USERNAME_3; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * Purpose of class is to test all resource methods with database. diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java index d892fceb3..65a6a4c17 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java @@ -1,7 +1,6 @@ package eu.europa.ec.edelivery.smp.data.dao; import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration; -import eu.europa.ec.edelivery.smp.data.model.DBCertificate; import eu.europa.ec.edelivery.smp.data.model.DBUser; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import eu.europa.ec.edelivery.smp.testutil.TestConstants; @@ -16,14 +15,11 @@ import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.SqlConfig; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.Optional; -import java.util.UUID; import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_USER_NO_IDENTIFIERS; import static org.junit.Assert.*; -import static org.junit.Assert.assertTrue; /** diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java index 9a5adccf0..1aacf70e3 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java @@ -24,8 +24,6 @@ import org.springframework.test.context.jdbc.SqlConfig; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; -import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_ID_2; -import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_SCHEMA_2; /** * Purpose of class is to setup integration test properties and init database. diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java index 3d4e6730f..6fddbf144 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java @@ -25,8 +25,8 @@ import org.junit.rules.ExpectedException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; -import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; -import static org.junit.Assert.*; +import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_DOMAIN_CODE_1; +import static org.junit.Assert.assertEquals; /** * Purpose of class is to test ServiceGroupService base methods diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java index 58936bd2a..1ccf25474 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java @@ -14,23 +14,18 @@ package eu.europa.ec.edelivery.smp.services; import eu.europa.ec.edelivery.smp.conversion.ExtensionConverter; -import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; -import eu.europa.ec.edelivery.smp.data.model.DBServiceGroupDomain; import eu.europa.ec.edelivery.smp.data.model.DBUser; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; -import eu.europa.ec.edelivery.smp.testutil.DBAssertion; import eu.europa.ec.edelivery.smp.testutil.TestConstants; import eu.europa.ec.edelivery.smp.testutil.TestDBUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType; import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.xml.bind.JAXBException; import javax.xml.stream.XMLStreamException; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java index a0ed9b02e..44419097c 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java @@ -15,7 +15,9 @@ package eu.europa.ec.edelivery.smp.services; import eu.europa.ec.edelivery.smp.conversion.ExtensionConverter; -import eu.europa.ec.edelivery.smp.data.model.*; +import eu.europa.ec.edelivery.smp.data.model.DBDomain; +import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; +import eu.europa.ec.edelivery.smp.data.model.DBUser; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; import eu.europa.ec.edelivery.smp.testutil.TestConstants; import org.hamcrest.core.StringStartsWith; @@ -38,9 +40,8 @@ import java.util.Optional; import static eu.europa.ec.edelivery.smp.conversion.ServiceGroupConverter.unmarshal; import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.*; -import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocumentAsString; - import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; +import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocumentAsString; import static eu.europa.ec.smp.api.Identifiers.asParticipantId; import static org.junit.Assert.*; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java index 46f43f2a1..52da8a296 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java @@ -23,15 +23,13 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import java.util.Optional; import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; -import static org.junit.Assert.*; +import static org.junit.Assert.assertTrue; /** * Purpose of class is to test ServiceGroupService base methods diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java index b05922b30..5478445ee 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java @@ -13,45 +13,26 @@ package eu.europa.ec.edelivery.smp.services; -import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration; -import eu.europa.ec.edelivery.smp.config.PropertiesSingleDomainTestConfig; -import eu.europa.ec.edelivery.smp.conversion.CaseSensitivityNormalizer; -import eu.europa.ec.edelivery.smp.conversion.ServiceGroupConverter; import eu.europa.ec.edelivery.smp.conversion.ServiceMetadataConverter; -import eu.europa.ec.edelivery.smp.data.dao.DomainDao; -import eu.europa.ec.edelivery.smp.data.dao.ServiceGroupDao; -import eu.europa.ec.edelivery.smp.data.dao.ServiceMetadataDao; -import eu.europa.ec.edelivery.smp.data.dao.UserDao; import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata; -import eu.europa.ec.edelivery.smp.config.SmpServicesTestConfig; -import eu.europa.ec.edelivery.smp.data.model.DBUser; import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; -import eu.europa.ec.edelivery.smp.sml.SmlConnector; -import eu.europa.ec.edelivery.smp.testutil.DBAssertion; -import eu.europa.ec.edelivery.smp.testutil.TestConstants; -import eu.europa.ec.edelivery.smp.testutil.TestDBUtils; -import org.busdox.transport.identifiers._1.DocumentIdentifierType; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; -import org.oasis_open.docs.bdxr.ns.smp._2016._05.*; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.DocumentIdentifier; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.EndpointType; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadata; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.annotation.Rollback; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.jdbc.Sql; -import org.springframework.test.context.jdbc.SqlConfig; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import org.w3c.dom.Document; -import javax.persistence.EntityManager; -import javax.persistence.EntityNotFoundException; -import javax.persistence.PersistenceContext; import javax.xml.bind.JAXBException; import javax.xml.transform.TransformerException; import java.io.IOException; @@ -61,10 +42,10 @@ import java.util.Optional; import static eu.europa.ec.edelivery.smp.conversion.ServiceMetadataConverter.unmarshal; import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*; -import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.*; -import static eu.europa.ec.smp.api.Identifiers.asDocumentId; -import static eu.europa.ec.smp.api.Identifiers.asParticipantId; -import static org.junit.Assert.*; +import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocumentAsByteArray; +import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.marshallToByteArray; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * Created by gutowpa on 15/11/2017. diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerMultipleDomainsIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerMultipleDomainsIntegrationTest.java index 062bc1de4..801534ca4 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerMultipleDomainsIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerMultipleDomainsIntegrationTest.java @@ -14,7 +14,6 @@ package eu.europa.ec.edelivery.smp.services; import eu.europa.ec.edelivery.smp.config.PropertiesMultipleDomainTestConfig; -import eu.europa.ec.edelivery.smp.config.SmpServicesTestConfig; import eu.europa.ec.edelivery.smp.testutil.SignatureUtil; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java index d5be76ed2..6194d9683 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java @@ -13,18 +13,9 @@ package eu.europa.ec.edelivery.smp.services; -import eu.europa.ec.edelivery.smp.config.PropertiesSingleDomainTestConfig; -import eu.europa.ec.edelivery.smp.testutil.SignatureUtil; -import eu.europa.ec.edelivery.smp.config.SmpServicesTestConfig; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocument; /** * Created by rodrfla on 20/02/2017. diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java index 7ff2b0ad8..8ff10cc25 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java @@ -12,9 +12,7 @@ import org.junit.rules.ExpectedException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.junit.Assert.*; /** diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java index dc470fe28..fd5ae27e8 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java @@ -2,10 +2,8 @@ package eu.europa.ec.edelivery.smp.services.ui; import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; -import eu.europa.ec.edelivery.smp.data.model.DBUser; import eu.europa.ec.edelivery.smp.data.ui.ServiceGroupRO; import eu.europa.ec.edelivery.smp.data.ui.ServiceResult; -import eu.europa.ec.edelivery.smp.data.ui.UserRO; import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest; import eu.europa.ec.edelivery.smp.testutil.TestConstants; import eu.europa.ec.edelivery.smp.testutil.TestDBUtils; diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java index dfe6ca885..a0e02e4f1 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java @@ -34,13 +34,10 @@ import javax.net.ssl.KeyManager; import javax.net.ssl.X509KeyManager; import java.security.PrivateKey; import java.security.cert.X509Certificate; -import java.util.List; import java.util.Map; import static eu.europa.ec.edelivery.smp.testutil.LocalPropertiesTestUtil.buildLocalProperties; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; /** * Created by gutowpa on 08/01/2018. diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java index 1ff18ef98..7ea050b58 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java @@ -14,7 +14,6 @@ package eu.europa.ec.edelivery.smp.smlintegration; import eu.europa.ec.bdmsl.ws.soap.*; -import eu.europa.ec.edelivery.smp.data.model.DBDomain; import eu.europa.ec.edelivery.smp.sml.SmlConnector; import org.junit.Before; import org.junit.Test; @@ -32,10 +31,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.ArrayList; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE; /** diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java index 52788ec90..c29691ea0 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java @@ -9,9 +9,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.Optional; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; /** * Purpose of class is to test database data. Class is created as a bean so that diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java index dda846c4a..d7a9a3a55 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java @@ -2,6 +2,9 @@ package eu.europa.ec.edelivery.smp.auth; import eu.europa.ec.edelivery.smp.data.dao.UserDao; import eu.europa.ec.edelivery.smp.data.model.DBUser; +import eu.europa.ec.edelivery.smp.logging.SMPLogger; +import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; +import eu.europa.ec.edelivery.smp.logging.SMPMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.BadCredentialsException; @@ -15,6 +18,8 @@ import java.util.Optional; public class SMPAuthenticationProvider implements AuthenticationProvider { + private static final SMPLogger LOG = SMPLoggerFactory.getLogger(AuthenticationProvider.class); + @Autowired UserDao mUserDao; @@ -30,25 +35,29 @@ public class SMPAuthenticationProvider implements AuthenticationProvider { Optional<DBUser> oUsr = mUserDao.findUserByIdentifier(username); if (!oUsr.isPresent()){ + LOG.securityWarn(SMPMessageCode.SEC_USER_NOT_EXISTS, username); //https://www.owasp.org/index.php/Authentication_Cheat_Sheet // Do not reveal the status of an existing account. Not to use UsernameNotFoundException throw new BadCredentialsException("Login failed; Invalid userID or password"); } DBUser usr = oUsr.get(); + String role = usr.getRole(); try { if (!BCrypt.checkpw(password, usr.getPassword())) { + LOG.securityWarn(SMPMessageCode.SEC_INVALID_PASSWORD, username); throw new BadCredentialsException("Login failed; Invalid userID or password"); } + }catch (java.lang.IllegalArgumentException ex){ - // password is not hashed + // password is not hashed; + LOG.securityWarn(SMPMessageCode.SEC_INVALID_PASSWORD,ex, username); throw new BadCredentialsException("Login failed; Invalid userID or password"); } - return new UsernamePasswordAuthenticationToken(username, password,Collections.singletonList(new SMPAuthority(usr.getRole()))); + LOG.securityInfo(SMPMessageCode.SEC_USER_AUTHENTICATED, username, role); + return new UsernamePasswordAuthenticationToken(username, password,Collections.singletonList(new SMPAuthority(role))); } - - @Override public boolean supports(Class<?> auth) { return auth.equals(UsernamePasswordAuthenticationToken.class); diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java index b067186cd..4856b6c9b 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java @@ -30,6 +30,7 @@ import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE; @ComponentScan(basePackages = { "eu.europa.ec.edelivery.smp.controllers", "eu.europa.ec.edelivery.smp.validation", + "eu.europa.ec.edelivery.smp.monitor", "eu.europa.ec.edelivery.smp.ui"}) @Import({GlobalMethodSecurityConfig.class, ErrorMappingControllerAdvice.class}) public class SmpWebAppConfig implements WebMvcConfigurer { diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java index be71c1191..9843cee50 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java @@ -82,7 +82,7 @@ public class ServiceMetadataController { boolean newServiceMetadataCreated = serviceMetadataService.saveServiceMetadata(domain, asParticipantId(serviceGroupId), asDocumentId(serviceMetadataId), body); - log.info("PUT ServiceMetadata finished: {} - {}\n{}", serviceGroupId, serviceMetadataId, body); + log.info("PUT ServiceMetadata finished: {} - {}", serviceGroupId, serviceMetadataId); return newServiceMetadataCreated ? created(pathBuilder.getCurrentUri()).build() : ok().build(); } diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/monitor/MonitorResource.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/monitor/MonitorResource.java new file mode 100644 index 000000000..96850dbca --- /dev/null +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/monitor/MonitorResource.java @@ -0,0 +1,115 @@ +package eu.europa.ec.edelivery.smp.monitor; + + +import eu.europa.ec.edelivery.smp.auth.SMPAuthority; +import eu.europa.ec.edelivery.smp.conversion.ServiceGroupConverter; +import eu.europa.ec.edelivery.smp.data.dao.DomainDao; +import eu.europa.ec.edelivery.smp.data.dao.ServiceGroupDao; +import eu.europa.ec.edelivery.smp.data.model.DBDomain; +import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup; +import eu.europa.ec.edelivery.smp.logging.SMPLogger; +import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; +import eu.europa.ec.edelivery.smp.services.ServiceGroupService; +import eu.europa.ec.edelivery.smp.validation.ServiceGroupValidator; +import eu.europa.ec.smp.api.exceptions.XmlInvalidAgainstSchemaException; +import eu.europa.ec.smp.api.validators.BdxSmpOasisValidator; +import org.apache.cxf.helpers.IOUtils; +import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.io.IOException; +import java.util.List; +import java.util.Objects; + +/** + * @author Joze Rihtarsic + * @since 4.1 + */ + +@RestController +@RequestMapping(value = "/monitor") +public class MonitorResource { + + private static final SMPLogger LOG = SMPLoggerFactory.getLogger(MonitorResource.class); + + @Autowired + private ServiceGroupValidator serviceGroupValidator; + + @Autowired + private ServiceGroupService serviceGroupService; + + @Autowired + private DomainDao domainDao; + + @Autowired + private ServiceGroupDao serviceGroupDao; + + private static final String TEST_PART_SCHEMA = "test-actorid-qns"; + private static final String TEST_PART_ID = "urn:test:is:alive"; + private static final String TEST_EXTENSION_XML ="<Extension xmlns=\"http://docs.oasis-open.org/bdxr/ns/SMP/2016/05\"><ex:dummynode xmlns:ex=\"http://test.eu\">Sample not mandatory extension</ex:dummynode></Extension>"; + private static final String TEST_DB_SUCCESSFUL_ROLLBACK ="TEST_DB_SUCCESSFUL_ROLLBACK MESSAGE"; + + + @RequestMapping(method = RequestMethod.GET,path = "/is-alive") + @Secured({SMPAuthority.S_AUTHORITY_SYSTEM_ADMIN,SMPAuthority.S_AUTHORITY_SMP_ADMIN}) + public ResponseEntity isAlive() { + + String user = SecurityContextHolder.getContext().getAuthentication().getName(); + LOG.debug("Start isAlive function for user: " + SecurityContextHolder.getContext().getAuthentication().getName()); + byte[] bServiceGroup = null; + try { + bServiceGroup = IOUtils.readBytesFromStream( + MonitorResource.class.getResourceAsStream("/isAliveTestFiles/ServiceGroupTest.xml")); + + } catch (IOException e) { + LOG.error("Error reading test resource file", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + ServiceGroup serviceGroup; + try { + // Validations + BdxSmpOasisValidator.validateXSD(bServiceGroup); + serviceGroup = ServiceGroupConverter.unmarshal(bServiceGroup); + serviceGroupValidator + .validate(TEST_PART_SCHEMA+ "::"+TEST_PART_ID, serviceGroup); + } catch (XmlInvalidAgainstSchemaException ex) { + LOG.error("Error reading testing resource file", ex); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + boolean suc = false; + try { + suc= testDatabase(); + }catch (Exception ex){ + suc = Objects.equals(TEST_DB_SUCCESSFUL_ROLLBACK, ex.getMessage()); + } + return suc?ResponseEntity.ok().build():ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + + } + + protected boolean testDatabase(){ + List<DBDomain> lstDomain = domainDao.getAllDomains(); + if (lstDomain.isEmpty()){ + LOG.error("Bad configuration! At least one domain must be configured!"); + return false; + } + + DBServiceGroup newSg = new DBServiceGroup(); + newSg.setParticipantIdentifier(TEST_PART_ID); + newSg.setParticipantScheme(TEST_PART_SCHEMA); + newSg.setExtension(TEST_EXTENSION_XML.getBytes()); + newSg.addDomain(lstDomain.get(0)); // add initial domain + newSg.setSmlRegistered(false); + // persist (make sure this is not in transaction) + serviceGroupDao.testPersist(newSg, TEST_DB_SUCCESSFUL_ROLLBACK); + return false; + } + + +} diff --git a/smp-webapp/src/main/resources/isAliveTestFiles/ServiceGroupTest.xml b/smp-webapp/src/main/resources/isAliveTestFiles/ServiceGroupTest.xml new file mode 100644 index 000000000..a2f08528f --- /dev/null +++ b/smp-webapp/src/main/resources/isAliveTestFiles/ServiceGroupTest.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<ServiceGroup xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05"> + <ParticipantIdentifier scheme="test-actorid-qns">urn:test:is:alive</ParticipantIdentifier> + <ServiceMetadataReferenceCollection/> + <Extension> + <ExtensionAgencyID>Agency ID 1</ExtensionAgencyID> + <ExtensionAgencyName>Agency name 1</ExtensionAgencyName> + <CustomNode xmlns="http://custom.com/schema1">Any XML content 1</CustomNode> + </Extension> + <Extension> + <ExtensionAgencyID>Agency ID 2</ExtensionAgencyID> + <ExtensionAgencyName>Agency name 2</ExtensionAgencyName> + <CustomNode xmlns="http://custom.com/schema2">Any XML content 2</CustomNode> + </Extension> +</ServiceGroup> diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java index 866b17ef5..0422feb83 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java @@ -46,8 +46,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. SpringSecurityTestConfig.class }) @WebAppConfiguration -@Transactional -@Rollback(true) +@Sql("classpath:/cleanup-database.sql") @Sql("classpath:/webapp_integration_test_data.sql") public class SecurityConfigurationTest { diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java index 1d5c4a2e3..8b845b20c 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java @@ -71,8 +71,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. SpringSecurityConfig.class }) @WebAppConfiguration -@Transactional -@Rollback(true) +@Sql("classpath:/cleanup-database.sql") @Sql("classpath:/webapp_integration_test_data.sql") public class SignatureValidatorTest { diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java index b94a7f311..186638d9a 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java @@ -55,8 +55,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. SmpWebAppConfig.class, SpringSecurityConfig.class}) @WebAppConfiguration -@Transactional -@Rollback(true) @Sql("classpath:/cleanup-database.sql") @Sql("classpath:/webapp_integration_test_data.sql") @SqlConfig(encoding = "UTF-8") @@ -104,16 +102,16 @@ public class ServiceGroupControllerTest { @Test public void adminCanCreateServiceGroup() throws Exception { - /* mvc.perform(put(URL_PATH) + mvc.perform(put(URL_PATH) .with(ADMIN_CREDENTIALS) .contentType(APPLICATION_XML_VALUE) .content(SERVICE_GROUP_INPUT_BODY)) - .andExpect(status().isCreated());*/ + .andExpect(status().isCreated()); } @Test public void adminCanUpdateServiceGroup() throws Exception { - /* mvc.perform(put(URL_PATH) + mvc.perform(put(URL_PATH) .header(HTTP_HEADER_KEY_DOMAIN, HTTP_DOMAIN) .with(ADMIN_CREDENTIALS) .contentType(APPLICATION_XML_VALUE) @@ -124,12 +122,12 @@ public class ServiceGroupControllerTest { .with(ADMIN_CREDENTIALS) .contentType(APPLICATION_XML_VALUE) .content(SERVICE_GROUP_INPUT_BODY)) - .andExpect(status().isOk());*/ + .andExpect(status().isOk()); } @Test public void existingServiceGroupCanBeRetrievedByEverybody() throws Exception { - /* mvc.perform(put(URL_PATH) + mvc.perform(put(URL_PATH) .with(ADMIN_CREDENTIALS) .contentType(APPLICATION_XML_VALUE) .content(SERVICE_GROUP_INPUT_BODY)) @@ -137,7 +135,7 @@ public class ServiceGroupControllerTest { mvc.perform(get(URL_PATH)) .andExpect(content().xml(SERVICE_GROUP_INPUT_BODY)); - */ + } @Test @@ -153,7 +151,6 @@ public class ServiceGroupControllerTest { @Test public void adminCanDeleteServiceGroup() throws Exception { - /* mvc.perform(put(URL_PATH).header("Domain", "domain") .with(ADMIN_CREDENTIALS) .contentType(APPLICATION_XML_VALUE) @@ -165,8 +162,8 @@ public class ServiceGroupControllerTest { .andExpect(status().isOk()); mvc.perform(get(URL_PATH)) .andExpect(status().isNotFound()); - */ } + @Test public void malformedInputReturnsBadRequest() throws Exception { mvc.perform(put(URL_PATH) @@ -188,6 +185,7 @@ public class ServiceGroupControllerTest { .content(getSampleServiceGroupBodyWithScheme(scheme))) .andExpect(status().isBadRequest()); } + @Test public void creatingServiceGroupUnderBadFormatedDomainReturnsBadRequest() throws Exception { mvc.perform(put(URL_PATH) @@ -212,12 +210,12 @@ public class ServiceGroupControllerTest { @Test public void adminCanAssignNewServiceGroupToOtherOwner() throws Exception { - /* mvc.perform(put(URL_PATH) + mvc.perform(put(URL_PATH) .with(ADMIN_CREDENTIALS) .contentType(APPLICATION_XML_VALUE) .header(HTTP_HEADER_KEY_SERVICE_GROUP_OWNER, OTHER_OWNER_NAME_URL_ENCODED) .content(SERVICE_GROUP_INPUT_BODY)) - .andExpect(status().isCreated());*/ + .andExpect(status().isCreated()); } @Test diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/monitor/MonitorResourceTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/monitor/MonitorResourceTest.java new file mode 100644 index 000000000..b680d69b8 --- /dev/null +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/monitor/MonitorResourceTest.java @@ -0,0 +1,104 @@ +package eu.europa.ec.edelivery.smp.monitor; + +import eu.europa.ec.edelivery.smp.config.PropertiesTestConfig; +import eu.europa.ec.edelivery.smp.config.SmpAppConfig; +import eu.europa.ec.edelivery.smp.config.SmpWebAppConfig; +import eu.europa.ec.edelivery.smp.config.SpringSecurityConfig; +import eu.europa.ec.edelivery.smp.monitor.MonitorResource; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockServletContext; +import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlConfig; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.RequestPostProcessor; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.WebApplicationContext; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import static org.junit.Assert.*; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +/** + * @author Joze Rihtarsic + * @since 4.1 + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { + PropertiesTestConfig.class, + SmpAppConfig.class, + SmpWebAppConfig.class, + SpringSecurityConfig.class}) +@WebAppConfiguration +@Sql("classpath:/cleanup-database.sql") +@Sql("classpath:/webapp_integration_test_data.sql") +@SqlConfig(encoding = "UTF-8") +public class MonitorResourceTest { + + @Rule + public ExpectedException expectedEx = ExpectedException.none(); + + private static final String URL = "/monitor/is-alive"; + private static final RequestPostProcessor ADMIN_CREDENTIALS = httpBasic("test_admin", "test123"); + @Autowired + private WebApplicationContext webAppContext; + + @Autowired + private MonitorResource testInstance; + + private MockMvc mvc; + + @Before + public void setup() { + mvc = MockMvcBuilders.webAppContextSetup(webAppContext) + .apply(SecurityMockMvcConfigurers.springSecurity()) + .build(); + + initServletContext(); + } + + private void initServletContext() { + MockServletContext sc = new MockServletContext(""); + ServletContextListener listener = new ContextLoaderListener(webAppContext); + ServletContextEvent event = new ServletContextEvent(sc); + listener.contextInitialized(event); + } + + + @Test + public void isAliveNotAuthorized() throws Exception { + mvc.perform(get(URL)) + .andExpect(status().isUnauthorized()); + } + + @Test + public void isAlive() throws Exception { + mvc.perform(get(URL) + .with(ADMIN_CREDENTIALS)) + .andExpect(status().isOk()); + } + + @Test + public void testDatabase() { + // given + expectedEx.expectMessage("TEST_DB_SUCCESSFUL_ROLLBACK MESSAGE"); + expectedEx.expect(RuntimeException.class); + // when + boolean bval = testInstance.testDatabase(); + //then + assertTrue(bval); + } +} \ No newline at end of file diff --git a/smp-webapp/src/test/resources/webapp_integration_test_data.sql b/smp-webapp/src/test/resources/webapp_integration_test_data.sql index 4b8b637a3..a9b2cfbba 100644 --- a/smp-webapp/src/test/resources/webapp_integration_test_data.sql +++ b/smp-webapp/src/test/resources/webapp_integration_test_data.sql @@ -20,9 +20,9 @@ insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_O insert into SMP_USER(ID, USERNAME, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (6, 'Cert2', 'SMP_ADMIN', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (6, 'CN=utf-8_ż_SMP,O=EC,C=BE:0000000000000666', null,null,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); - -insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (1, 'urn:australia:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); -insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (2, 'urn:brazil:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); +-- set the ids to higher values - tests are using sequnce which stars from 1 +insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (100000, 'urn:australia:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); +insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (200000, 'urn:brazil:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); --insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED) values (3, 'urn:poland:ncpb', 'ehealth-participantid-qns', 1); insert into SMP_DOMAIN (ID, DOMAIN_CODE, SML_SUBDOMAIN, SIGNATURE_KEY_ALIAS, CREATED_ON, LAST_UPDATED_ON) values (1, 'domain','subdomain','sig-key',CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP()); -- GitLab