From d46392d74641f5450d27857a41dd4d163b408ac3 Mon Sep 17 00:00:00 2001 From: Pawel GUTOWSKI <Pawel.GUTOWSKI@ext.ec.europa.eu> Date: Tue, 27 Feb 2018 14:11:47 +0100 Subject: [PATCH] EDELIVERY-1856 Added ServiceGroup references validation --- .../smp/validation/ServiceGroupValidator.java | 7 +++++++ .../validation/ServiceGroupValidatorTest.java | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidator.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidator.java index 3b0e28d7a..5c6173f83 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidator.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidator.java @@ -17,6 +17,7 @@ import eu.europa.ec.edelivery.smp.error.exceptions.BadRequestException; import eu.europa.ec.smp.api.Identifiers; 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.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -24,6 +25,7 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import static eu.europa.ec.edelivery.smp.error.ErrorBusinessCode.WRONG_FIELD; +import static org.springframework.util.CollectionUtils.isEmpty; /** @@ -55,6 +57,11 @@ public class ServiceGroupValidator { if (!schemaPattern.matcher(scheme).matches()) { throw new BadRequestException(WRONG_FIELD, "Service Group scheme does not match allowed pattern: " + schemaPattern.pattern()); } + + ServiceMetadataReferenceCollectionType references = serviceGroup.getServiceMetadataReferenceCollection(); + if (references != null && !isEmpty(references.getServiceMetadataReferences())) { + throw new BadRequestException(WRONG_FIELD, "ServiceMetadataReferenceCollection must be empty"); + } } } diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidatorTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidatorTest.java index 981aa7c63..6c4f3ce4e 100644 --- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidatorTest.java +++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/validation/ServiceGroupValidatorTest.java @@ -18,8 +18,11 @@ import org.junit.Before; import org.junit.Test; 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.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadataReferenceType; import static eu.europa.ec.smp.api.Identifiers.asString; +import static java.util.Arrays.asList; /** * Created by gutowpa on 02/08/2017. @@ -68,4 +71,19 @@ public class ServiceGroupValidatorTest { validator.validate(asString(id), sg); } + + @Test(expected = BadRequestException.class) + public void testServiceGroupWithReference() throws Throwable { + //given + ServiceMetadataReferenceType ref = new ServiceMetadataReferenceType("http://poland.pl"); + ServiceMetadataReferenceCollectionType references = new ServiceMetadataReferenceCollectionType(asList(ref)); + + ParticipantIdentifierType id = new ParticipantIdentifierType("urn:poland:ncpb", "correct-scheme-ok"); + ServiceGroup sg = new ServiceGroup(); + sg.setServiceMetadataReferenceCollection(references); + sg.setParticipantIdentifier(id); + + //when-then + validator.validate(asString(id), sg); + } } -- GitLab