From 10653b0995eabc3ec037a43dbe1b0fbde765bb4a Mon Sep 17 00:00:00 2001 From: Lyn Elisa Goltz <goltz@lat-lon.de> Date: Thu, 6 Mar 2025 10:39:31 +0100 Subject: [PATCH] XPLANBOX-3774 code drop: 0f2a5afc7c5820ea3e0118f1fdb128c1b58f6250 --- .gitlab-ci.yml | 3 +- CHANGELOG.md | 20 +- gitlab/all-kaniko-builds.gitlab-ci.yml | 10 + pom.xml | 8 +- xplan-cli/pom.xml | 2 +- xplan-core/pom.xml | 2 +- xplan-core/xplan-core-api/pom.xml | 2 +- xplan-core/xplan-core-commons/pom.xml | 2 +- .../feature/FeatureCollectionManipulator.java | 39 +- .../de/latlon/xplan/commons/s3/S3Storage.java | 20 +- .../s3/config/AmazonS3ReadOnlyContext.java | 17 +- .../commons/util/FeatureCollectionUtils.java | 11 + .../FeatureCollectionManipulatorTest.java | 60 +- .../util/FeatureCollectionUtilsTest.java | 22 + .../xplan53/BPlan002_5-3-internalId.gml | 1650 +++ xplan-core/xplan-core-gwt/pom.xml | 2 +- xplan-core/xplan-core-inspireplu/pom.xml | 2 +- xplan-core/xplan-core-job/pom.xml | 2 +- xplan-core/xplan-core-manager-db/pom.xml | 2 +- xplan-core/xplan-core-manager-deegree/pom.xml | 2 +- xplan-core/xplan-core-manager/pom.xml | 4 +- .../manager/database/XPlanDbAdapter.java | 14 +- xplan-core/xplan-core-raster/pom.xml | 2 +- xplan-core/xplan-core-schemas/pom.xml | 2 +- xplan-core/xplan-core-security/pom.xml | 2 +- xplan-core/xplan-core-synthesizer/pom.xml | 2 +- xplan-core/xplan-core-tests/pom.xml | 2 +- .../xplan-core-validator-events/pom.xml | 2 +- xplan-core/xplan-core-validator/pom.xml | 2 +- xplan-database/pom.xml | 2 +- xplan-database/xplan-database-docker/pom.xml | 2 +- xplan-database/xplan-database-scripts/pom.xml | 2 +- .../v80/UpdateInternalIdCustomChange.java | 116 + .../resources/8.0/changelog_xplanmgr.yaml | 6 + xplan-distribution/pom.xml | 2 +- xplan-docker/pom.xml | 2 +- xplan-docker/xplan-docker-tomcat/pom.xml | 2 +- xplan-docker/xplan-docker-volume-init/pom.xml | 2 +- xplan-documentation/pom.xml | 2 +- .../xplan-benutzerhandbuch/pom.xml | 2 +- .../src/main/asciidoc/XPlanManager_API.adoc | 7 +- .../asciidoc/XPlanManager_Grundlagen.adoc | 5 +- .../src/main/asciidoc/XPlanValidator_Web.adoc | 2 +- .../src/main/asciidoc/XPlanWMS.adoc | 8 +- .../src/main/asciidoc/aenderungsHistorie.adoc | 18 + .../src/main/asciidoc/bekannteProbleme.adoc | 9 +- .../xplan-betriebshandbuch/pom.xml | 2 +- .../src/main/asciidoc/aktualisierung.adoc | 16 + .../src/main/asciidoc/architektur.adoc | 16 + .../main/asciidoc/installation/mapserver.adoc | 4 +- .../manager/externeReferenzen.adoc | 9 +- .../src/main/asciidoc/ueberblick.adoc | 2 +- xplan-documentation/xplan-webpages/pom.xml | 2 +- xplan-dokumente/pom.xml | 2 +- xplan-dokumente/xplan-dokumente-api/pom.xml | 2 +- .../xplan-dokumente-config/pom.xml | 2 +- xplan-manager/pom.xml | 2 +- xplan-manager/xplan-manager-api/pom.xml | 2 +- .../exception/ValidationExceptionMapper.java | 44 + .../api/manager/handler/EditTextHandler.java | 14 +- .../manager/handler/v2/ConfigHandlerV2.java | 11 - .../manager/openapi/AbstractApiConfig.java | 2 + .../api/manager/openapi/v2/ApiV2Config.java | 2 +- .../xplanbox/api/manager/v1/PlanTextApi.java | 11 +- .../xplanbox/api/manager/v1/model/Text.java | 99 +- .../xplanbox/api/manager/v2/PlanTextApi2.java | 2 +- .../manager/v2/model/ManagerSystemConfig.java | 30 +- .../xplanbox/api/manager/v2/model/Text.java | 263 + .../src/main/resources/application.properties | 2 + .../api/manager/ManagerApiJerseyTest.java | 2 + .../api/manager/v2/PlanTextApi2Test.java | 16 +- .../api/manager/v2/textmodel-datetime.json | 17 + .../xplanbox/api/manager/v2/textmodel.json | 17 + xplan-manager/xplan-manager-config/pom.xml | 2 +- xplan-manager/xplan-manager-web/pom.xml | 2 +- xplan-tests/pom.xml | 2 +- xplan-tests/xplan-tests-integration/README.md | 7 +- xplan-tests/xplan-tests-integration/pom.xml | 2 +- .../runAllIntegrationTests.sh | 12 +- .../de/latlon/xplanbox/tests/TestConfig.java | 13 +- .../rabbit/AbstractRabbitITExecution.java | 5 +- .../rabbit/manager/ManagerPublicEventsIT.java | 6 +- xplan-tests/xplan-tests-manual/pom.xml | 2 +- xplan-tests/xplan-tests-soapui/pom.xml | 2 +- .../xplan-tests-soapui/runAllSoapUiTests.sh | 2 +- .../xplan-manager-api-soapui-project.xml | 11661 +++++++++------- .../plans/BPlan002_5-3_internalId.zip | Bin 0 -> 60636 bytes xplan-validator/pom.xml | 2 +- xplan-validator/xplan-validator-api/pom.xml | 2 +- .../src/main/resources/application.properties | 2 + .../xplan-validator-config/pom.xml | 2 +- .../xplan-validator-executor/pom.xml | 2 +- .../src/main/resources/application.properties | 2 + .../xplan-validator-storage/pom.xml | 2 +- xplan-validator/xplan-validator-web/pom.xml | 2 +- xplan-webservices/pom.xml | 2 +- .../xplan-webservices-core/pom.xml | 2 +- .../xplan-webservices-inspireplu/pom.xml | 2 +- .../xplan-webservices-mapproxy/pom.xml | 2 +- .../xplan-mapproxy-config/pom.xml | 2 +- .../src/main/resources/mapproxy.yaml | 2 +- .../xplan-mapproxy-docker/pom.xml | 2 +- .../xplan-webservices-mapserver/pom.xml | 2 +- .../xplan-mapserver-config/pom.xml | 2 +- .../src/main/resources/common.txt | 4 +- .../xplan-mapserver-docker/pom.xml | 2 +- .../startupWithConfiguredMapserver.sh | 19 +- .../xplan-webservices-services/pom.xml | 2 +- .../xplan-services-docker/pom.xml | 2 +- .../xplan-services-wfs-syn/pom.xml | 2 +- .../xplan-services-wfs/pom.xml | 2 +- .../xplan-services-wms/pom.xml | 2 +- .../xplan-webservices-validator-wms/pom.xml | 2 +- .../xplan-webservices-workspaces/pom.xml | 2 +- 114 files changed, 9494 insertions(+), 4989 deletions(-) create mode 100644 xplan-core/xplan-core-commons/src/test/resources/testdata/xplan53/BPlan002_5-3-internalId.gml create mode 100644 xplan-database/xplan-database-scripts/src/main/java/de/latlon/xplanbox/database/scripts/custom/v80/UpdateInternalIdCustomChange.java create mode 100644 xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/exception/ValidationExceptionMapper.java create mode 100644 xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/Text.java create mode 100644 xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel-datetime.json create mode 100644 xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel.json create mode 100644 xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api/plans/BPlan002_5-3_internalId.zip diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e1676166b..338b4f5c3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -83,12 +83,13 @@ maven-prepare-docker-contexts-apis-and-inspire-plu: maven-prepare-docker-contexts-cli: extends: .maven-prepare-docker-contexts variables: - mvnProjects: ':xplan-benutzerhandbuch,:xplan-betriebshandbuch,:xplan-cli,:xplan-database-docker,:xplan-webpages' + mvnProjects: ':xplan-benutzerhandbuch,:xplan-betriebshandbuch,:xplan-cli,:xplan-database-docker,:xplan-webpages,:xplan-validator-executor' artifacts: paths: # 2024.02.02: ~371M - './xplan-cli/target/docker/**/docker-build.tar.gz' - './xplan-documentation/**/target/docker/**/docker-build.tar.gz' - './xplan-database/xplan-database-docker/target/docker/**/docker-build.tar.gz' + - './xplan-validator/xplan-validator-executor/target/docker/**/docker-build.tar.gz' maven-prepare-docker-contexts-web-apps: extends: .maven-prepare-docker-contexts diff --git a/CHANGELOG.md b/CHANGELOG.md index 609cbe500..eb20bcc4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,14 +6,31 @@ Alle nennenswerten Änderungen an diesem Projekt werden in dieser Datei dokument | Release | Datum | Patch-Version | Dokumentation | Ende des Community Supports | Ende des erweiterten Supports (EoL) | |---------|------------|---------------|---------------------------------------|-----------------------------|-------------------------------------| -| 8.0 | 29.01.2025 | 8.0 | [Änderungen](#version-80-2025-01-29) | nächstes Release | 31.12.2025 | +| 8.0 | 29.01.2025 | 8.0.1 | [Änderungen](#version-801-2025-03-05) | nächstes Release | 31.12.2025 | | 7.2 | 14.05.2024 | 7.2.2 | [Änderungen](#version-722-2024-07-03) | 29.01.2025 | 30.06.2025 | | 7.1 | 13.12.2023 | 7.1.3 | [Änderungen](#version-713-2024-03-08) | 14.05.2024 | 31.12.2024 | | 7.0 | 16.08.2023 | 7.0.2 | [Änderungen](#version-702-2023-10-26) | 13.12.2023 | 30.06.2024 | | 6.0 | 28.10.2022 | 6.0.3 | [Änderungen](#version-603-2023-06-15) | 16.08.2023 | 31.12.2023 | +## Version 8.0.1 (2025-03-05) + +### Erweiterungen +- Konfigurationsoption für den Path-Style access für den Zugriff auf S3 hinzugefügt +- Konfigurationsoption für die Angabe eines RabbitMQ Virtual Host hinzugefügt + +### Fehlerbehebungen + +- Doppelte Angabe der _internalId_ im XPlanGML bei Import eines Plans über XPlanManagerAPI mit Query-Parameter internalId und internalId im XPlanGML behoben +- Fehlende Ausgabe der _internalId_ aus dem importierten XPlanGML durch XPlanManagerAPI behoben +- Fehlerhaftes Datumsformat in Textreferenzen in XPlanManagerAPI v2 behoben +- Fehlerhafter HTTP Statuscode bei Angabe eines invaliden Datumsformat in PUT/POST JSON-Model der XPlanManagerAPI behoben +- Fehler in XPlanMapServer durch Zugriff auf die Georeferenzen in der Tabelle _xplanmgr.plans_ behoben +- Ausgabe des Elements _rasterType_ in der Ressource /api/v2/info im XPlanManagerAPI entfernt + ## Version 8.0 (2025-01-29) +Neben der Aktualisierung auf Java 17 und die aktuelle deegree webservices Version 3.6 sind einige Erweiterungen und Verbesserungen an den Komponenten der xPlanBox vorgenommen worden. Ab Version 8.0 der xPlanBox ist ein S3-kompatibler Objektspeicher erforderlich. Mit der Version 8.0 wird die REST API v2 der Komponenten XPlanManagerAPI und XPlanValidatorAPI für die asynchrone Verarbeitung eingeführt. Als Message Broker ist [RabbitMQ](https://www.rabbitmq.com/) erforderlich. Bitte beachten Sie dazu die Hinweise im Betriebshandbuch, Kapitel Systemvoraussetzungen. + ### Breaking Changes An den Kartendiensten wurden Änderungen vorgenommen, die eine Anpassung an der Konfiguration von aufrufenden Clienten erfordern können. Bitte beachten Sie dazu die folgenden Hinweise. @@ -105,6 +122,7 @@ Im XPlanMapProxy wurden folgende Layer umbenannt: - Ausgabe von Validierungsfehlern als GeoJSON im XPlanValidator - Aufteilung des Validierungsberichts je Planwerk in einer XPlanGML-Datei - Erweiterung von XPlanValidatorAPI und XPlanManagerAPI um Prüfungen von referenzierten Rasterdaten auf gültiges CRS und Bildformat +- Aktualisierung der Validierungsregeln auf v1.1.10 - Verbesserung der Initialisierung des XPlanManager - Einführung der REST-API Version 2 (v2) für XPlanManagerAPI und XPlanValidatorAPI mit asynchroner Verarbeitung über RabbitMQ - Verbesserter Validierungsbericht in REST-API v2 diff --git a/gitlab/all-kaniko-builds.gitlab-ci.yml b/gitlab/all-kaniko-builds.gitlab-ci.yml index efc76c903..3bd1554b1 100644 --- a/gitlab/all-kaniko-builds.gitlab-ci.yml +++ b/gitlab/all-kaniko-builds.gitlab-ci.yml @@ -98,6 +98,7 @@ kaniko:xplan-inspireplu: tarGzFile: xplan-webservices/xplan-webservices-inspireplu/target/docker/xplanbox/xplan-webservices-inspireplu/tmp/docker-build.tar.gz needs: - maven-prepare-docker-contexts-apis-and-inspire-plu + - kaniko:xplan-docker-tomcat kaniko:xplan-manager-api: extends: .kaniko:build @@ -158,6 +159,15 @@ kaniko:xplan-tests-integration: needs: - maven-prepare-docker-contexts-others +kaniko:xplan-validator-executor: + extends: .kaniko:build + variables: + dockerImageName: xplan-validator-executor + tarGzFile: xplan-validator/xplan-validator-executor/target/docker/xplanbox/xplan-validator-executor/tmp/docker-build.tar.gz + needs: + - maven-prepare-docker-contexts-cli + - kaniko:xplan-docker-tomcat + kaniko:xplan-validator-api: extends: .kaniko:build variables: diff --git a/pom.xml b/pom.xml index 5c552adfa..c1dde5c65 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> <packaging>pom</packaging> - <version>8.0</version> + <version>8.0.1</version> <name>xPlanBox</name> <description>Software zur Verwaltung von XPlanGML Daten</description> <inceptionYear>2008</inceptionYear> @@ -30,10 +30,10 @@ <liquibase.version>4.30.0</liquibase.version> <liquibase.postgres.version>4.30.0.1</liquibase.postgres.version> <picocli.version>4.7.6</picocli.version> - <dependency-check.version>11.1.1</dependency-check.version> <!-- check cache location in gitlab/mvn-build-image.Dockerfile when updating --> + <dependency-check.version>12.1.0</dependency-check.version> <!-- check cache location in gitlab/mvn-build-image.Dockerfile when updating --> <swagger.version>2.2.27</swagger.version> <!-- overwrite from spring-boot-dependencies --> - <selenium.version>4.27.0</selenium.version> + <selenium.version>4.28.1</selenium.version> <!-- project properties --> <base.package.name>de.latlon.xplanbox</base.package.name> <distribution.repo.id>gitlab-maven</distribution.repo.id> @@ -1211,7 +1211,7 @@ <connection>scm:git:git@bitbucket.org:latlon/xplanbox.git</connection> <developerConnection>scm:git:git@bitbucket.org:latlon/xplanbox.git</developerConnection> <url>https://bitbucket.org/latlon/xplanbox</url> - <tag>xplanbox-8.0</tag> + <tag>xplanbox-8.0.1</tag> </scm> <repositories> diff --git a/xplan-cli/pom.xml b/xplan-cli/pom.xml index ed8a74467..acb9670ec 100644 --- a/xplan-cli/pom.xml +++ b/xplan-cli/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-core/pom.xml b/xplan-core/pom.xml index 4362dfc92..434f809f9 100644 --- a/xplan-core/pom.xml +++ b/xplan-core/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-core/xplan-core-api/pom.xml b/xplan-core/xplan-core-api/pom.xml index 172f3180f..58b711a29 100644 --- a/xplan-core/xplan-core-api/pom.xml +++ b/xplan-core/xplan-core-api/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-commons/pom.xml b/xplan-core/xplan-core-commons/pom.xml index 0a912fdca..f9e521b99 100644 --- a/xplan-core/xplan-core-commons/pom.xml +++ b/xplan-core/xplan-core-commons/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulator.java b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulator.java index d59cb80bf..4b24e2205 100644 --- a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulator.java +++ b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulator.java @@ -20,6 +20,13 @@ */ package de.latlon.xplan.commons.feature; +import static org.deegree.commons.tom.primitive.BaseType.STRING; + +import javax.xml.namespace.QName; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + import org.deegree.commons.tom.gml.property.Property; import org.deegree.commons.tom.gml.property.PropertyType; import org.deegree.commons.tom.primitive.PrimitiveValue; @@ -31,13 +38,6 @@ import org.deegree.feature.types.AppSchema; import org.deegree.feature.types.FeatureType; import org.deegree.feature.types.property.SimplePropertyType; -import javax.xml.namespace.QName; -import java.util.Date; -import java.util.Iterator; -import java.util.List; - -import static org.deegree.commons.tom.primitive.BaseType.STRING; - /** * Manipulates a deegree feature collection. * @@ -67,7 +67,7 @@ public class FeatureCollectionManipulator { Feature feature = iterator.next(); String nameOfFeature = feature.getName().getLocalPart(); if (isPlanFeature(nameOfFeature)) { - addInternalIdProperty(schema, internalId, feature); + addOrReplaceInternalIdProperty(schema, internalId, feature); } } } @@ -115,10 +115,18 @@ public class FeatureCollectionManipulator { } } - private void addInternalIdProperty(AppSchema schema, String internalId, Feature feature) { - Property property = createNewInternalIdProperty(internalId, feature); - int internalIdIndex = calculateIndex(schema, feature, INTERNAL_ID_PROP_NAME); - feature.getProperties().add(internalIdIndex, property); + private void addOrReplaceInternalIdProperty(AppSchema schema, String internalId, Feature feature) { + QName qName = new QName(feature.getName().getNamespaceURI(), INTERNAL_ID_PROP_NAME); + List<Property> properties = feature.getProperties(qName); + if (properties.isEmpty()) { + SimplePropertyType propertyType = new SimplePropertyType(qName, 0, 1, STRING, null, null); + Property property = new SimpleProperty(propertyType, internalId); + int internalIdIndex = calculateIndex(schema, feature, INTERNAL_ID_PROP_NAME); + feature.getProperties().add(internalIdIndex, property); + } + else { + properties.get(0).setValue(new PrimitiveValue(internalId)); + } } private void addMgrPlanIdProperty(int planId, Feature feature, FeatureType featureType) { @@ -145,13 +153,6 @@ public class FeatureCollectionManipulator { feature.getProperties().add(dateProp); } - private Property createNewInternalIdProperty(String internalId, Feature feature) { - String namespaceUri = feature.getName().getNamespaceURI(); - QName qName = new QName(namespaceUri, INTERNAL_ID_PROP_NAME); - SimplePropertyType propertyType = new SimplePropertyType(qName, 0, 1, STRING, null, null); - return new SimpleProperty(propertyType, internalId); - } - private int calculateIndex(AppSchema schema, Feature feature, String propertyName) { int internalIdIndex = 0; List<PropertyType> props = retrievePropertiesFromSchema(schema, feature); diff --git a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/S3Storage.java b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/S3Storage.java index e3ff6f7f6..6012ffbdf 100644 --- a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/S3Storage.java +++ b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/S3Storage.java @@ -64,13 +64,19 @@ public class S3Storage { public void setBucketExpirationDate(String id, int expirationInDays) throws StorageException { createBucketIfNotExists(); - BucketLifecycleConfiguration bucketLifecycleConfig = new BucketLifecycleConfiguration(); - BucketLifecycleConfiguration.Rule rule = new BucketLifecycleConfiguration.Rule().withId(id) - .withExpirationInDays(expirationInDays) - .withStatus(ENABLED) - .withFilter(new LifecycleFilter()); - bucketLifecycleConfig.withRules(rule); - client.setBucketLifecycleConfiguration(bucketName, bucketLifecycleConfig); + try { + BucketLifecycleConfiguration bucketLifecycleConfig = new BucketLifecycleConfiguration(); + BucketLifecycleConfiguration.Rule rule = new BucketLifecycleConfiguration.Rule().withId(id) + .withExpirationInDays(expirationInDays) + .withStatus(ENABLED) + .withFilter(new LifecycleFilter()); + bucketLifecycleConfig.withRules(rule); + client.setBucketLifecycleConfiguration(bucketName, bucketLifecycleConfig); + } + catch (Exception e) { + LOG.warn("Could not set expiration date for bucket {} to {} days: {}", bucketName, expirationInDays, + e.getMessage()); + } } /** diff --git a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/config/AmazonS3ReadOnlyContext.java b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/config/AmazonS3ReadOnlyContext.java index f89d92ad9..553e6a907 100644 --- a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/config/AmazonS3ReadOnlyContext.java +++ b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/s3/config/AmazonS3ReadOnlyContext.java @@ -8,12 +8,12 @@ * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% @@ -52,18 +52,17 @@ public class AmazonS3ReadOnlyContext { @Bean(destroyMethod = "shutdown") public AmazonS3 s3Client(AWSCredentials credentials, @Value("${xplanbox.s3.region:#{environment.XPLAN_S3_REGION}}") String region, - @Value("${xplanbox.s3.endpoint.url:#{environment.XPLAN_S3_ENDPOINT}}") String endpointUrl) { - - // TODO refactoring if/else to @ConditionalOnExpression with SpringBoot into 2 - // SpringBeans + @Value("${xplanbox.s3.endpoint.url:#{environment.XPLAN_S3_ENDPOINT}}") String endpointUrl, + @Value("${xplanbox.s3.pathStyleAccessEnabled:#{environment.XPLAN_S3_PATHSTYLEACCESS_ENABLED?:false}}") boolean pathStyleAccessEnabled) { + LOG.info("Using S3 url {} (region {}) path style access is {}", endpointUrl, region, + pathStyleAccessEnabled ? "enabled" : "disabled"); AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard() - .withCredentials(new AWSStaticCredentialsProvider(credentials)); + .withCredentials(new AWSStaticCredentialsProvider(credentials)) + .withPathStyleAccessEnabled(pathStyleAccessEnabled); if (endpointUrl == null || endpointUrl.isEmpty()) { - LOG.info("Using S3 region {}", region); builder.withRegion(region); } else { - LOG.info("Using S3 url {} (region {})", endpointUrl); AwsClientBuilder.EndpointConfiguration endpoint = new AwsClientBuilder.EndpointConfiguration(endpointUrl, region); builder.withEndpointConfiguration(endpoint); diff --git a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/util/FeatureCollectionUtils.java b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/util/FeatureCollectionUtils.java index 86e31c091..2c38af0da 100644 --- a/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/util/FeatureCollectionUtils.java +++ b/xplan-core/xplan-core-commons/src/main/java/de/latlon/xplan/commons/util/FeatureCollectionUtils.java @@ -183,6 +183,17 @@ public class FeatureCollectionUtils { return gemeinden; } + /** + * Retrieves the internalId of the passed {@link FeatureCollection}. + * @param fc XPlan-FeatureCollection, never <code>null</code> + * @return the internalId or <code>null</code> + */ + public static String retrieveInternalId(FeatureCollection fc, XPlanType type) { + Feature planFeature = findPlanFeature(fc, type); + String ns = planFeature.getName().getNamespaceURI(); + return getPropertyStringValue(planFeature, new QName(ns, "internalId")); + } + public static GenericXMLElement getXpGemeinde(Property f) { if (f instanceof GenericProperty) { List<TypedObjectNode> children = f.getChildren(); diff --git a/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulatorTest.java b/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulatorTest.java index 92ca6c096..c9d2b38f8 100644 --- a/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulatorTest.java +++ b/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/feature/FeatureCollectionManipulatorTest.java @@ -20,15 +20,17 @@ */ package de.latlon.xplan.commons.feature; +import static org.deegree.commons.tom.primitive.BaseType.STRING; + +import javax.xml.namespace.QName; +import java.util.ArrayList; +import java.util.Iterator; + import de.latlon.xplan.commons.XPlanSchemas; import de.latlon.xplan.commons.XPlanVersion; - import org.assertj.core.api.AbstractAssert; -import org.assertj.core.api.Assert; import org.assertj.core.api.Assertions; import org.deegree.commons.tom.gml.property.Property; -import org.deegree.commons.tom.gml.property.PropertyType; -import org.deegree.commons.xml.NamespaceBindings; import org.deegree.feature.Feature; import org.deegree.feature.FeatureCollection; import org.deegree.feature.GenericFeatureCollection; @@ -40,13 +42,6 @@ import org.deegree.feature.types.property.SimplePropertyType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import javax.xml.namespace.QName; -import java.util.ArrayList; -import java.util.Iterator; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.deegree.commons.tom.primitive.BaseType.STRING; - /** * Tests for {@link de.latlon.xplan.commons.feature.FeatureCollectionManipulator}. * @@ -67,7 +62,7 @@ class FeatureCollectionManipulatorTest { private FeatureCollection fcWithoutNameProperty; - private FeatureCollectionManipulator featureCollectionManipulator = new FeatureCollectionManipulator(); + private final FeatureCollectionManipulator featureCollectionManipulator = new FeatureCollectionManipulator(); @BeforeEach void initialize() { @@ -120,6 +115,22 @@ class FeatureCollectionManipulatorTest { 1); } + @Test + void testProcessAdditionOfInternalIdWithBpPlanFeatureIncludingInternalId() { + FeatureCollection fcWithInternalId = new GenericFeatureCollection("fc_id1", createFeaturesWithInternalId()); + String propValue = "test_internal_id"; + featureCollectionManipulator.addInternalId(fcWithInternalId, createSchema(), propValue); + + assertThatFeatureCollection(fcWithInternalId).hasProperty(FEATURE_NAME_BP_PLAN, "internalId", propValue); + assertThatFeatureCollection(fcWithInternalId).hasExactlyOneProperty(FEATURE_NAME_BP_PLAN, "internalId"); + } + + private ArrayList<Feature> createFeaturesWithInternalId() { + ArrayList<Property> properties = createProperties(); + createAndAddProperty(properties, "internalId", "test_internalid_1"); + return createFeatures(properties); + } + private ArrayList<Feature> createFeaturesWithAllProperties() { ArrayList<Property> properties = createProperties(); return createFeatures(properties); @@ -132,7 +143,7 @@ class FeatureCollectionManipulatorTest { } private ArrayList<Property> createProperties() { - ArrayList<Property> properties = new ArrayList<Property>(); + ArrayList<Property> properties = new ArrayList<>(); createAndAddProperty(properties, "name", "test_name \"27\""); createAndAddProperty(properties, "nummer", "test_nummer"); createAndAddProperty(properties, "beschreibung", "test_beschreibung"); @@ -150,7 +161,7 @@ class FeatureCollectionManipulatorTest { } private ArrayList<Feature> createFeatures(ArrayList<Property> properties) { - ArrayList<Feature> features = new ArrayList<Feature>(); + ArrayList<Feature> features = new ArrayList<>(); createAndAddFeature(properties, features, FEATURE_NAME_BP_TEST, "feature1"); createAndAddFeature(properties, features, FEATURE_NAME_BP_PLAN, "feature2"); createAndAddFeature(properties, features, FEATURE_NAME_TEST_PLAN, "feature3"); @@ -160,7 +171,7 @@ class FeatureCollectionManipulatorTest { private void createAndAddFeature(ArrayList<Property> properties, ArrayList<Feature> features, String name, String featureName) { QName qName = new QName(NAMESPACE_URI, name); - FeatureType ft = new GenericFeatureType(qName, new ArrayList<PropertyType>(), false); + FeatureType ft = new GenericFeatureType(qName, new ArrayList<>(), false); Feature feature = ft.newFeature(featureName, properties, null); features.add(feature); } @@ -191,6 +202,18 @@ class FeatureCollectionManipulatorTest { throw failure("Feature with name " + featureName + " not found!"); } + FeatureCollectionAssert hasExactlyOneProperty(final String featureName, final String propertyName) { + Iterator<Feature> iterator = actual.iterator(); + while (iterator.hasNext()) { + Feature feature = iterator.next(); + if (feature.getType().getName().toString().contains(featureName)) { + Assertions.assertThat(feature.getProperties(new QName(NAMESPACE_URI, propertyName))).hasSize(1); + return this; + } + } + throw failure("Feature with name " + featureName + " not found!"); + } + FeatureCollectionAssert hasProperty(final String featureName, final String propertyName, final String propertyValue) { return hasProperty(featureName, propertyName, propertyValue, -1); @@ -224,10 +247,8 @@ class FeatureCollectionManipulatorTest { return index == -1 || index == position; } - FeatureCollectionAssert hasNoProperty(final String featureName, final String propertyName) { - Iterator<Feature> iterator = actual.iterator(); - while (iterator.hasNext()) { - Feature feature = iterator.next(); + void hasNoProperty(final String featureName, final String propertyName) { + for (Feature feature : actual) { if (feature.getType().getName().toString().contains(featureName)) { for (Property property : feature.getProperties()) { String name = property.getName().getLocalPart(); @@ -238,7 +259,6 @@ class FeatureCollectionManipulatorTest { } } } - return this; } } diff --git a/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/util/FeatureCollectionUtilsTest.java b/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/util/FeatureCollectionUtilsTest.java index aefa7e8a4..d93c67b1e 100644 --- a/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/util/FeatureCollectionUtilsTest.java +++ b/xplan-core/xplan-core-commons/src/test/java/de/latlon/xplan/commons/util/FeatureCollectionUtilsTest.java @@ -24,6 +24,7 @@ import static de.latlon.xplan.commons.XPlanType.BP_Plan; import static de.latlon.xplan.commons.util.FeatureCollectionUtils.findPlanFeature; import static de.latlon.xplan.commons.util.FeatureCollectionUtils.retrieveBereiche; import static de.latlon.xplan.commons.util.FeatureCollectionUtils.retrieveGemeinden; +import static de.latlon.xplan.commons.util.FeatureCollectionUtils.retrieveInternalId; import static de.latlon.xplan.commons.util.FeatureCollectionUtils.retrieveRechtsstand; import static org.assertj.core.api.Assertions.assertThat; @@ -120,6 +121,20 @@ class FeatureCollectionUtilsTest { assertThat(gemeindem.get(1).getOrtsteilName()).isEqualTo("999"); } + @Test + void testRetrieveInternalId_expectNull() throws Exception { + FeatureCollection fc = getMainFileAsFeatureCollection("xplan41/Eidelstedt_4_V4.zip"); + String internalId = retrieveInternalId(fc, BP_Plan); + assertThat(internalId).isNull(); + } + + @Test + void testRetrieveInternalId() throws Exception { + FeatureCollection fc = getFeatureCollection("xplan53/BPlan002_5-3-internalId.gml"); + String internalId = retrieveInternalId(fc, BP_Plan); + assertThat(internalId).isEqualTo("TESTID1"); + } + private FeatureCollection getMainFileAsFeatureCollection(String name) throws Exception { XPlanArchiveCreator archiveCreator = new XPlanArchiveCreator(); XPlanArchive archive = archiveCreator.createXPlanArchiveFromZip(name, @@ -127,4 +142,11 @@ class FeatureCollectionUtilsTest { return XPlanGmlParserBuilder.newBuilder().build().parseFeatureCollection(archive); } + private FeatureCollection getFeatureCollection(String name) throws Exception { + XPlanArchiveCreator archiveCreator = new XPlanArchiveCreator(); + XPlanArchive archive = archiveCreator.createXPlanArchiveFromGml(name, + getClass().getResourceAsStream("/testdata/" + name)); + return XPlanGmlParserBuilder.newBuilder().build().parseFeatureCollection(archive); + } + } diff --git a/xplan-core/xplan-core-commons/src/test/resources/testdata/xplan53/BPlan002_5-3-internalId.gml b/xplan-core/xplan-core-commons/src/test/resources/testdata/xplan53/BPlan002_5-3-internalId.gml new file mode 100644 index 000000000..117ea3691 --- /dev/null +++ b/xplan-core/xplan-core-commons/src/test/resources/testdata/xplan53/BPlan002_5-3-internalId.gml @@ -0,0 +1,1650 @@ +<?xml version='1.0' encoding='UTF-8'?> +<xplan:XPlanAuszug xmlns:xplan="http://www.xplanung.de/xplangml/5/3" xmlns:gml="http://www.opengis.net/gml/3.2" gml:id="id03cca746-e25b-49ea-a012-beaf85a63818"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557243.062 5936905.959</gml:lowerCorner> + <gml:upperCorner>557352.03 5937000.801</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_0fc51f62-6a65-474f-8284-5ce22a0c6b3a"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557332.326 5936921.811</gml:lowerCorner> + <gml:upperCorner>557332.326 5936921.811</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_667a1561-6dd1-4852-b856-794fa0033c11'--> + <gml:Point gml:id="GML_667a1561-6dd1-4852-b856-794fa0033c11" srsName="EPSG:25832"> + <gml:pos>557332.326 5936921.811</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_1a78c54e-9179-422e-b8e9-eb64dc7097b2"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557311.865 5936971.444</gml:lowerCorner> + <gml:upperCorner>557311.865 5936971.444</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_eb8b926e-4648-4055-8693-50a6f6cbc780'--> + <gml:Point gml:id="GML_eb8b926e-4648-4055-8693-50a6f6cbc780" srsName="EPSG:25832"> + <gml:pos>557311.865 5936971.444</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>2000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_2c5cd4ae-8269-4b2c-aa97-0a20d083a6a1"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557264.185 5936959.893</gml:lowerCorner> + <gml:upperCorner>557264.185 5936959.893</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_44abde69-ead4-462e-9dde-bfd6402a7b71'--> + <gml:Point gml:id="GML_44abde69-ead4-462e-9dde-bfd6402a7b71" srsName="EPSG:25832"> + <gml:pos>557264.185 5936959.893</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_35b41d25-91e7-4fbb-a736-2b8d45b4d92c"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557319.737 5936917.872</gml:lowerCorner> + <gml:upperCorner>557319.737 5936917.872</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_225626dc-a093-4cc6-b50f-a1c024bab6d5'--> + <gml:Point gml:id="GML_225626dc-a093-4cc6-b50f-a1c024bab6d5" srsName="EPSG:25832"> + <gml:pos>557319.737 5936917.872</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_399137a3-6ed8-469f-8467-1a299a626b6e"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557269.976 5936956.155</gml:lowerCorner> + <gml:upperCorner>557269.976 5936956.155</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_0332dc5c-dc2c-40a4-9034-9fc88b5296e0'--> + <gml:Point gml:id="GML_0332dc5c-dc2c-40a4-9034-9fc88b5296e0" srsName="EPSG:25832"> + <gml:pos>557269.976 5936956.155</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_45ac081e-d914-4b32-bd23-8f8b47fd6337"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557334.822 5936957.891</gml:lowerCorner> + <gml:upperCorner>557334.822 5936957.891</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_9bcd8eee-dad6-45c3-8d56-9f80c6047324'--> + <gml:Point gml:id="GML_9bcd8eee-dad6-45c3-8d56-9f80c6047324" srsName="EPSG:25832"> + <gml:pos>557334.822 5936957.891</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_58198dc5-410e-4899-aab1-6c9b49380d89"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557332.34 5936935.78</gml:lowerCorner> + <gml:upperCorner>557332.34 5936935.78</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_6023c8b4-4942-4740-87d1-3aa9b09ca39e'--> + <gml:Point gml:id="GML_6023c8b4-4942-4740-87d1-3aa9b09ca39e" srsName="EPSG:25832"> + <gml:pos>557332.34 5936935.78</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_6a9c220b-0e7d-4092-8efd-b3f49b47ad9a"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557295.236 5936933.449</gml:lowerCorner> + <gml:upperCorner>557295.236 5936933.449</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_4052e2d5-2518-4a32-9a52-fcc1ca4442d2'--> + <gml:Point gml:id="GML_4052e2d5-2518-4a32-9a52-fcc1ca4442d2" srsName="EPSG:25832"> + <gml:pos>557295.236 5936933.449</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_8ad15a94-adc2-45a0-8941-f65e1789a6e1"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557337.513 5936969.295</gml:lowerCorner> + <gml:upperCorner>557337.513 5936969.295</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_455a79de-2970-4117-a4e2-8ee7ee831699'--> + <gml:Point gml:id="GML_455a79de-2970-4117-a4e2-8ee7ee831699" srsName="EPSG:25832"> + <gml:pos>557337.513 5936969.295</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_93b6492f-38dd-4407-91e3-59e54f9ad479"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557252.747 5936958.095</gml:lowerCorner> + <gml:upperCorner>557252.747 5936958.095</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_cc338897-5801-4c83-be2b-cf00280aa057'--> + <gml:Point gml:id="GML_cc338897-5801-4c83-be2b-cf00280aa057" srsName="EPSG:25832"> + <gml:pos>557252.747 5936958.095</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>2000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_9d37066a-fc9c-49d1-a174-26ebe698544b"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557335.055 5936955.002</gml:lowerCorner> + <gml:upperCorner>557335.055 5936955.002</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_1aca33f5-aa8f-4267-a878-666e3356b734'--> + <gml:Point gml:id="GML_1aca33f5-aa8f-4267-a878-666e3356b734" srsName="EPSG:25832"> + <gml:pos>557335.055 5936955.002</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_b257263b-ef36-4e79-aec6-40828d294b89"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557317.273 5936926.333</gml:lowerCorner> + <gml:upperCorner>557317.273 5936926.333</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_39484e80-df87-4ebf-a116-b02ab47a86cb'--> + <gml:Point gml:id="GML_39484e80-df87-4ebf-a116-b02ab47a86cb" srsName="EPSG:25832"> + <gml:pos>557317.273 5936926.333</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_b3cd5c23-f203-430a-a3fa-c48c87dcd2bb"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557333.0 5936941.461</gml:lowerCorner> + <gml:upperCorner>557333.0 5936941.461</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_baf5f583-7298-4439-878f-c461eee22937'--> + <gml:Point gml:id="GML_baf5f583-7298-4439-878f-c461eee22937" srsName="EPSG:25832"> + <gml:pos>557333.0 5936941.461</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_b6df3477-0838-4dbf-9759-2465791431bc"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557297.018 5936968.178</gml:lowerCorner> + <gml:upperCorner>557297.018 5936968.178</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_e6777a01-b2a2-4ad3-bcca-f4ed629b0b03'--> + <gml:Point gml:id="GML_e6777a01-b2a2-4ad3-bcca-f4ed629b0b03" srsName="EPSG:25832"> + <gml:pos>557297.018 5936968.178</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>2000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_b848ccef-9c0a-48b5-9860-c564d3917061"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557335.397 5936951.59</gml:lowerCorner> + <gml:upperCorner>557335.397 5936951.59</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_cc418e1c-abd1-47d2-b645-3b847ba2ae88'--> + <gml:Point gml:id="GML_cc418e1c-abd1-47d2-b645-3b847ba2ae88" srsName="EPSG:25832"> + <gml:pos>557335.397 5936951.59</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_dbf33225-0a65-465d-98d5-c0be7d6b617e"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557328.375 5936928.357</gml:lowerCorner> + <gml:upperCorner>557328.375 5936928.357</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_883a44c2-b3b8-4e5d-8598-bafed529f704'--> + <gml:Point gml:id="GML_883a44c2-b3b8-4e5d-8598-bafed529f704" srsName="EPSG:25832"> + <gml:pos>557328.375 5936928.357</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_e012746e-38b8-4d63-94f8-18569750e3d9"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557259.315 5936950.212</gml:lowerCorner> + <gml:upperCorner>557259.315 5936950.212</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_a975b2dc-f9a4-4bc4-91c8-df77cfabe5c5'--> + <gml:Point gml:id="GML_a975b2dc-f9a4-4bc4-91c8-df77cfabe5c5" srsName="EPSG:25832"> + <gml:pos>557259.315 5936950.212</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_e4d0b31a-ea35-4506-b96f-9ab941d6174d"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557315.82 5936977.616</gml:lowerCorner> + <gml:upperCorner>557315.82 5936977.616</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_b7952f42-1010-41dd-b546-eae6546ac983'--> + <gml:Point gml:id="GML_b7952f42-1010-41dd-b546-eae6546ac983" srsName="EPSG:25832"> + <gml:pos>557315.82 5936977.616</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>2000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_e5c95662-3bad-405c-9f9c-05645dbbfba9"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557275.595 5936943.471</gml:lowerCorner> + <gml:upperCorner>557275.595 5936943.471</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_91debb58-8b47-4775-b174-c906f2302b3f'--> + <gml:Point gml:id="GML_91debb58-8b47-4775-b174-c906f2302b3f" srsName="EPSG:25832"> + <gml:pos>557275.595 5936943.471</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_e6859531-f92b-44b0-9e23-d56e82a63759"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557334.972 5936939.567</gml:lowerCorner> + <gml:upperCorner>557334.972 5936939.567</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_21fecae0-2a9f-4a6e-9819-357473d16f90'--> + <gml:Point gml:id="GML_21fecae0-2a9f-4a6e-9819-357473d16f90" srsName="EPSG:25832"> + <gml:pos>557334.972 5936939.567</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_ebce8a69-eb87-4165-8691-eb8c5d2480a4"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557334.275 5936972.765</gml:lowerCorner> + <gml:upperCorner>557334.275 5936972.765</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_55ff7a59-8461-4905-8712-4850efff1528'--> + <gml:Point gml:id="GML_55ff7a59-8461-4905-8712-4850efff1528" srsName="EPSG:25832"> + <gml:pos>557334.275 5936972.765</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_ed47f67d-ed30-4e36-985a-2a2611445764"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557273.674 5936962.69</gml:lowerCorner> + <gml:upperCorner>557273.674 5936962.69</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_8d7574a5-5d55-456e-9776-dfe9a1d783b5'--> + <gml:Point gml:id="GML_8d7574a5-5d55-456e-9776-dfe9a1d783b5" srsName="EPSG:25832"> + <gml:pos>557273.674 5936962.69</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>1000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_AnpflanzungBindungErhaltung gml:id="GML_f1860701-0776-4cd6-af09-791abcbb6f80"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557286.207 5936969.124</gml:lowerCorner> + <gml:upperCorner>557286.207 5936969.124</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_eadd7333-bae9-4379-ac48-d113aa443e6e'--> + <gml:Point gml:id="GML_eadd7333-bae9-4379-ac48-d113aa443e6e" srsName="EPSG:25832"> + <gml:pos>557286.207 5936969.124</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + <xplan:massnahme>2000</xplan:massnahme> + <xplan:gegenstand>1000</xplan:gegenstand> + <xplan:istAusgleich>false</xplan:istAusgleich> + </xplan:BP_AnpflanzungBindungErhaltung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_BauGrenze gml:id="GML_0a9d432b-b65e-454c-9f35-e8c4f55acd0f"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557310.823 5936931.207</gml:lowerCorner> + <gml:upperCorner>557327.575 5936967.95</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:ebene>0</xplan:ebene> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_df84cd17-9b09-4522-95de-a03c76a20a6d'--> + <gml:Curve gml:id="GML_df84cd17-9b09-4522-95de-a03c76a20a6d" srsName="EPSG:25832"> + <gml:segments> + <gml:LineStringSegment interpolation="linear"> + <gml:posList>557323.539 5936931.207 557327.575 5936966.477 557314.892 5936967.95 557310.823 5936932.677 557323.539 5936931.207</gml:posList> + </gml:LineStringSegment> + </gml:segments> + </gml:Curve> + </xplan:position> + </xplan:BP_BauGrenze> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_BauGrenze gml:id="GML_954e03f8-4888-459e-b192-66edf5cd4b10"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557284.229 5936937.668</gml:lowerCorner> + <gml:upperCorner>557299.272 5936959.488</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:ebene>0</xplan:ebene> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_8e114075-4df3-40be-a68e-53aa32eebda6'--> + <gml:Curve gml:id="GML_8e114075-4df3-40be-a68e-53aa32eebda6" srsName="EPSG:25832"> + <gml:segments> + <gml:LineStringSegment interpolation="linear"> + <gml:posList>557296.947 5936937.668 557299.272 5936958.036 557286.554 5936959.488 557284.229 5936939.12 557296.947 5936937.668</gml:posList> + </gml:LineStringSegment> + </gml:segments> + </gml:Curve> + </xplan:position> + </xplan:BP_BauGrenze> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_BaugebietsTeilFlaeche gml:id="GML_c3e0bb6a-9e1d-4461-8995-fe1eebf5bfcd"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557273.326 5936921.698</gml:lowerCorner> + <gml:upperCorner>557330.77 5936982.349</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:ebene>0</xplan:ebene> + <xplan:hoehenangabe> + <xplan:XP_Hoehenangabe> + <xplan:hoehenbezug>1000</xplan:hoehenbezug> + <xplan:bezugspunkt>2000</xplan:bezugspunkt> + <xplan:h uom="m">50</xplan:h> + </xplan:XP_Hoehenangabe> + </xplan:hoehenangabe> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_8b8ff5aa-cafb-4740-a12a-adc5ee16856b"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_0c35b24f-6cf5-4e98-9460-a7b2f4e37766"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_ed1db422-4904-4271-a048-1832df70c070"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_09ae3866-c6fc-427c-baf1-2c88200f54b6"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_684fb51c-3d0f-4993-8ff0-dc3b62686b88"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_15da3577-65bc-4d3e-b36d-69b3364d8027"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_3c86cc25-e5d6-4672-b5f3-f433f0ade539"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_6ffd7105-ba11-41bd-8ec5-c5c1bcc962c4"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_102950a6-e58f-492e-a576-a383c2902330"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_60722a9c-5b21-4eb7-983f-ffe65830a990"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_91d49462-d233-47df-9ac1-f4d37c68af8f"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c6413128-a7f6-4420-86fa-5fceb7ce283b"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5d50c47d-d8a4-40ad-93fb-b17bcc1b6849"/> + <xplan:position> + <!--Inlined geometry 'GML_cde23e34-38f8-44d9-985e-cde564222f94'--> + <gml:Polygon gml:id="GML_cde23e34-38f8-44d9-985e-cde564222f94" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557327.161 5936981.911 557321.72 5936982.349 557315.876 5936981.17 557303.85 5936976.479 557301.814 5936975.865 557282.799 5936970.132 557282.027 5936969.9 557281.151 5936962.053 557275.7 5936962.653 557273.326 5936942.061 557278.277 5936939.821 557281.666 5936938.219 557284.957 5936936.594 557291.454 5936933.297 557303.403 5936926.263 557310.6 5936921.698 557311.567 5936930.039 557326.285 5936928.337 557330.77 5936967.193 557330.759 5936967.721 557330.62 5936968.23 557330.36 5936968.69 557329.996 5936969.071 557326.077 5936972.271 557327.161 5936981.911</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>true</xplan:flaechenschluss> + <xplan:MinGRWohneinheit uom="m2">600</xplan:MinGRWohneinheit> + <xplan:GFZ>0.4</xplan:GFZ> + <xplan:Z>2</xplan:Z> + <xplan:besondereArtDerBaulNutzung>1100</xplan:besondereArtDerBaulNutzung> + </xplan:BP_BaugebietsTeilFlaeche> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_Bereich gml:id="GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557243.062 5936905.959</gml:lowerCorner> + <gml:upperCorner>557352.03 5937000.801</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:nummer>0</xplan:nummer> + <xplan:rasterBasis xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c563dcea-63fe-40a0-95c6-36e7db11c444"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_ed47f67d-ed30-4e36-985a-2a2611445764"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_8ad15a94-adc2-45a0-8941-f65e1789a6e1"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_ce98283b-08ad-46e9-b702-c0496a87ea63"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_435c123d-74af-4da3-9b08-2230d60f4afc"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_e5c95662-3bad-405c-9f9c-05645dbbfba9"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_b257263b-ef36-4e79-aec6-40828d294b89"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_b6df3477-0838-4dbf-9759-2465791431bc"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_377d43a1-8c65-4039-bd90-889d75a76b87"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_0a9d432b-b65e-454c-9f35-e8c4f55acd0f"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_399137a3-6ed8-469f-8467-1a299a626b6e"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_e4d0b31a-ea35-4506-b96f-9ab941d6174d"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_11a36ea8-653e-4b2a-9b24-ba5429c9faa6"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c3e0bb6a-9e1d-4461-8995-fe1eebf5bfcd"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_e6859531-f92b-44b0-9e23-d56e82a63759"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f1860701-0776-4cd6-af09-791abcbb6f80"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f5c89321-8a1b-4562-8364-b2cccf41dc3c"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_488c129a-c949-4c2b-8532-298829f8815f"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_e9a3d8e9-50dc-4b84-bf0a-101182add402"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5751cd04-1a14-4c04-86e8-3d08e3cfc690"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_3fe2035b-5c40-4fbd-b937-bbca2b9b1d4e"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_93b6492f-38dd-4407-91e3-59e54f9ad479"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_9d37066a-fc9c-49d1-a174-26ebe698544b"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_d1b7b2a9-184e-46c1-b326-df611ecee4b2"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_209d05c2-6a1c-4d7c-8139-9c7f71dfcc13"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_45ac081e-d914-4b32-bd23-8f8b47fd6337"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_b848ccef-9c0a-48b5-9860-c564d3917061"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_dbf33225-0a65-465d-98d5-c0be7d6b617e"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f553de4c-97e6-4f45-a5c2-a89886d18301"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_b3cd5c23-f203-430a-a3fa-c48c87dcd2bb"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_382429ee-f25f-4d00-b826-8e804ddbdebc"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_ebce8a69-eb87-4165-8691-eb8c5d2480a4"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_1a78c54e-9179-422e-b8e9-eb64dc7097b2"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_09d5413d-ccd7-40a1-8298-80bb22850dd3"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_954e03f8-4888-459e-b192-66edf5cd4b10"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_6a9c220b-0e7d-4092-8efd-b3f49b47ad9a"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_e012746e-38b8-4d63-94f8-18569750e3d9"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5824d0ca-ea90-441f-830c-c070f1a0aa05"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_35b41d25-91e7-4fbb-a736-2b8d45b4d92c"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_0fc51f62-6a65-474f-8284-5ce22a0c6b3a"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_58198dc5-410e-4899-aab1-6c9b49380d89"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_2c5cd4ae-8269-4b2c-aa97-0a20d083a6a1"/> + <xplan:planinhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_7ef4531b-e85e-40e4-8c09-0e19a3ec5177"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_042e6f7a-e1c3-4569-b5a5-de1b996e5ba7"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_730b4676-8840-4cbd-a2e0-7e351cc61965"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_2dea9178-9249-4fd3-b4ba-ba48bfc27ecd"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_8b8ff5aa-cafb-4740-a12a-adc5ee16856b"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_7087c593-4639-4fef-8b91-773ed64df8cf"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_0c35b24f-6cf5-4e98-9460-a7b2f4e37766"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_ed1db422-4904-4271-a048-1832df70c070"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_a39fac97-534a-4266-9e20-b25c1008a015"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5e033921-530a-47b1-84e3-a508f45c2d51"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_9fa3a84d-a7ed-4e6d-b75e-8611dbbe3097"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_09ae3866-c6fc-427c-baf1-2c88200f54b6"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_ab6dc9c7-febf-4465-b4c6-fc60838ed212"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_794de089-2788-4cb4-ab79-3ba5f7639710"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_b87933a3-7241-47d2-b1f3-ccceb7edeee5"/> + <xplan:praesentationsobjekt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c47097ae-79f6-4001-841b-da9b80979252"/> + <xplan:gehoertZuPlan xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_fe4856a1-1a37-4eec-bae5-1685f1a2feb2"/> + </xplan:BP_Bereich> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_EingriffsBereich gml:id="GML_435c123d-74af-4da3-9b08-2230d60f4afc"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557248.588 5936911.596</gml:lowerCorner> + <gml:upperCorner>557339.808 5936982.349</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:text>Grundstücke denen Flächen mit landschaftspflegerischen Ausgleichs- und Ersatzmaßnahmen zugeordnet sind</xplan:text> + <xplan:gliederung2>Z</xplan:gliederung2> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_9fa3a84d-a7ed-4e6d-b75e-8611dbbe3097"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c6413128-a7f6-4420-86fa-5fceb7ce283b"/> + <xplan:position> + <!--Inlined geometry 'GML_6e77ae96-9884-48be-855d-71d274399c4b'--> + <gml:Polygon gml:id="GML_6e77ae96-9884-48be-855d-71d274399c4b" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557248.791 5936962.546 557248.721 5936962.244 557248.628 5936961.678 557248.588 5936961.154 557248.596 5936960.519 557248.665 5936959.903 557248.816 5936959.205 557249.051 5936958.51 557250.405 5936954.713 557250.635 5936954.194 557250.89 5936953.7 557251.197 5936953.184 557251.493 5936952.746 557251.875 5936952.249 557252.304 5936951.762 557252.673 5936951.391 557253.172 5936950.948 557253.708 5936950.537 557254.369 5936950.105 557255.024 5936949.748 557256.016 5936949.325 557264.737 5936945.806 557273.326 5936942.061 557278.277 5936939.821 557281.666 5936938.219 557284.957 5936936.594 557291.454 5936933.297 557303.403 5936926.263 557310.6 5936921.698 557314.46 5936919.234 557318.283 5936916.733 557322.093 5936914.178 557325.854 5936911.596 557326.21 5936913.258 557333.18 5936912.819 557334.723 5936925.766 557339.07 5936940.522 557339.808 5936948.038 557339.627 5936968.536 557338.756 5936972.394 557336.499 5936975.641 557331.253 5936980.259 557327.65 5936981.872 557321.72 5936982.349 557315.876 5936981.17 557303.85 5936976.479 557301.814 5936975.865 557282.799 5936970.132 557282.027 5936969.9 557281.355 5936969.697 557273.435 5936969.011 557265.387 5936967.74 557248.878 5936962.848 557248.791 5936962.546</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>false</xplan:flaechenschluss> + </xplan:BP_EingriffsBereich> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_GruenFlaeche gml:id="GML_382429ee-f25f-4d00-b826-8e804ddbdebc"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557310.6 5936911.596</gml:lowerCorner> + <gml:upperCorner>557339.808 5936981.911</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:text>Garten</xplan:text> + <xplan:ebene>0</xplan:ebene> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5e033921-530a-47b1-84e3-a508f45c2d51"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f145a635-83f9-4455-bf23-fadadbb78936"/> + <xplan:position> + <!--Inlined geometry 'GML_c237f7d4-6464-4f86-95b0-4f7149cf90be'--> + <gml:Polygon gml:id="GML_c237f7d4-6464-4f86-95b0-4f7149cf90be" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557314.46 5936919.234 557318.283 5936916.733 557322.093 5936914.178 557325.854 5936911.596 557326.21 5936913.258 557333.18 5936912.819 557334.723 5936925.766 557339.07 5936940.522 557339.808 5936948.038 557339.627 5936968.536 557338.756 5936972.394 557336.499 5936975.641 557331.253 5936980.259 557327.65 5936981.872 557327.161 5936981.911 557326.077 5936972.271 557329.996 5936969.071 557330.36 5936968.69 557330.62 5936968.23 557330.759 5936967.721 557330.77 5936967.193 557326.285 5936928.337 557311.567 5936930.039 557310.6 5936921.698 557314.46 5936919.234</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>true</xplan:flaechenschluss> + <xplan:nutzungsform>1000</xplan:nutzungsform> + </xplan:BP_GruenFlaeche> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_GruenFlaeche gml:id="GML_5824d0ca-ea90-441f-830c-c070f1a0aa05"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557248.588 5936942.061</gml:lowerCorner> + <gml:upperCorner>557282.027 5936969.9</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:text>Garten</xplan:text> + <xplan:ebene>0</xplan:ebene> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_a39fac97-534a-4266-9e20-b25c1008a015"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f145a635-83f9-4455-bf23-fadadbb78936"/> + <xplan:position> + <!--Inlined geometry 'GML_8de294a1-7355-4dc0-a5c6-c048f219c028'--> + <gml:Polygon gml:id="GML_8de294a1-7355-4dc0-a5c6-c048f219c028" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557281.355 5936969.697 557273.435 5936969.011 557265.387 5936967.74 557248.878 5936962.848 557248.791 5936962.546 557248.721 5936962.244 557248.628 5936961.678 557248.588 5936961.154 557248.596 5936960.519 557248.665 5936959.903 557248.816 5936959.205 557249.051 5936958.51 557250.405 5936954.713 557250.635 5936954.194 557250.89 5936953.7 557251.197 5936953.184 557251.493 5936952.746 557251.875 5936952.249 557252.304 5936951.762 557252.673 5936951.391 557253.172 5936950.948 557253.708 5936950.537 557254.369 5936950.105 557255.024 5936949.748 557256.016 5936949.325 557264.737 5936945.806 557273.326 5936942.061 557275.7 5936962.653 557281.151 5936962.053 557282.027 5936969.9 557281.355 5936969.697</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>true</xplan:flaechenschluss> + <xplan:nutzungsform>1000</xplan:nutzungsform> + </xplan:BP_GruenFlaeche> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_HoehenMass gml:id="GML_11a36ea8-653e-4b2a-9b24-ba5429c9faa6"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557279.643 5936957.718</gml:lowerCorner> + <gml:upperCorner>557279.643 5936957.718</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:text>Straßenhöhe bezogen auf NHN</xplan:text> + <xplan:hoehenangabe> + <xplan:XP_Hoehenangabe> + <xplan:hoehenbezug>1000</xplan:hoehenbezug> + <xplan:h uom="m">39.6</xplan:h> + </xplan:XP_Hoehenangabe> + </xplan:hoehenangabe> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_3cb49006-831e-41ba-a8f7-14c1758fcfa8'--> + <gml:Point gml:id="GML_3cb49006-831e-41ba-a8f7-14c1758fcfa8" srsName="EPSG:25832"> + <gml:pos>557279.643 5936957.718</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + </xplan:BP_HoehenMass> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_HoehenMass gml:id="GML_3fe2035b-5c40-4fbd-b937-bbca2b9b1d4e"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557302.401 5936982.865</gml:lowerCorner> + <gml:upperCorner>557302.401 5936982.865</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:text>Straßenhöhe bezogen auf NHN</xplan:text> + <xplan:hoehenangabe> + <xplan:XP_Hoehenangabe> + <xplan:hoehenbezug>3500</xplan:hoehenbezug> + <xplan:h uom="m">39.2</xplan:h> + </xplan:XP_Hoehenangabe> + </xplan:hoehenangabe> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_7ebf9710-5c2c-43a9-a9e0-403bf7f47759'--> + <gml:Point gml:id="GML_7ebf9710-5c2c-43a9-a9e0-403bf7f47759" srsName="EPSG:25832"> + <gml:pos>557302.401 5936982.865</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + </xplan:BP_HoehenMass> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_HoehenMass gml:id="GML_ce98283b-08ad-46e9-b702-c0496a87ea63"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557341.29 5936931.253</gml:lowerCorner> + <gml:upperCorner>557341.29 5936931.253</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:text>Straßenhöhe bezogen auf NHN</xplan:text> + <xplan:hoehenangabe> + <xplan:XP_Hoehenangabe> + <xplan:hoehenbezug>1000</xplan:hoehenbezug> + <xplan:h uom="m">39.1</xplan:h> + </xplan:XP_Hoehenangabe> + </xplan:hoehenangabe> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_70492997-57b9-46c5-a45f-2e42352bf4ba'--> + <gml:Point gml:id="GML_70492997-57b9-46c5-a45f-2e42352bf4ba" srsName="EPSG:25832"> + <gml:pos>557341.29 5936931.253</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + </xplan:BP_HoehenMass> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_HoehenMass gml:id="GML_f5c89321-8a1b-4562-8364-b2cccf41dc3c"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557273.66 5936937.873</gml:lowerCorner> + <gml:upperCorner>557273.66 5936937.873</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:text>Straßenhöhe bezogen auf NHN</xplan:text> + <xplan:hoehenangabe> + <xplan:XP_Hoehenangabe> + <xplan:hoehenbezug>1000</xplan:hoehenbezug> + <xplan:h uom="m">38.8</xplan:h> + </xplan:XP_Hoehenangabe> + </xplan:hoehenangabe> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_4c10da30-1e39-4bbc-8d6a-f7d1e9e9dbfd'--> + <gml:Point gml:id="GML_4c10da30-1e39-4bbc-8d6a-f7d1e9e9dbfd" srsName="EPSG:25832"> + <gml:pos>557273.66 5936937.873</gml:pos> + </gml:Point> + </xplan:position> + <xplan:nordwinkel uom="grad">0</xplan:nordwinkel> + </xplan:BP_HoehenMass> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_KennzeichnungsFlaeche gml:id="GML_d1b7b2a9-184e-46c1-b326-df611ecee4b2"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557248.588 5936911.596</gml:lowerCorner> + <gml:upperCorner>557339.808 5936982.349</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>5000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c6413128-a7f6-4420-86fa-5fceb7ce283b"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_62103eff-5b29-4ba8-bc3f-517b910f8e53"/> + <xplan:position> + <!--Inlined geometry 'GML_f55f17cd-22ec-4c06-a374-62e7c03d7f29'--> + <gml:Polygon gml:id="GML_f55f17cd-22ec-4c06-a374-62e7c03d7f29" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557248.791 5936962.546 557248.721 5936962.244 557248.628 5936961.678 557248.588 5936961.154 557248.596 5936960.519 557248.665 5936959.903 557248.816 5936959.205 557249.051 5936958.51 557250.405 5936954.713 557250.635 5936954.194 557250.89 5936953.7 557251.197 5936953.184 557251.493 5936952.746 557251.875 5936952.249 557252.304 5936951.762 557252.673 5936951.391 557253.172 5936950.948 557253.708 5936950.537 557254.369 5936950.105 557255.024 5936949.748 557256.016 5936949.325 557264.737 5936945.806 557273.326 5936942.061 557278.277 5936939.821 557281.666 5936938.219 557284.957 5936936.594 557291.454 5936933.297 557303.403 5936926.263 557310.6 5936921.698 557314.46 5936919.234 557318.283 5936916.733 557322.093 5936914.178 557325.854 5936911.596 557326.21 5936913.258 557333.18 5936912.819 557334.723 5936925.766 557339.07 5936940.522 557339.808 5936948.038 557339.627 5936968.536 557338.756 5936972.394 557336.499 5936975.641 557331.253 5936980.259 557327.65 5936981.872 557321.72 5936982.349 557315.876 5936981.17 557303.85 5936976.479 557301.814 5936975.865 557282.799 5936970.132 557282.027 5936969.9 557281.355 5936969.697 557273.435 5936969.011 557265.387 5936967.74 557248.878 5936962.848 557248.791 5936962.546</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>false</xplan:flaechenschluss> + <xplan:zweckbestimmung>8000</xplan:zweckbestimmung> + </xplan:BP_KennzeichnungsFlaeche> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_NebenanlagenFlaeche gml:id="GML_09d5413d-ccd7-40a1-8298-80bb22850dd3"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557281.151 5936959.004</gml:lowerCorner> + <gml:upperCorner>557309.674 5936975.865</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_ab6dc9c7-febf-4465-b4c6-fc60838ed212"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_6ffd7105-ba11-41bd-8ec5-c5c1bcc962c4"/> + <xplan:position> + <!--Inlined geometry 'GML_a75edf4d-8903-4141-b104-710b2e2c2c58'--> + <gml:Polygon gml:id="GML_a75edf4d-8903-4141-b104-710b2e2c2c58" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557282.799 5936970.132 557282.027 5936969.9 557281.151 5936962.053 557307.997 5936959.004 557309.674 5936974.034 557302.158 5936974.881 557301.814 5936975.865 557282.799 5936970.132</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>false</xplan:flaechenschluss> + <xplan:zweckbestimmung>1000</xplan:zweckbestimmung> + </xplan:BP_NebenanlagenFlaeche> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_NutzungsartenGrenze gml:id="GML_5751cd04-1a14-4c04-86e8-3d08e3cfc690"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557328.596 5936947.081</gml:lowerCorner> + <gml:upperCorner>557339.71 5936948.363</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_486dce28-e668-4fe6-8c8a-a9b817b1fa9d'--> + <gml:Curve gml:id="GML_486dce28-e668-4fe6-8c8a-a9b817b1fa9d" srsName="EPSG:25832"> + <gml:segments> + <gml:LineStringSegment interpolation="linear"> + <gml:posList>557328.596 5936948.363 557339.71 5936947.081</gml:posList> + </gml:LineStringSegment> + </gml:segments> + </gml:Curve> + </xplan:position> + <xplan:typ>9999</xplan:typ> + </xplan:BP_NutzungsartenGrenze> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_NutzungsartenGrenze gml:id="GML_e9a3d8e9-50dc-4b84-bf0a-101182add402"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557328.471 5936945.991</gml:lowerCorner> + <gml:upperCorner>557339.58 5936947.274</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_532e00f2-f9c0-4b32-81f6-5e4dda715cc2'--> + <gml:Curve gml:id="GML_532e00f2-f9c0-4b32-81f6-5e4dda715cc2" srsName="EPSG:25832"> + <gml:segments> + <gml:LineStringSegment interpolation="linear"> + <gml:posList>557328.471 5936947.274 557339.58 5936945.991</gml:posList> + </gml:LineStringSegment> + </gml:segments> + </gml:Curve> + </xplan:position> + <xplan:typ>9999</xplan:typ> + </xplan:BP_NutzungsartenGrenze> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_Plan gml:id="GML_fe4856a1-1a37-4eec-bae5-1685f1a2feb2"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557243.062 5936905.959</gml:lowerCorner> + <gml:upperCorner>557352.03 5937000.801</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:name>BPlan002_5-3</xplan:name> + <xplan:internalId>TESTID1</xplan:internalId> + <xplan:technHerstellDatum>2020-09-10</xplan:technHerstellDatum> + <xplan:erstellungsMassstab>1000</xplan:erstellungsMassstab> + <xplan:raeumlicherGeltungsbereich> + <!--Inlined geometry 'GML_306679b7-39fa-4cf4-9907-c61c6102d458'--> + <gml:MultiSurface gml:id="GML_306679b7-39fa-4cf4-9907-c61c6102d458" srsName="EPSG:25832"> + <gml:surfaceMember> + <gml:Polygon gml:id="GML_4908ccda-9296-4249-a752-c9fdb3698731" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557249.959 5936945.345 557268.735 5936937.278 557287.56 5936929.18 557291.839 5936926.58 557315.773 5936912.04 557322.859 5936907.734 557341.699 5936905.959 557342.14 5936914.554 557352.03 5937000.801 557345.86 5936998.938 557243.062 5936967.903 557249.959 5936945.345</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </gml:surfaceMember> + </gml:MultiSurface> + </xplan:raeumlicherGeltungsbereich> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c6413128-a7f6-4420-86fa-5fceb7ce283b"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_684fb51c-3d0f-4993-8ff0-dc3b62686b88"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5ba5da80-515e-44f5-95dc-8f4270638840"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_8270cc97-0729-4664-bea1-6e4d70064d09"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_15da3577-65bc-4d3e-b36d-69b3364d8027"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_8a5370e5-d396-4fb2-8b78-09bfcbb1ff4c"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_62103eff-5b29-4ba8-bc3f-517b910f8e53"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c2ed4d85-41ef-470d-a176-f3cdd45a7066"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_3c86cc25-e5d6-4672-b5f3-f433f0ade539"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_6ffd7105-ba11-41bd-8ec5-c5c1bcc962c4"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_102950a6-e58f-492e-a576-a383c2902330"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_60722a9c-5b21-4eb7-983f-ffe65830a990"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_7d7e15fb-c55d-47ce-9a16-dd72dfd39d6f"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_91d49462-d233-47df-9ac1-f4d37c68af8f"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_24d91abb-1f19-4a7d-8903-b1aea424e2c1"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5d50c47d-d8a4-40ad-93fb-b17bcc1b6849"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f145a635-83f9-4455-bf23-fadadbb78936"/> + <xplan:texte xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_a7e0ecd6-ba53-44a2-9103-9bf204c7119f"/> + <xplan:gemeinde> + <xplan:XP_Gemeinde> + <xplan:ags>02000000</xplan:ags> + <xplan:gemeindeName>Freie und Hansestadt Hamburg</xplan:gemeindeName> + <xplan:ortsteilName>221</xplan:ortsteilName> + </xplan:XP_Gemeinde> + </xplan:gemeinde> + <xplan:planArt>1000</xplan:planArt> + <xplan:verfahren>1000</xplan:verfahren> + <xplan:rechtsstand>50001</xplan:rechtsstand> + <xplan:aenderungenBisDatum>2020-09-10</xplan:aenderungenBisDatum> + <xplan:aufstellungsbeschlussDatum>2017-09-18</xplan:aufstellungsbeschlussDatum> + <xplan:veraenderungssperreBeschlussDatum>2017-09-18</xplan:veraenderungssperreBeschlussDatum> + <xplan:veraenderungssperreDatum>2017-09-19</xplan:veraenderungssperreDatum> + <xplan:veraenderungssperreEndDatum>2019-09-18</xplan:veraenderungssperreEndDatum> + <xplan:verlaengerungVeraenderungssperre>2000</xplan:verlaengerungVeraenderungssperre> + <xplan:auslegungsStartDatum>2019-03-07</xplan:auslegungsStartDatum> + <xplan:auslegungsEndDatum>2019-04-08</xplan:auslegungsEndDatum> + <xplan:satzungsbeschlussDatum>2019-04-25</xplan:satzungsbeschlussDatum> + <xplan:rechtsverordnungsDatum>2020-07-10</xplan:rechtsverordnungsDatum> + <xplan:inkrafttretensDatum>2020-08-01</xplan:inkrafttretensDatum> + <xplan:veraenderungssperre>true</xplan:veraenderungssperre> + <xplan:staedtebaulicherVertrag>false</xplan:staedtebaulicherVertrag> + <xplan:erschliessungsVertrag>false</xplan:erschliessungsVertrag> + <xplan:durchfuehrungsVertrag>false</xplan:durchfuehrungsVertrag> + <xplan:gruenordnungsplan>false</xplan:gruenordnungsplan> + <xplan:bereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + </xplan:BP_Plan> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_FlaecheOhneFestsetzung gml:id="GML_488c129a-c949-4c2b-8532-298829f8815f"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557243.062 5936905.959</gml:lowerCorner> + <gml:upperCorner>557352.03 5937000.801</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:ebene>0</xplan:ebene> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>5000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_26d807d2-4494-4127-a9f8-f7ebd8477fa3'--> + <gml:Polygon gml:id="GML_26d807d2-4494-4127-a9f8-f7ebd8477fa3" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557249.959 5936945.345 557268.735 5936937.278 557287.56 5936929.18 557291.839 5936926.58 557315.773 5936912.04 557322.859 5936907.734 557341.699 5936905.959 557342.14 5936914.554 557352.03 5937000.801 557345.86 5936998.938 557243.062 5936967.903 557249.959 5936945.345</gml:posList> + </gml:LinearRing> + </gml:exterior> + <gml:interior> + <gml:LinearRing> + <gml:posList>557248.878 5936962.848 557265.387 5936967.74 557273.435 5936969.011 557281.355 5936969.697 557282.027 5936969.9 557282.799 5936970.132 557301.814 5936975.865 557303.85 5936976.479 557315.876 5936981.17 557321.72 5936982.349 557327.65 5936981.872 557331.253 5936980.259 557336.499 5936975.641 557338.756 5936972.394 557339.627 5936968.536 557339.808 5936948.038 557339.07 5936940.522 557334.723 5936925.766 557333.18 5936912.819 557326.21 5936913.258 557325.854 5936911.596 557322.093 5936914.178 557318.283 5936916.733 557314.46 5936919.234 557310.6 5936921.698 557303.403 5936926.263 557291.454 5936933.297 557284.957 5936936.594 557281.666 5936938.219 557278.277 5936939.821 557273.326 5936942.061 557264.737 5936945.806 557256.016 5936949.325 557255.024 5936949.748 557254.369 5936950.105 557253.708 5936950.537 557253.172 5936950.948 557252.673 5936951.391 557252.304 5936951.762 557251.875 5936952.249 557251.493 5936952.746 557251.197 5936953.184 557250.89 5936953.7 557250.635 5936954.194 557250.405 5936954.713 557249.051 5936958.51 557248.816 5936959.205 557248.665 5936959.903 557248.596 5936960.519 557248.588 5936961.154 557248.628 5936961.678 557248.721 5936962.244 557248.791 5936962.546 557248.878 5936962.848</gml:posList> + </gml:LinearRing> + </gml:interior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>true</xplan:flaechenschluss> + </xplan:BP_FlaecheOhneFestsetzung> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_StrassenbegrenzungsLinie gml:id="GML_209d05c2-6a1c-4d7c-8139-9c7f71dfcc13"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557248.588 5936911.596</gml:lowerCorner> + <gml:upperCorner>557339.808 5936982.349</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:position> + <!--Inlined geometry 'GML_29318828-b4b9-4802-b6d4-51693eb3725b'--> + <gml:Curve gml:id="GML_29318828-b4b9-4802-b6d4-51693eb3725b" srsName="EPSG:25832"> + <gml:segments> + <gml:LineStringSegment interpolation="linear"> + <gml:posList>557248.791 5936962.546 557248.721 5936962.244 557248.628 5936961.678 557248.588 5936961.154 557248.596 5936960.519 557248.665 5936959.903 557248.816 5936959.205 557249.051 5936958.51 557250.405 5936954.713 557250.635 5936954.194 557250.89 5936953.7 557251.197 5936953.184 557251.493 5936952.746 557251.875 5936952.249 557252.304 5936951.762 557252.673 5936951.391 557253.172 5936950.948 557253.708 5936950.537 557254.369 5936950.105 557255.024 5936949.748 557256.016 5936949.325 557264.737 5936945.806 557273.326 5936942.061 557278.277 5936939.821 557281.666 5936938.219 557284.957 5936936.594 557291.454 5936933.297 557303.403 5936926.263 557310.6 5936921.698 557314.46 5936919.234 557318.283 5936916.733 557322.093 5936914.178 557325.854 5936911.596 557326.21 5936913.258 557333.18 5936912.819 557334.723 5936925.766 557339.07 5936940.522 557339.808 5936948.038 557339.627 5936968.536 557338.756 5936972.394 557336.499 5936975.641 557331.253 5936980.259 557327.65 5936981.872 557321.72 5936982.349 557315.876 5936981.17 557303.85 5936976.479 557301.814 5936975.865 557282.799 5936970.132 557282.027 5936969.9 557281.355 5936969.697 557273.435 5936969.011 557265.387 5936967.74 557248.878 5936962.848 557248.791 5936962.546</gml:posList> + </gml:LineStringSegment> + </gml:segments> + </gml:Curve> + </xplan:position> + </xplan:BP_StrassenbegrenzungsLinie> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_102950a6-e58f-492e-a576-a383c2902330"> + <xplan:schluessel>§2 Nr.16</xplan:schluessel> + <xplan:text>Im reinen Wohngebiet sind in die Außenfassaden der Wohngebäude mindestens drei Fledermausspaltkästen mit Quartierseignung und zwei Niststeine für Halbhöhlenbrüter an fachlich geeigneter Stelle baulich zu integrieren und dauerhaft zu erhalten. In dem zu erhaltenden Baumbestand sind mindestens drei Nischenbrüterhöhlen an fachlich geeigneter Stelle anzubringen und dauerhaft zu unterhalten.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_15da3577-65bc-4d3e-b36d-69b3364d8027"> + <xplan:schluessel>§2 Nr.2</xplan:schluessel> + <xplan:text>Im reinen Wohngebiet werden alle Ausnahmen nach § 3 Absatz 3 der Baunutzungsverordnung vom 21. November 2017 (BGBl. I S. 3787) ausgeschlossen.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_24d91abb-1f19-4a7d-8903-b1aea424e2c1"> + <xplan:schluessel>§2 Nr.14</xplan:schluessel> + <xplan:text>Für festgesetzte Anpflanzungen von Bäumen und Sträuchern sowie für Ersatzpflanzungen sind standortgerechte einheimische Laubgehölze zu verwenden und dauerhaft zu erhalten. Großkronige Bäume müssen einen Stammumfang von mindestens 18 cm, kleinkronige Bäume einen Stammumfang von mindestens 16 cm, jeweils in 1 m Höhe über dem Erdboden gemessen, aufweisen. Im Kronenbereich jedes Baumes ist eine offene Vegetationsfläche von mindestens 12 m² anzulegen und zu begrünen.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_3c86cc25-e5d6-4672-b5f3-f433f0ade539"> + <xplan:schluessel>§2 Nr.4</xplan:schluessel> + <xplan:text>Im Plangebiet ist durch geeignete bauliche Schallschutzmaßnahmen wie zum Beispiel Doppelfassaden, verglaste Vorbauten, Loggien, Wintergärten, besondere Fensterkon-struktionen oder in ihrer Wirkung vergleichbare Maßnahmen sicherzustellen, dass durch diese baulichen Maßnahmen insgesamt eine Schallpegeldifferenz erreicht wird, die es ermöglicht, dass in Schlafräumen ein Innenraumpegel bei teilgeöffneten Fenstern von 30 dB(A) während der Nachtzeit nicht überschritten wird. Erfolgt die bauliche Schall-schutzmaßnahme in Form von verglasten Vorbauten, muss dieser Innenraumpegel bei teilgeöffneten Bauteilen erreicht werden. Wohn-/Schlafräume in Einzimmerwohnungen und Kinderzimmer sind wie Schlafräume zu beurteilen.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_5ba5da80-515e-44f5-95dc-8f4270638840"> + <xplan:schluessel>§2 Nr.1</xplan:schluessel> + <xplan:text>Im Bereich des Vorhaben- und Erschließungsplans (Vorhabengebiet) sind im reinen Wohngebiet im Rahmen der festgesetzten Nutzungen nur solche Vorhaben zulässig, zu deren Durchführung sich die Vorhabenträgerin im Durchführungsvertrag verpflichtet.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_5d50c47d-d8a4-40ad-93fb-b17bcc1b6849"> + <xplan:schluessel>§2 Nr.6</xplan:schluessel> + <xplan:text>Geh- und Fahrwege sowie Terrassen- und Platzflächen sind in wasser- und luftdurchlässigem Aufbau herzustellen. Dabei sind nur Baustoffe zu verwenden, die keine auswaschbaren, wassergefährdenden Stoffe enthalten. Feuerwehrumfahrten und Feuerwehraufstellflächen sind in vegetationsfähigem Aufbau herzustellen.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_60722a9c-5b21-4eb7-983f-ffe65830a990"> + <xplan:schluessel>§2 Nr.8</xplan:schluessel> + <xplan:text>Im reinen Wohngebiet sind Stellplätze nur innerhalb der dafür vorgesehenen Fläche zulässig.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_62103eff-5b29-4ba8-bc3f-517b910f8e53"> + <xplan:schluessel>§2 Nr.17</xplan:schluessel> + <xplan:text>Im Vorhabengebiet sind zur Außenbeleuchtung nur Beleuchtungsanlagen zulässig, die ein für Insekten wirkungsarmes Lichtspektrum aufweisen. Die Lichtquellen sind zur Umgebung und zum Baumbestand hin abzuschirmen.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_684fb51c-3d0f-4993-8ff0-dc3b62686b88"> + <xplan:schluessel>§2 Nr.3</xplan:schluessel> + <xplan:text>Im reinen Wohngebiet können Überschreitungen der Baugrenzen durch Vorbauten, Erker und Balkone um bis zu 1 m und durch Terrassen um bis zu 2,7 m zugelassen werden, wenn zum Erhalt oder zur Anpflanzung festgesetzte Einzelbäume nicht beeinträchtigt werden.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_6ffd7105-ba11-41bd-8ec5-c5c1bcc962c4"> + <xplan:schluessel>§2 Nr.15</xplan:schluessel> + <xplan:text>Im reinen Wohngebiet ist je vier Stellplätze ein großkroniger Baum anzupflanzen. Stellplatzanlagen sind mit Hecken oder frei wachsenden Sträuchern einzufassen.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_7d7e15fb-c55d-47ce-9a16-dd72dfd39d6f"> + <xplan:schluessel>§2 Nr.18</xplan:schluessel> + <xplan:text>Für Ausgleichsmaßnahmen des zu erwartenden Eingriffs in Natur und Landschaft wird der mit „Z“ bezeichneten Fläche die außerhalb des Bebauungsplangebietes in Wedel liegende Fläche des Flurstücks 7/31 der Gemarkung Wedel zugeordnet.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_8270cc97-0729-4664-bea1-6e4d70064d09"> + <xplan:schluessel>§2 Nr.12</xplan:schluessel> + <xplan:text>Für die zu erhaltenden Bäume sind bei Abgang Ersatzpflanzungen mit großkronigen Bäumen vorzunehmen.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_8a5370e5-d396-4fb2-8b78-09bfcbb1ff4c"> + <xplan:schluessel>§2 Nr.10</xplan:schluessel> + <xplan:text>Als an die öffentlichen Wege angrenzende Einfriedungen sind nur Hecken oder durchbrochene Zäune in Verbindung mit außenseitig zugeordneten Hecken zulässig. Notwendige Unterbrechungen für Zufahrten und Eingänge sind zulässig.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_91d49462-d233-47df-9ac1-f4d37c68af8f"> + <xplan:schluessel>§2 Nr.5</xplan:schluessel> + <xplan:text>Entlang der mit „(A)“ gekennzeichneten Fassaden ist für den Außenbereich einer Wohnung entweder durch dessen Orientierung zur lärmabgewandten Gebäudeseite oder durch bauliche Schallschutzmaßnahmen, wie zum Beispiel verglaste Vorbauten, Loggien oder Wintergärten mit teilgeöffneten Bauteilen, sicherzustellen, dass durch diese baulichen Maßnahmen insgesamt eine Schallpegelminderung erreicht wird, die es ermöglicht, dass in dem der Wohnung zugehörigen Außenbereich ein Tagpegel von kleiner 65 dB(A) erreicht wird.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_a7e0ecd6-ba53-44a2-9103-9bf204c7119f"> + <xplan:schluessel>§2 Nr.13</xplan:schluessel> + <xplan:text>Im Wurzelbereich der zu erhaltenden Bäume sind Nebenanlagen, Garagen und Stellplätze unzulässig.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_c2ed4d85-41ef-470d-a176-f3cdd45a7066"> + <xplan:schluessel>§2 Nr.11</xplan:schluessel> + <xplan:text>Außerhalb von öffentlichen Straßenverkehrsflächen sind Geländeaufhöhungen und Abgrabungen im Kronenbereich zu erhaltender Bäume unzulässig.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_c6413128-a7f6-4420-86fa-5fceb7ce283b"> + <xplan:schluessel>§2 Nr.7</xplan:schluessel> + <xplan:text>Das auf den privaten Grundstücksflächen anfallende Niederschlagswasser ist örtlich zu versickern, sofern es nicht gesammelt und genutzt wird.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextAbschnitt gml:id="GML_f145a635-83f9-4455-bf23-fadadbb78936"> + <xplan:schluessel>§2 Nr.9</xplan:schluessel> + <xplan:text>Innerhalb der östlichen privaten Grünfläche mit der Zweckbestimmung „Garten“ ist die Anlage einer 1 m breiten Zuwegung in wasser- und luftdurchlässiger Bauweise zulässig.</xplan:text> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + </xplan:BP_TextAbschnitt> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_TextlicheFestsetzungsFlaeche gml:id="GML_377d43a1-8c65-4039-bd90-889d75a76b87"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557314.892 5936930.957</gml:lowerCorner> + <gml:upperCorner>557329.391 5936970.109</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gliederung2>(A)</xplan:gliederung2> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_b87933a3-7241-47d2-b1f3-ccceb7edeee5"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_91d49462-d233-47df-9ac1-f4d37c68af8f"/> + <xplan:position> + <!--Inlined geometry 'GML_e686d491-008b-4f68-a97a-82ddb5b41017'--> + <gml:Polygon gml:id="GML_e686d491-008b-4f68-a97a-82ddb5b41017" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557329.391 5936968.426 557315.101 5936970.109 557314.892 5936967.95 557327.575 5936966.477 557323.539 5936931.207 557325.444 5936930.957 557329.391 5936968.426</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>false</xplan:flaechenschluss> + </xplan:BP_TextlicheFestsetzungsFlaeche> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_UeberbaubareGrundstuecksFlaeche gml:id="GML_7ef4531b-e85e-40e4-8c09-0e19a3ec5177"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557310.823 5936931.207</gml:lowerCorner> + <gml:upperCorner>557327.575 5936967.95</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:ebene>0</xplan:ebene> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_2dea9178-9249-4fd3-b4ba-ba48bfc27ecd"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_794de089-2788-4cb4-ab79-3ba5f7639710"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_684fb51c-3d0f-4993-8ff0-dc3b62686b88"/> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_91d49462-d233-47df-9ac1-f4d37c68af8f"/> + <xplan:position> + <!--Inlined geometry 'GML_9096f46b-8c9d-468d-82da-245800ea9048'--> + <gml:Polygon gml:id="GML_9096f46b-8c9d-468d-82da-245800ea9048" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557310.823 5936932.677 557323.539 5936931.207 557327.575 5936966.477 557314.892 5936967.95 557310.823 5936932.677</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>false</xplan:flaechenschluss> + <xplan:dachgestaltung> + <xplan:BP_Dachgestaltung> + <xplan:DNmin uom="grad">30</xplan:DNmin> + <xplan:DNmax uom="grad">40</xplan:DNmax> + </xplan:BP_Dachgestaltung> + </xplan:dachgestaltung> + <xplan:DNmin uom="grad">30</xplan:DNmin> + <xplan:DNmax uom="grad">40</xplan:DNmax> + <xplan:dachform>3100</xplan:dachform> + </xplan:BP_UeberbaubareGrundstuecksFlaeche> + </gml:featureMember> + <gml:featureMember> + <xplan:BP_ZentralerVersorgungsbereich gml:id="GML_f553de4c-97e6-4f45-a5c2-a89886d18301"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557284.229 5936937.668</gml:lowerCorner> + <gml:upperCorner>557299.272 5936959.488</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:ebene>0</xplan:ebene> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_7087c593-4639-4fef-8b91-773ed64df8cf"/> + <xplan:wirdDargestelltDurch xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c47097ae-79f6-4001-841b-da9b80979252"/> + <xplan:rechtscharakter>1000</xplan:rechtscharakter> + <xplan:refTextInhalt xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_684fb51c-3d0f-4993-8ff0-dc3b62686b88"/> + <xplan:position> + <!--Inlined geometry 'GML_4558cd4f-f4c9-4aaf-a7ee-5a4d17a194d8'--> + <gml:Polygon gml:id="GML_4558cd4f-f4c9-4aaf-a7ee-5a4d17a194d8" srsName="EPSG:25832"> + <gml:exterior> + <gml:LinearRing> + <gml:posList>557284.229 5936939.12 557296.947 5936937.668 557299.272 5936958.036 557286.554 5936959.488 557284.229 5936939.12</gml:posList> + </gml:LinearRing> + </gml:exterior> + </gml:Polygon> + </xplan:position> + <xplan:flaechenschluss>false</xplan:flaechenschluss> + </xplan:BP_ZentralerVersorgungsbereich> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_LPO gml:id="GML_042e6f7a-e1c3-4569-b5a5-de1b996e5ba7"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557325.444 5936930.957</gml:lowerCorner> + <gml:upperCorner>557327.235 5936948.315</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:position> + <!--Inlined geometry 'GML_ab02ea3f-46b8-446c-96ce-6f238fb4bf45'--> + <gml:Curve gml:id="GML_ab02ea3f-46b8-446c-96ce-6f238fb4bf45" srsName="EPSG:25832"> + <gml:segments> + <gml:LineStringSegment interpolation="linear"> + <gml:posList>557327.235 5936948.315 557325.444 5936930.957</gml:posList> + </gml:LineStringSegment> + </gml:segments> + </gml:Curve> + </xplan:position> + </xplan:XP_LPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_LPO gml:id="GML_730b4676-8840-4cbd-a2e0-7e351cc61965"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557315.101 5936954.898</gml:lowerCorner> + <gml:upperCorner>557329.325 5936970.109</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:position> + <!--Inlined geometry 'GML_c58dbb0e-d49c-4b7d-87f7-65f9ca8e159e'--> + <gml:Curve gml:id="GML_c58dbb0e-d49c-4b7d-87f7-65f9ca8e159e" srsName="EPSG:25832"> + <gml:segments> + <gml:LineStringSegment interpolation="linear"> + <gml:posList>557327.869 5936954.898 557329.325 5936968.52 557315.101 5936970.109</gml:posList> + </gml:LineStringSegment> + </gml:segments> + </gml:Curve> + </xplan:position> + </xplan:XP_LPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_09ae3866-c6fc-427c-baf1-2c88200f54b6"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557304.757 5936953.719</gml:lowerCorner> + <gml:upperCorner>557304.757 5936953.719</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>besondereArtDerBaulNutzung</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c3e0bb6a-9e1d-4461-8995-fe1eebf5bfcd"/> + <xplan:position> + <!--Inlined geometry 'GML_c85738e0-f404-46f4-b786-20f8ee499074'--> + <gml:Point gml:id="GML_c85738e0-f404-46f4-b786-20f8ee499074" srsName="EPSG:25832"> + <gml:pos>557304.757 5936953.719</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_0c35b24f-6cf5-4e98-9460-a7b2f4e37766"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557302.026 5936942.476</gml:lowerCorner> + <gml:upperCorner>557302.026 5936942.476</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>GFZ</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c3e0bb6a-9e1d-4461-8995-fe1eebf5bfcd"/> + <xplan:position> + <!--Inlined geometry 'GML_a89cf332-aaae-48bd-a4df-5b4983491d62'--> + <gml:Point gml:id="GML_a89cf332-aaae-48bd-a4df-5b4983491d62" srsName="EPSG:25832"> + <gml:pos>557302.026 5936942.476</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>0.787402</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_2dea9178-9249-4fd3-b4ba-ba48bfc27ecd"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557317.639 5936959.231</gml:lowerCorner> + <gml:upperCorner>557317.639 5936959.231</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>dachform</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_7ef4531b-e85e-40e4-8c09-0e19a3ec5177"/> + <xplan:position> + <!--Inlined geometry 'GML_b7be627e-67bb-4015-8398-b73bcdf8b0d9'--> + <gml:Point gml:id="GML_b7be627e-67bb-4015-8398-b73bcdf8b0d9" srsName="EPSG:25832"> + <gml:pos>557317.639 5936959.231</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_5e033921-530a-47b1-84e3-a508f45c2d51"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557335.524 5936929.288</gml:lowerCorner> + <gml:upperCorner>557335.524 5936929.288</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>nutzungsform</xplan:art> + <xplan:art>text</xplan:art> + <xplan:index>0</xplan:index> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_382429ee-f25f-4d00-b826-8e804ddbdebc"/> + <xplan:position> + <!--Inlined geometry 'GML_93b52be8-d6cb-4f14-8830-c286e9683e96'--> + <gml:Point gml:id="GML_93b52be8-d6cb-4f14-8830-c286e9683e96" srsName="EPSG:25832"> + <gml:pos>557335.524 5936929.288</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">84</xplan:drehwinkel> + <xplan:skalierung>0.5</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_7087c593-4639-4fef-8b91-773ed64df8cf"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557289.469 5936953.621</gml:lowerCorner> + <gml:upperCorner>557289.469 5936953.621</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>dachform</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f553de4c-97e6-4f45-a5c2-a89886d18301"/> + <xplan:position> + <!--Inlined geometry 'GML_63d19af6-38d6-4b9c-beb7-176495f2afc1'--> + <gml:Point gml:id="GML_63d19af6-38d6-4b9c-beb7-176495f2afc1" srsName="EPSG:25832"> + <gml:pos>557289.469 5936953.621</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_794de089-2788-4cb4-ab79-3ba5f7639710"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557314.121 5936936.501</gml:lowerCorner> + <gml:upperCorner>557314.121 5936936.501</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>DNmax</xplan:art> + <xplan:art>DNmin</xplan:art> + <xplan:index>0</xplan:index> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_7ef4531b-e85e-40e4-8c09-0e19a3ec5177"/> + <xplan:position> + <!--Inlined geometry 'GML_b27df56e-52bf-496c-9e20-fb9945775513'--> + <gml:Point gml:id="GML_b27df56e-52bf-496c-9e20-fb9945775513" srsName="EPSG:25832"> + <gml:pos>557314.121 5936936.501</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_8b8ff5aa-cafb-4740-a12a-adc5ee16856b"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557304.528 5936946.56</gml:lowerCorner> + <gml:upperCorner>557304.528 5936946.56</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>Z</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c3e0bb6a-9e1d-4461-8995-fe1eebf5bfcd"/> + <xplan:position> + <!--Inlined geometry 'GML_e9ae89a6-f418-4f08-b93a-ad486f36fef9'--> + <gml:Point gml:id="GML_e9ae89a6-f418-4f08-b93a-ad486f36fef9" srsName="EPSG:25832"> + <gml:pos>557304.528 5936946.56</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>0.7</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_9fa3a84d-a7ed-4e6d-b75e-8611dbbe3097"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557278.714 5936951.35</gml:lowerCorner> + <gml:upperCorner>557278.714 5936951.35</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>gliederung2</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_435c123d-74af-4da3-9b08-2230d60f4afc"/> + <xplan:position> + <!--Inlined geometry 'GML_79e57a00-7692-48ba-934b-0bf8ab089cbb'--> + <gml:Point gml:id="GML_79e57a00-7692-48ba-934b-0bf8ab089cbb" srsName="EPSG:25832"> + <gml:pos>557278.714 5936951.35</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_a39fac97-534a-4266-9e20-b25c1008a015"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557268.287 5936956.688</gml:lowerCorner> + <gml:upperCorner>557268.287 5936956.688</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>nutzungsform</xplan:art> + <xplan:art>text</xplan:art> + <xplan:index>0</xplan:index> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_5824d0ca-ea90-441f-830c-c070f1a0aa05"/> + <xplan:position> + <!--Inlined geometry 'GML_bdbc69d0-1397-4b26-9606-91288b9c1668'--> + <gml:Point gml:id="GML_bdbc69d0-1397-4b26-9606-91288b9c1668" srsName="EPSG:25832"> + <gml:pos>557268.287 5936956.688</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">18</xplan:drehwinkel> + <xplan:skalierung>0.5</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_ab6dc9c7-febf-4465-b4c6-fc60838ed212"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557302.835 5936966.026</gml:lowerCorner> + <gml:upperCorner>557302.835 5936966.026</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>zweckbestimmung</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_09d5413d-ccd7-40a1-8298-80bb22850dd3"/> + <xplan:position> + <!--Inlined geometry 'GML_d5a3bf6b-4105-4bcd-91cf-be31c86f3dc6'--> + <gml:Point gml:id="GML_d5a3bf6b-4105-4bcd-91cf-be31c86f3dc6" srsName="EPSG:25832"> + <gml:pos>557302.835 5936966.026</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_b87933a3-7241-47d2-b1f3-ccceb7edeee5"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557308.648 5936953.111</gml:lowerCorner> + <gml:upperCorner>557308.648 5936953.111</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>gliederung2</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_377d43a1-8c65-4039-bd90-889d75a76b87"/> + <xplan:position> + <!--Inlined geometry 'GML_443b40ab-c168-42c3-88b6-ed2eeabae2e5'--> + <gml:Point gml:id="GML_443b40ab-c168-42c3-88b6-ed2eeabae2e5" srsName="EPSG:25832"> + <gml:pos>557308.648 5936953.111</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">263.32</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_c47097ae-79f6-4001-841b-da9b80979252"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557288.157 5936947.063</gml:lowerCorner> + <gml:upperCorner>557288.157 5936947.063</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>DNmax</xplan:art> + <xplan:art>DNmin</xplan:art> + <xplan:index>0</xplan:index> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_f553de4c-97e6-4f45-a5c2-a89886d18301"/> + <xplan:position> + <!--Inlined geometry 'GML_11bbe558-0ee5-4908-8d43-35074891470d'--> + <gml:Point gml:id="GML_11bbe558-0ee5-4908-8d43-35074891470d" srsName="EPSG:25832"> + <gml:pos>557288.157 5936947.063</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_PPO gml:id="GML_ed1db422-4904-4271-a048-1832df70c070"> + <gml:boundedBy> + <gml:Envelope srsName="EPSG:25832"> + <gml:lowerCorner>557301.588 5936937.333</gml:lowerCorner> + <gml:upperCorner>557301.588 5936937.333</gml:upperCorner> + </gml:Envelope> + </gml:boundedBy> + <xplan:art>hoehenangabe</xplan:art> + <xplan:index>0</xplan:index> + <xplan:gehoertZuBereich xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_717e6e84-7220-440d-8dee-9eaa9d1b23c8"/> + <xplan:dientZurDarstellungVon xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#GML_c3e0bb6a-9e1d-4461-8995-fe1eebf5bfcd"/> + <xplan:position> + <!--Inlined geometry 'GML_fec6ac20-6586-42c0-8532-4a4f87023554'--> + <gml:Point gml:id="GML_fec6ac20-6586-42c0-8532-4a4f87023554" srsName="EPSG:25832"> + <gml:pos>557301.588 5936937.333</gml:pos> + </gml:Point> + </xplan:position> + <xplan:drehwinkel uom="grad">0</xplan:drehwinkel> + <xplan:skalierung>1</xplan:skalierung> + </xplan:XP_PPO> + </gml:featureMember> + <gml:featureMember> + <xplan:XP_Rasterdarstellung gml:id="GML_c563dcea-63fe-40a0-95c6-36e7db11c444"> + <xplan:refScan> + <xplan:XP_ExterneReferenz> + <xplan:georefURL>BPlan002_5-3.pgw</xplan:georefURL> + <xplan:referenzURL>BPlan002_5-3.png</xplan:referenzURL> + </xplan:XP_ExterneReferenz> + </xplan:refScan> + </xplan:XP_Rasterdarstellung> + </gml:featureMember> +</xplan:XPlanAuszug> \ No newline at end of file diff --git a/xplan-core/xplan-core-gwt/pom.xml b/xplan-core/xplan-core-gwt/pom.xml index 7d25525b3..391b23d44 100644 --- a/xplan-core/xplan-core-gwt/pom.xml +++ b/xplan-core/xplan-core-gwt/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-core/xplan-core-inspireplu/pom.xml b/xplan-core/xplan-core-inspireplu/pom.xml index ffd8807a2..2de1b282c 100644 --- a/xplan-core/xplan-core-inspireplu/pom.xml +++ b/xplan-core/xplan-core-inspireplu/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-job/pom.xml b/xplan-core/xplan-core-job/pom.xml index d04104130..8a203b499 100644 --- a/xplan-core/xplan-core-job/pom.xml +++ b/xplan-core/xplan-core-job/pom.xml @@ -4,7 +4,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <artifactId>xplan-core-job</artifactId> diff --git a/xplan-core/xplan-core-manager-db/pom.xml b/xplan-core/xplan-core-manager-db/pom.xml index f75051e21..d226c1525 100644 --- a/xplan-core/xplan-core-manager-db/pom.xml +++ b/xplan-core/xplan-core-manager-db/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-manager-deegree/pom.xml b/xplan-core/xplan-core-manager-deegree/pom.xml index f847bb341..ee1c56fb6 100644 --- a/xplan-core/xplan-core-manager-deegree/pom.xml +++ b/xplan-core/xplan-core-manager-deegree/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-core/xplan-core-manager/pom.xml b/xplan-core/xplan-core-manager/pom.xml index 575d7e40d..7476e5134 100644 --- a/xplan-core/xplan-core-manager/pom.xml +++ b/xplan-core/xplan-core-manager/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> @@ -175,7 +175,7 @@ <dependency> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core-manager-deegree</artifactId> - <version>8.0</version> + <version>8.0.1</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/database/XPlanDbAdapter.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/database/XPlanDbAdapter.java index ea56708e7..5c557ade5 100644 --- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/database/XPlanDbAdapter.java +++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/database/XPlanDbAdapter.java @@ -120,6 +120,8 @@ public class XPlanDbAdapter { public int insert(XPlanArchive archive, XPlanFeatureCollection fc, PlanStatus planStatus, Date sortDate, String internalId) throws Exception { LOG.info("Insert XPlan in XPlanDB"); + if (internalId == null || internalId.isEmpty()) + internalId = FeatureCollectionUtils.retrieveInternalId(fc.getFeatures(), fc.getType()); Plan plan = createPlan(archive, fc, planStatus, sortDate, internalId); Plan savedPlan = planRepository.save(plan); return savedPlan.getId(); @@ -481,9 +483,9 @@ public class XPlanDbAdapter { return null; } - private ArtefactType detectNonXPlanGmlArtefactType(EditedArtefact editedArtefact) { + private ArtefactType detectNonXPlanGmlArtefactType(EditedArtefact editedArtefact, boolean isGeoRef) { de.latlon.xplan.manager.edit.ArtefactType artefactType = editedArtefact.getArtefactType(); - if (artefactType == RASTER) + if (artefactType == RASTER && !isGeoRef) return RASTERBASIS; return null; } @@ -627,20 +629,20 @@ public class XPlanDbAdapter { String fileName = editedArtefact.getFileName(); String georefFileName = editedArtefact.getGeorefFileName(); if (fileName != null) - num = addEditedFile(uploadedArtefacts, plan, editedArtefact, fileName, num); + num = addEditedFile(uploadedArtefacts, plan, editedArtefact, fileName, num, false); if (georefFileName != null) - num = addEditedFile(uploadedArtefacts, plan, editedArtefact, georefFileName, num); + num = addEditedFile(uploadedArtefacts, plan, editedArtefact, georefFileName, num, true); } } private int addEditedFile(List<File> uploadedArtefacts, Plan plan, EditedArtefact editedArtefact, String fileName, - int num) throws IOException { + int num, boolean isGeoRef) throws IOException { File file = retrieveUploadedArtefact(fileName, uploadedArtefacts); long size = Files.size(file.toPath()); try (FileInputStream fileInputStream = new FileInputStream(file)) { byte[] data = createZipArtefact(fileInputStream); String mimetype = getArtefactMimeType(fileName); - ArtefactType artefactType = detectNonXPlanGmlArtefactType(editedArtefact); + ArtefactType artefactType = detectNonXPlanGmlArtefactType(editedArtefact, isGeoRef); ArtefactId id = new ArtefactId().plan(plan).filename(fileName); Artefact artefact = new Artefact().id(id) diff --git a/xplan-core/xplan-core-raster/pom.xml b/xplan-core/xplan-core-raster/pom.xml index 8703e5be7..29d938f05 100644 --- a/xplan-core/xplan-core-raster/pom.xml +++ b/xplan-core/xplan-core-raster/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-schemas/pom.xml b/xplan-core/xplan-core-schemas/pom.xml index c3ce62a49..55244cdc3 100644 --- a/xplan-core/xplan-core-schemas/pom.xml +++ b/xplan-core/xplan-core-schemas/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-core/xplan-core-security/pom.xml b/xplan-core/xplan-core-security/pom.xml index 02217bd80..c68e52f18 100644 --- a/xplan-core/xplan-core-security/pom.xml +++ b/xplan-core/xplan-core-security/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-synthesizer/pom.xml b/xplan-core/xplan-core-synthesizer/pom.xml index a9bb02654..225533a4e 100644 --- a/xplan-core/xplan-core-synthesizer/pom.xml +++ b/xplan-core/xplan-core-synthesizer/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-tests/pom.xml b/xplan-core/xplan-core-tests/pom.xml index 48b5fb6b4..d489895ee 100644 --- a/xplan-core/xplan-core-tests/pom.xml +++ b/xplan-core/xplan-core-tests/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-validator-events/pom.xml b/xplan-core/xplan-core-validator-events/pom.xml index 1064b4390..42052bc62 100644 --- a/xplan-core/xplan-core-validator-events/pom.xml +++ b/xplan-core/xplan-core-validator-events/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-core/xplan-core-validator/pom.xml b/xplan-core/xplan-core-validator/pom.xml index c6df0feec..78e244f79 100644 --- a/xplan-core/xplan-core-validator/pom.xml +++ b/xplan-core/xplan-core-validator/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-core</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-database/pom.xml b/xplan-database/pom.xml index 34f4786c6..d5e347e42 100644 --- a/xplan-database/pom.xml +++ b/xplan-database/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <profiles> diff --git a/xplan-database/xplan-database-docker/pom.xml b/xplan-database/xplan-database-docker/pom.xml index b356b52a4..d55516267 100644 --- a/xplan-database/xplan-database-docker/pom.xml +++ b/xplan-database/xplan-database-docker/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-database</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-database/xplan-database-scripts/pom.xml b/xplan-database/xplan-database-scripts/pom.xml index ad2e0f5ef..c2e2ac25d 100644 --- a/xplan-database/xplan-database-scripts/pom.xml +++ b/xplan-database/xplan-database-scripts/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-database</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-database/xplan-database-scripts/src/main/java/de/latlon/xplanbox/database/scripts/custom/v80/UpdateInternalIdCustomChange.java b/xplan-database/xplan-database-scripts/src/main/java/de/latlon/xplanbox/database/scripts/custom/v80/UpdateInternalIdCustomChange.java new file mode 100644 index 000000000..a8bd2d7e5 --- /dev/null +++ b/xplan-database/xplan-database-scripts/src/main/java/de/latlon/xplanbox/database/scripts/custom/v80/UpdateInternalIdCustomChange.java @@ -0,0 +1,116 @@ +/*- + * #%L + * xplan-database-scripts - Liquibase Changelogs zum Aufsetzen/Aktualisieren der Datenhaltung. + * %% + * Copyright (C) 2008 - 2025 Freie und Hansestadt Hamburg, developed by lat/lon gesellschaft für raumbezogene Informationssysteme mbH + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package de.latlon.xplanbox.database.scripts.custom.v80; + +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import liquibase.Scope; +import liquibase.change.custom.CustomTaskChange; +import liquibase.database.Database; +import liquibase.database.jvm.JdbcConnection; +import liquibase.exception.CustomChangeException; +import liquibase.exception.DatabaseException; +import liquibase.exception.SetupException; +import liquibase.exception.ValidationErrors; +import liquibase.resource.ResourceAccessor; + +/** + * Insert internalId into xplanmgr.plans. + * + * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a> + * @since 8.0.1 + */ +public class UpdateInternalIdCustomChange implements CustomTaskChange { + + @Override + public void execute(Database database) throws CustomChangeException { + JdbcConnection dbConn = (JdbcConnection) database.getConnection(); + try { + Scope.getCurrentScope().getLog(getClass()).info("Insert in xplanmgr.plans."); + String updateSql = "UPDATE xplanmgr.plans as p set internalId = s.xplan_internalid FROM (SELECT xplan_mgr_planid, xplan_internalid FROM " + // bp + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansyn.xplan_bp_plan) bpfix " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynpre.xplan_bp_plan) bppre " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynarchive.xplan_bp_plan) bparchive " + + " NATURAL FULL JOIN " + // fp + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansyn.xplan_fp_plan) fpfix " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynpre.xplan_fp_plan) fppre " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynarchive.xplan_fp_plan) fparchive " + + " NATURAL FULL JOIN " + // lp + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansyn.xplan_lp_plan) lpfix " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynpre.xplan_lp_plan) lppre " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynarchive.xplan_lp_plan) lparchive " + + " NATURAL FULL JOIN " + // rp + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansyn.xplan_rp_plan) rpfix " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynpre.xplan_rp_plan) rppre " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynarchive.xplan_rp_plan) rparchive " + + " NATURAL FULL JOIN " + // so + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansyn.xplan_so_plan) sofix " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynpre.xplan_so_plan) sopre " + + " NATURAL FULL JOIN " + + " (SELECT xplan_mgr_planid, xplan_internalid FROM xplansynarchive.xplan_so_plan) soarchive " + + " ) as s WHERE p.internalId is null and p.id = s.xplan_mgr_planid;"; + PreparedStatement psUpdate = dbConn.prepareStatement(updateSql); + int noOfUpdated = psUpdate.executeUpdate(); + Scope.getCurrentScope() + .getLog(getClass()) + .info("Updated " + noOfUpdated + " internalIds in xplanmgr.plans."); + } + catch (SQLException | DatabaseException e) { + throw new CustomChangeException(e); + } + } + + @Override + public String getConfirmationMessage() { + return "Updated xplanmgr.plans.internalID"; + } + + @Override + public void setUp() throws SetupException { + + } + + @Override + public void setFileOpener(ResourceAccessor resourceAccessor) { + + } + + @Override + public ValidationErrors validate(Database database) { + return new ValidationErrors(); + } + +} diff --git a/xplan-database/xplan-database-scripts/src/main/resources/8.0/changelog_xplanmgr.yaml b/xplan-database/xplan-database-scripts/src/main/resources/8.0/changelog_xplanmgr.yaml index 51746eedf..1f06bb22e 100644 --- a/xplan-database/xplan-database-scripts/src/main/resources/8.0/changelog_xplanmgr.yaml +++ b/xplan-database/xplan-database-scripts/src/main/resources/8.0/changelog_xplanmgr.yaml @@ -126,3 +126,9 @@ databaseChangeLog: changes: - customChange: { "class": "de.latlon.xplanbox.database.scripts.custom.v80.UpdateGeltungsbereichCustomChange" } + - changeSet: + id: xplanmgr80-007 + author: latlon + changes: + - customChange: { + "class": "de.latlon.xplanbox.database.scripts.custom.v80.UpdateInternalIdCustomChange" } diff --git a/xplan-distribution/pom.xml b/xplan-distribution/pom.xml index 8db352c3a..d41ac4ea7 100644 --- a/xplan-distribution/pom.xml +++ b/xplan-distribution/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-docker/pom.xml b/xplan-docker/pom.xml index e08fae7ef..9aed41aae 100644 --- a/xplan-docker/pom.xml +++ b/xplan-docker/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-docker/xplan-docker-tomcat/pom.xml b/xplan-docker/xplan-docker-tomcat/pom.xml index 862ffa2a9..e3b64fffb 100644 --- a/xplan-docker/xplan-docker-tomcat/pom.xml +++ b/xplan-docker/xplan-docker-tomcat/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-docker</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-docker/xplan-docker-volume-init/pom.xml b/xplan-docker/xplan-docker-volume-init/pom.xml index 09ec841a2..cacbdb4e0 100644 --- a/xplan-docker/xplan-docker-volume-init/pom.xml +++ b/xplan-docker/xplan-docker-volume-init/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-docker</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-documentation/pom.xml b/xplan-documentation/pom.xml index 632e0aad0..b8919fc8e 100644 --- a/xplan-documentation/pom.xml +++ b/xplan-documentation/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-documentation/xplan-benutzerhandbuch/pom.xml b/xplan-documentation/xplan-benutzerhandbuch/pom.xml index d808df79e..89361d954 100644 --- a/xplan-documentation/xplan-benutzerhandbuch/pom.xml +++ b/xplan-documentation/xplan-benutzerhandbuch/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-documentation</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_API.adoc b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_API.adoc index bfeccaa5c..8b30a29f2 100644 --- a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_API.adoc +++ b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_API.adoc @@ -4,7 +4,7 @@ Die REST-API des XPlanManager ermöglicht es, die Funktionen des XPlanManager über eine Web-API aufzurufen. Bei der Festlegung der Ressourcen wurden Begriffe aus drei Domänen verwendet. Die REST-API Ressourcen wie z.B. `/plan` oder `/info` sind in Englisch und der Einstiegspunkt für eine Entität. Ressourcen unterhalb einer Entität wie z.B. `/plan/{planId}/aenderung` oder `/plan/{planId}/gueltigkeit` sind in Deutsch und aus der Oberfläche des XPlanManagerWeb abgeleitet. Die verwendeten Datentypen sind ebenfalls in Deutsch und aus den Bezeichnern des XPlanung-Datenmodells (XPlanGML-Applikationsschema) abgeleitet. Bezeichner wie z. B. `{planId}` in einer Ressource sind Variablen und müssen durch entsprechende Werte ausgetauscht werden. Folgende Variablen werden in der API verwendet: - `{planId}` - eindeutiger Schlüssel eines Plans (numerischer Wert, z.B. 10) -- `{planName}` - eindeutiger Name eines Plans (alphanumerischer Wert, z.B. HafenCity14) +- `{planName}` - Name eines Plans (alphanumerischer Wert, z.B. HafenCity14) - `{name}` - Name oder Suchtext (alphanumerischer Wert, z.B. Hafen ) - `{id}` - eindeutiger Schlüssel einer Ressource (alphanumerischer Wert, Beispiele siehe Abschnitt <<xplanmanager-api-schluessel,eindeutige Schlüssel>>) @@ -16,10 +16,9 @@ Die REST-API des XPlanManager stellt folgende Ressourcen bereit: |`/` |`GET` |Beschreibung der Schnittstelle als OpenAPI 3.0 Dokument |`/info` |`GET` |Informationen zur xPlanBox Version und aktiven Konfiguration |`/plan` |`POST` |Importieren eines XPlanGML-Dokuments oder XPlanArchivs -|`/plan/{planId}` |`GET` |Abfrage der Daten zu einem Plan über die PlanID -|`/plan/{planId}/archive` |`GET` |Abfrage des XPlanArchiv über die PlanID +|`/plan/{planId}` |`GET` |Abfrage der Daten zu einem Plan über die PlanId +|`/plan/{planId}/archive` |`GET` |Abfrage des XPlanArchiv über die PlanId |`/plan/{planId}` |`DELETE` |Löschen eines Plans -|`/plan/name/{planName}` |`GET` |Abfrage der Daten zu einem Plan über den Plannamen |`/plans?planName={name}` |`GET` |Suche nach Plänen über den Plannamen |`/plan/{planId}/basisdaten` |`GET` |Abfrage von Basisdaten zu einem Plan |`/plan/{planId}/basisdaten` |`PUT` |Hinzufügen/Ersetzen von Basisdaten zu einem Plan diff --git a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_Grundlagen.adoc b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_Grundlagen.adoc index 3858be424..33f361936 100644 --- a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_Grundlagen.adoc +++ b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanManager_Grundlagen.adoc @@ -20,6 +20,8 @@ Das XPlanGML-Dokument muss folgende Eigenschaften aufweisen: `aendertPlanBereich/XP_VerbundenerPlanBereich/verbundenerPlanBereich` oder `wurdeGeaendertVonPlanBereich/XP_VerbundenerPlanBereich/verbundenerPlanBereich`. Wird eines der Elemente in einem XPlanGML-Dokument verwendet, dann kann der Plan nicht importiert werden! +IMPORTANT: Vermeiden Sie Sonderzeichen im Plannamen `xplan:name` wie z. B. `:`, `&`, `#` , `/`, `\`, `?`, `@`, `"`, `'` oder Zeilenumbrüche. + [[xplanarchiv]] ==== Das XPlanArchiv @@ -35,8 +37,7 @@ Das XPlanArchiv ist eine ZIP-Datei (Dateiformat `application/zip`) mit folgendem ** `text/plain` ** `application/pdf` -IMPORTANT: Dateinamen dürfen keine Sonderzeichen wie z. B. `&`, `#` , `/`, `\`, `"`, `'` (doppeltes oder einfaches Anführungszeichen), -Leerzeichen oder auch Umlaute beinhalten. Groß- und Kleinschreibung in den Dateinamen (auch der Dateiendung) werden berücksichtigt +IMPORTANT: Dateinamen dürfen keine Sonderzeichen wie z. B. `:`, `&`, `#` , `/`, `\`, `?`, `@`, `"`, `'` (doppeltes oder einfaches Anführungszeichen), Leerzeichen oder auch Umlaute beinhalten. Groß- und Kleinschreibung in den Dateinamen und auch der Dateiendung werden berücksichtigt und müssen vollständig mit den Referenzen im Dokument übereinstimmen! [[referenzierung-von-rasterdaten-im-xplangml]] diff --git a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanValidator_Web.adoc b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanValidator_Web.adoc index e55010fd1..b5785ba59 100644 --- a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanValidator_Web.adoc +++ b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanValidator_Web.adoc @@ -77,7 +77,7 @@ Die semantische Validierung überprüft die fachlich-inhaltliche Kohärenz der X Die Konformitätsregeln sind für die Version 5.0 und höher optimiert! ==== -Eine XPlanGML-Datei ist dann zu der jeweiligen XPlanGML-Version konform, wenn das XMLDokument gegen das jeweilige XPlanGML Schema validiert und alle in den Konformitätsbedingungen spezifizierten Regeln erfüllt werden. +Eine XPlanGML-Datei ist dann zu der jeweiligen XPlanGML-Version konform, wenn das XML-Dokument gegen das jeweilige XPlanGML Schema validiert und alle in den Konformitätsbedingungen spezifizierten Regeln erfüllt werden. [NOTE] ==== diff --git a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanWMS.adoc b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanWMS.adoc index a5d20bfe3..419c8b8ab 100644 --- a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanWMS.adoc +++ b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/XPlanWMS.adoc @@ -36,17 +36,15 @@ http://<host>:<port>/xplan-services-wms/services/wms? [[xplanwms-adresse-xplanwerkwms]] ==== Adresse des XPlanWerkWMS -Die Adresse des XPlanWerkWMS ist abhängig von dem Planwerk das angefragt werden soll. Der Name des Plans wird im XPlanManager (s. <<xplanmanager-web>>) in der Auflistung der Pläne angezeigt und in der URL für den Platzhalter <PLANNAME> angegeben. Der Planname wird aus dem XPlanGML-Element `xplan:name` abgeleitet. Dabei werden Sonderzeichen wie `/` entfernt und der Planname für die Erstellung der URL des XPlanWerkWMS kodiert (weitere Informationen zu URL Syntax und Zeichenkodierung in https://datatracker.ietf.org/doc/html/rfc3986[RFC 3986 – Uniform Resource Identifier (URI)]). +Die Adresse des XPlanWerkWMS ist abhängig vom Namen des Planwerks, das angefragt werden soll. Der Name des Plans wird im XPlanManager (s. <<xplanmanager-web>>) in der Auflistung der Pläne angezeigt und in der URL für den Platzhalter <PLANNAME> angegeben. Der Planname wird aus dem XPlanGML-Element `xplan:name` abgeleitet. Dabei werden Sonderzeichen wie `/` entfernt und der Planname für die Erstellung der URL des XPlanWerkWMS kodiert (weitere Informationen zu URL Syntax und Zeichenkodierung in https://datatracker.ietf.org/doc/html/rfc3986[RFC 3986 – Uniform Resource Identifier (URI)]). -Die vollständige XPlanWerkWMS URL kann über die Kartenvorschau im XPlanManagerWeb abgerufen werden. - -IMPORTANT: Vermeiden Sie Sonderzeichen im Plannamen wie z. B. `:`, `&`, `#` , `/`, `\`, `?`, `@`, `'`, `"` oder Zeilenumbrüche. +Die vollständige URL des XPlanWerkWMS kann über die Kartenvorschau im XPlanManagerWeb abgerufen werden. ---- http://<host>:<port>/xplan-services-wms/services/planwerkwms/planname/<PLANNAME> ---- -TIP: Alternativ kann die URL auch ohne Sonderzeichen verwendet werden. Dafür müssen alle anderen Zeichen als `a-zA-Z0-9-_` aus <PLANNAME> entfernt werden. Die so erstellte URL liefert eine identische Response wie die dazugehörige, kodierte URL. +TIP: Neben der kodierten URL kann auch der Planname ohne Sonderzeichen verwendet werden. Dafür müssen alle anderen Zeichen als `a-zA-Z0-9-_` aus <PLANNAME> entfernt werden. Die so erstellte URL liefert die identische Response wie die dazugehörige, kodierte URL. [[xplanwms-adresse-xplanartwms]] ==== Adresse des XPlanArtWMS diff --git a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc index 77be25e43..f7c53a410 100644 --- a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc +++ b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc @@ -2,6 +2,23 @@ [[Aenderungshistorie]] == Änderungshistorie der xPlanBox +[[Aenderungshistorie-8.0.1]] +=== Version 8.0.1 + +==== Erweiterungen +- Konfigurationsoption für den Path-Style access für den Zugriff auf S3 hinzugefügt +- Konfigurationsoption für die Angabe eines RabbitMQ Virtual Host hinzugefügt + +==== Fehlerbehebungen + +- Doppelte Angabe der _internalId_ im XPlanGML bei Import eines Plans über XPlanManagerAPI mit Query-Parameter internalId und internalId im XPlanGML behoben +- Fehlende Ausgabe der _internalId_ aus dem importierten XPlanGML durch XPlanManagerAPI behoben +- Fehlerhaftes Datumsformat in Textreferenzen in XPlanManagerAPI v2 behoben +- Fehlerhafter HTTP Statuscode bei Angabe eines invaliden Datumsformat in PUT/POST JSON-Model der XPlanManagerAPI behoben +- Fehler in XPlanMapServer durch Zugriff auf die Georeferenzen in der Tabelle _xplanmgr.plans_ behoben +- Ausgabe des Elements _rasterType_ in der Ressource /api/v2/info im XPlanManagerAPI entfernt + + [[Aenderungshistorie-8.0]] === Version 8.0 @@ -14,6 +31,7 @@ Neben Fehlerbehebungen sowie Erweiterungen und Verbesserungen an den Komponenten - Ausgabe von Validierungsfehlern als GeoJSON im XPlanValidator - Aufteilung des Validierungsberichts je Planwerk in einer XPlanGML-Datei - Erweiterung von XPlanValidatorAPI und XPlanManagerAPI um Prüfungen von referenzierten Rasterdaten auf gültiges CRS und Bildformat +- Aktualisierung der Validierungsregeln auf v1.1.10 - Verbesserung der Initialisierung des XPlanManager - Einführung der REST-API Version 2 (v2) für XPlanManagerAPI und XPlanValidatorAPI mit asynchroner Verarbeitung über RabbitMQ - Verbesserter Validierungsbericht in REST-API v2 diff --git a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/bekannteProbleme.adoc b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/bekannteProbleme.adoc index fc384f388..cb18117d3 100644 --- a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/bekannteProbleme.adoc +++ b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/bekannteProbleme.adoc @@ -60,13 +60,18 @@ Wird beim Import eines Plans mit Rasterdaten die Option "Weiter ohne Rasterdaten Wenn ein Plan mit Rasterdaten über den XPlanManagerWeb mit aktivierter Übernahme der Rasterdaten importiert wird, werden die Rasterdaten übernommen und in der Kartenvorschau angezeigt. Wird der Plan erneut importiert, aber mit aktivierter Option "ohne Rasterdaten importieren", führt dies dazu, dass die Rasterdaten auch bei dem zuvor importierten Plan nicht mehr in der Kartenvorschau angezeigt werden. +==== XPlanManagerWeb/XPlanManagerAPI - Fehler beim Editieren: Multiple representations of the same entity + +Wird ein XPlanArchiv mit Anhängen z. B. Begleitdokumenten importiert und sind diese Dateien nicht oder durch eine absolute URL im XPlanGML referenziert, dann kommt es beim Hinzufügen einer Datei mit dem gleichen Namen über die Editierfunktion im XPlanManagerWeb oder entsprechende Funktion in der XPlanManagerAPI zu einem Fehler. +Ein solches XPlanArchiv kann entstehen, wenn ein XPlanArchiv über den XPlanManagerWeb oder die XPlanManagerAPI exportiert wird und die XPlanDokumenteAPI aktiviert ist. Dann werden die externen Referenzen von der xPlanBox automatisch angepasst. Das exportierte XPlanArchiv beinhaltet alle Anhänge des Plans sowie die absoluten Referenzen auf die XPlanDokumenteAPI im XPlanGML. + ==== XPlanDokumenteAPI - Abruf des World-Files bei GeoTIFF nicht möglich Bei Import eines Plans mit einer im XPlanGML referenzierten GeoTIFF-Datei als Rasterbasis und zusätzlich auch noch einem referenzierten World-File (tfw-Datei), dann ist die tfw-Datei nicht über die XPlanDokumenteAPI abfragbar. Wird die im exportierten XPlanGML angegebene URL aufgerufen, kann die tfw-Datei nicht abgerufen werden und ein HTTP-Statusfehler "404 - Not Found" wird von der XPlanDokumenteAPI zurückgegeben. -==== XPlanDokumenteAPI/XPlanManagerAPI/XPlanManagerWeb - Import von exportierten Plänen bei aktivierter XPlanDokumenteAPI nicht möglich +==== XPlanDokumenteAPI/XPlanManagerAPI/XPlanManagerWeb - Re-Import von exportierten Plänen mit Rasterdaten bei aktivierter XPlanDokumenteAPI nicht möglich -Wenn die XPlanDokumenteAPI aktiviert ist und ein XPlanArchiv mit Begleitdokumenten importiert wurde, dann werden die externen Referenzen von der xPlanBox automatisch angepasst. Wird das XPlanGML-Instanzdokument über den XPlanManagerAPI oder -Web wieder exportiert, dann müssen vor einem erneuten Import in die xPlanBox alle Referenzen manuell angepasst werden. +Wenn die XPlanDokumenteAPI aktiviert ist und ein XPlanArchiv mit Rasterdaten importiert wurde, dann werden die Referenzen auf die Rasterdaten von der xPlanBox automatisch angepasst. Wird das XPlanGML-Instanzdokument über den XPlanManagerAPI oder -Web wieder exportiert, dann müssen vor einem erneuten Import in die xPlanBox die Referenzen manuell angepasst werden. ==== XPlanValidatorAPI - Verwendung von vollqualifizierten Pfaden im HTTP-Header "X-Filename" diff --git a/xplan-documentation/xplan-betriebshandbuch/pom.xml b/xplan-documentation/xplan-betriebshandbuch/pom.xml index b141561e5..3657a8127 100644 --- a/xplan-documentation/xplan-betriebshandbuch/pom.xml +++ b/xplan-documentation/xplan-betriebshandbuch/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-documentation</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc index 7a7de6358..cf5031cd5 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc @@ -145,6 +145,22 @@ Zur Aktualisierung der Daten steht das <<kommandozeilen-anwendung,Kommandozeilen Weitere Informationen zum Kommandozeilenwerkzeug sind im Abschnitt <<kommandozeilen-anwendung>> beschrieben. +[[aktualisierung-version-8.0.1]] +=== Aktualisierung auf die Version 8.0.1 + +Für eine Installation der Bugfix-Version müssen folgende Schritte ausgeführt werden: + +* Austausch der Webapps: +** _xplan-manager-api.war_ +** _xplan-manager-web.war_ +** _xplan-validator-api.war_ +** _xplan-validator-executor.jar_ +** _xplan-dokumente-api.war_ +* Aktualisierung der Datenbank XPlanDB: +** Führen Sie das Liquibase-Skript wie in <<konfiguration-xplandb-liquibase>> beschrieben aus. + +TIP: Alle anderen Komponenten sind unverändert und müssen nicht aktualisiert werden. + [[aktualisierung-version-8.0]] === Aktualisierung auf die Version 8.0 diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc index 11f916f70..fd4874ef0 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc @@ -15,8 +15,10 @@ Das Gesamtsystem setzt sich aus folgenden Komponenten zusammen: * <<xplandokumente-api,XPlanDokumenteAPI>> * <<xplanvalidator-executor,XPlanValidatorExecutor>> * <<xplanwms,XPlanWMS, XPlanArtWMS und XPlanWerkWMS>> +* <<xplanmapserver,XPlanMapServer>> * <<xplanwfs,XPlanWFS>> * <<xplansynwfs,XPlanSynWFS>> +* <<xplanmapproxy,XPlanMapProxy>> * <<xplaninspirepluwms,XPlanInspirePluWMS>> * <<xplaninspirepluwfs,XPlanInspirePluWFS>> * <<xplanclitools,XPlanCLI Tools>> @@ -102,6 +104,13 @@ Der XPlanWMS greift auf dasselbe Datenbankschema wie der <<xplansynwfs>> in der Während der XPlanWMS planübergreifend arbeitet, beschränkt sich der XPlanWerkWMS auf einzelne Planwerke. Der XPlanArtWMS stellt je einen Endpunkt für jede Planart wie z. B. BPlan oder FPlan zur Verfügung. +[[xplanmapserver]] +=== XPlanMapServer + +Der XPlanMapServer ist auf dem Standard Web Map Service +(Version 1.1.1 und 1.3.0) des Open Geospatial Consortium (OGC) +basierender Kartendienst. Dieser bietet die Möglichkeit die Rasterdaten zu einem Planwerk abzufragen. + [[xplanwfs]] === XPlanWFS @@ -117,6 +126,13 @@ XPlanGML-Anwendungsschemas (XPlanSynGML). Dieses stellt eine vereinfachte und zusammenfassende Form der verschiedenen XPlanGML Versionen dar. Der XPlanSynWFS greift auf das synthetisierte Datenbankschema in der <<xplandb>> zu. +[[xplanmapproxy]] +=== XPlanMapProxy + +Der XPlanMapProxy ist auf dem Standard Web Map Service +(Version 1.1.1 und 1.3.0) und Web Map Tiling Service 1.0.0 des Open Geospatial Consortium (OGC) +basierender Kartendienst. Dieser bietet die Möglichkeiten kaskadierend auf die Inhalte des XPlanWMS und XPlanMapServer mit Cache-Funktion zuzugreifen. + [[xplaninspirepluwms]] === XPlanInspirePluWMS diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/mapserver.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/mapserver.adoc index 6327258d3..0e2a95281 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/mapserver.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/installation/mapserver.adoc @@ -12,11 +12,11 @@ NOTE:: Der MapServer wird zusammen mit einem S3-Objektspeicher verwendet und erf [[installation-mapserver-linux]] ==== Linux -MapServer 8.0 kann über den Paketmanager der Linux-Distribution installiert werden. Weitere Hinweise zur Installation sind in der https://mapserver.org/installation/unix.html#installation[Installationsanleitung des MapServer] zu finden. +MapServer kann über den Paketmanager der Linux-Distribution installiert werden. Weitere Hinweise zur Installation sind in der https://mapserver.org/installation/unix.html#installation[Installationsanleitung des MapServer] zu finden. [[installation-mapserver-windows]] ==== Windows -MapServer 8.0 für Windows kann bei http://www.gisinternals.com/[GISInternals] heruntergeladen werden. +MapServer für Windows kann bei http://www.gisinternals.com/[GISInternals] heruntergeladen werden. diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/externeReferenzen.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/externeReferenzen.adoc index 1b050fc57..329c7bb76 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/externeReferenzen.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/externeReferenzen.adoc @@ -1,7 +1,9 @@ [[konfiguration-externe-refrenzen]] === Bereitstellung von Rasterdaten und Begleitdokumenten über API aktivieren -Um im XPlanManager den Austausch der relativen URLs in absolute URLs für den direkten Abruf der Rasterdaten und/oder Begleitdokumenten eines XPlanArchivs zu aktivieren, muss die Basis-URL der Schnittstelle über die Umgebungsvariable `XPLAN_DOCUMENT_URL_PUBLIC` gesetzt werden. Diese Erweiterung kann nur verwendet werden, wenn keine Daten in der XPlanDB vorhanden sind. +Um im XPlanManager den Austausch der relativen URLs in absolute URLs für den direkten Abruf der Rasterdaten und/oder Begleitdokumenten eines XPlanArchivs zu aktivieren, muss die Basis-URL der Schnittstelle über die Umgebungsvariable `XPLAN_DOCUMENT_URL_PUBLIC` gesetzt werden. + +Wenn die `XPLAN_DOCUMENT_URL_PUBLIC` nicht gesetzt ist, dann werden die im XPlanGML referenzierten Begleitdokumente unverändert in die Datenhaltung der XPlanDB übernommen. .Beispiel für die Verwendung der XPlanDokumenteAPI [source,properties] @@ -22,8 +24,7 @@ Beim Import eines XPlanArchivs mit Rasterdaten und/oder Begleitdokumenten werden * XPlanWMS: GetFeatureInfo-Anfrage in allen unterstützen Formaten (GML, HTML, TEXT) * XPlanWFS: GetFeature-Anfrage (insbs. GML-Format) * XPlanSynWFS: GetFeature-Anfrage (insbs. GML-Format) - * XPlanManagerWeb/XPlanManagerAPI: Abruf des XPlanGML + * XPlanManagerWeb/XPlanManagerAPI: Abruf des XPlanArchivs mit dem XPlanGML-Dokument -CAUTION: Wenn bereits Pläne in die XPlanDB importiert wurden, dann ist eine nachträgliche Umstellung auf Verwendung der XPlanDokumenteAPI nicht möglich, da der Datenbestand in der XPlanDB nicht automatisch angepasst werden kann. +CAUTION: Wenn bereits Pläne in die XPlanDB importiert wurden, dann ist eine nachträgliche Umstellung auf Verwendung der XPlanDokumenteAPI nicht möglich. Der Datenbestand in der XPlanDB wird nicht automatisch angepasst! Auch die nachträgliche Änderung der URL für die Umgebungsvariable `XPLAN_DOCUMENT_URL_PUBLIC` ist aus diesem Grund nicht möglich. -NOTE: Wenn die `XPLAN_DOCUMENT_URL_PUBLIC` nicht gesetzt ist, dann werden die im XPlanGML referenzierten Begleitdokumente unverändert in die Datenhaltung der XPlanDB übernommen und können über die <<konfiguration-xplanwms-gfi,GetAttachment-Operation des XPlanWMS>> abgerufen werden. diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc index 930d85ac1..6ecd7f2c0 100644 --- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc +++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/ueberblick.adoc @@ -99,7 +99,7 @@ IMPORTANT: Unterstützt wird MapServer 8.0+. [[mapproxy]] === MapProxy -Optional kann https://mapproxy.org/[MapProxy] installiert werden. MapProxy kann als Proxy kaskadierend für den XPlanWMS und MapServer mit Cache-Funktion verwendet werden, um den Zugriff auf Raster- und Vektorebenen des XPlanWMS und MapServer zu beschleunigen. Der Zugriff auf MapProxy erfolgt über die Standardschnittstellen WMS und WMTS. Weitere Informationen zur Installation befinden sich im Abschnitt <<installation-mapproxy>>. +Optional kann https://mapproxy.org/[MapProxy] installiert werden. MapProxy kann als Proxy kaskadierend für den XPlanWMS und XPlanMapServer mit Cache-Funktion verwendet werden, um den Zugriff auf Raster- und Vektorebenen des XPlanWMS und XPlanMapServer zu beschleunigen. Der Zugriff auf MapProxy erfolgt über die Standardschnittstellen WMS und WMTS. Weitere Informationen zur Installation befinden sich im Abschnitt <<installation-mapproxy>>. IMPORTANT: Unterstützt wird MapProxy 1.16.0. diff --git a/xplan-documentation/xplan-webpages/pom.xml b/xplan-documentation/xplan-webpages/pom.xml index f7a1a3c4d..2f379cb52 100644 --- a/xplan-documentation/xplan-webpages/pom.xml +++ b/xplan-documentation/xplan-webpages/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-documentation</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-dokumente/pom.xml b/xplan-dokumente/pom.xml index 5d4974bc0..db8d2ceb0 100644 --- a/xplan-dokumente/pom.xml +++ b/xplan-dokumente/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-dokumente/xplan-dokumente-api/pom.xml b/xplan-dokumente/xplan-dokumente-api/pom.xml index 63319536e..54db9dc6e 100755 --- a/xplan-dokumente/xplan-dokumente-api/pom.xml +++ b/xplan-dokumente/xplan-dokumente-api/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-dokumente</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-dokumente/xplan-dokumente-config/pom.xml b/xplan-dokumente/xplan-dokumente-config/pom.xml index eea11b8e6..54ec94888 100644 --- a/xplan-dokumente/xplan-dokumente-config/pom.xml +++ b/xplan-dokumente/xplan-dokumente-config/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-dokumente</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-manager/pom.xml b/xplan-manager/pom.xml index 3e027c718..1b1253fcc 100644 --- a/xplan-manager/pom.xml +++ b/xplan-manager/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-manager/xplan-manager-api/pom.xml b/xplan-manager/xplan-manager-api/pom.xml index 1a49fb9bb..8c35db743 100644 --- a/xplan-manager/xplan-manager-api/pom.xml +++ b/xplan-manager/xplan-manager-api/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-manager</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/exception/ValidationExceptionMapper.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/exception/ValidationExceptionMapper.java new file mode 100644 index 000000000..90295f093 --- /dev/null +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/exception/ValidationExceptionMapper.java @@ -0,0 +1,44 @@ +/*- + * #%L + * xplan-core-api - Modul zur Gruppierung der Kernmodule + * %% + * Copyright (C) 2008 - 2025 Freie und Hansestadt Hamburg, developed by lat/lon gesellschaft für raumbezogene Informationssysteme mbH + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package de.latlon.xplanbox.api.manager.exception; + +import static jakarta.ws.rs.core.Response.Status.BAD_REQUEST; + +import jakarta.validation.ValidationException; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; + +/** + * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a> + * @since 8.0.1 + */ +@Provider +public class ValidationExceptionMapper implements ExceptionMapper<ValidationException> { + + @Override + public Response toResponse(ValidationException exception) { + String msg = String.format("%s Cause: %s", exception.getMessage(), + exception.getCause() != null ? exception.getCause().getMessage() : "unknown"); + return Response.status(BAD_REQUEST).entity(msg).build(); + } + +} diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/EditTextHandler.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/EditTextHandler.java index ed608f2b9..c5040709d 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/EditTextHandler.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/EditTextHandler.java @@ -20,19 +20,19 @@ */ package de.latlon.xplanbox.api.manager.handler; -import de.latlon.xplan.manager.web.shared.XPlan; -import de.latlon.xplan.manager.web.shared.edit.XPlanToEdit; -import de.latlon.xplanbox.api.manager.exception.InvalidTextId; -import de.latlon.xplanbox.api.manager.v1.model.Text; -import org.springframework.stereotype.Component; - -import jakarta.inject.Singleton; import java.io.File; import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; +import de.latlon.xplanbox.api.manager.v2.model.Text; +import de.latlon.xplan.manager.web.shared.XPlan; +import de.latlon.xplan.manager.web.shared.edit.XPlanToEdit; +import de.latlon.xplanbox.api.manager.exception.InvalidTextId; +import jakarta.inject.Singleton; +import org.springframework.stereotype.Component; + /** * Handles editing of Text. * diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/v2/ConfigHandlerV2.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/v2/ConfigHandlerV2.java index 0b27a2df3..cb9e64132 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/v2/ConfigHandlerV2.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/v2/ConfigHandlerV2.java @@ -22,7 +22,6 @@ package de.latlon.xplanbox.api.manager.handler.v2; import static org.slf4j.LoggerFactory.getLogger; -import java.util.Arrays; import java.util.List; import de.latlon.xplan.manager.configuration.ManagerConfiguration; @@ -65,22 +64,12 @@ public class ConfigHandlerV2 { @Autowired private List<String> activatedProfiles; - private enum RasterConfigurationSource { - - geotiff, mapserver - - } - public ManagerSystemConfig describeManagerSystem() { LOG.debug("Generating manager config information"); - RasterConfigurationSource rasterType = Arrays.stream(env.getActiveProfiles()) - .anyMatch(p -> RasterConfigurationSource.mapserver.name().equals(p)) ? RasterConfigurationSource.mapserver - : RasterConfigurationSource.geotiff; DefaultValidationConfiguration defaultValidationConfiguration = managerApiConfiguration .getDefaultValidationConfiguration(); return (ManagerSystemConfig) new ManagerSystemConfig().rasterCrs(defaultCrs) - .rasterType(rasterType.name()) .skipSemantisch(defaultValidationConfiguration.isSkipSemantisch()) .skipGeometrisch(defaultValidationConfiguration.isSkipGeometrisch()) .skipFlaechenschluss(defaultValidationConfiguration.isSkipFlaechenschluss()) diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/AbstractApiConfig.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/AbstractApiConfig.java index 51bb28403..6e6ed400d 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/AbstractApiConfig.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/AbstractApiConfig.java @@ -36,6 +36,7 @@ import de.latlon.xplanbox.api.manager.config.ManagerApiConfiguration; import de.latlon.xplanbox.api.manager.exception.AmbiguousBereichNummernExceptionMapper; import de.latlon.xplanbox.api.manager.exception.PlanNotFoundExceptionMapper; import de.latlon.xplanbox.api.manager.exception.UnsupportedPlanExceptionMapper; +import de.latlon.xplanbox.api.manager.exception.ValidationExceptionMapper; import de.latlon.xplanbox.security.openapi.BearerSecurityOpenApiWriter; import io.swagger.v3.jaxrs2.integration.resources.BaseOpenApiResource; import io.swagger.v3.oas.models.ExternalDocumentation; @@ -71,6 +72,7 @@ public abstract class AbstractApiConfig extends ResourceConfig { register(openApiResource); register(ConstraintViolationExceptionMapper.class); + register(ValidationExceptionMapper.class); register(UnsupportedContentTypeExceptionMapper.class); register(ValidatorExceptionMapper.class); register(XPlanApiExceptionMapper.class); diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/v2/ApiV2Config.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/v2/ApiV2Config.java index 1e5d613ee..6a8a82296 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/v2/ApiV2Config.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/openapi/v2/ApiV2Config.java @@ -103,7 +103,7 @@ public class ApiV2Config extends AbstractApiConfig { protected void addInfo(OpenAPI openApi, ManagerApiConfiguration managerApiConfiguration) { openApi.setInfo(new Info().title("XPlanManagerAPI") - .version("2.0.0") + .version("2.0.1") .description("XPlanManager REST API v2") .termsOfService(getTermsOfService(managerApiConfiguration)) .license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0.html"))); diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/PlanTextApi.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/PlanTextApi.java index e79103d35..cecee0f0a 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/PlanTextApi.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/PlanTextApi.java @@ -20,6 +20,9 @@ */ package de.latlon.xplanbox.api.manager.v1; +import static de.latlon.xplanbox.api.manager.v1.model.Text.convertToV1; +import static de.latlon.xplanbox.api.manager.v1.model.Text.convertToV2; + import java.io.File; import java.io.InputStream; import java.util.List; @@ -73,7 +76,7 @@ public class PlanTextApi { @ApiResponse(responseCode = "406", description = "Requested format is not available") }) public List<Text> getTexte(@PathParam("planId") @Parameter(description = "ID of the plan to be returned", example = "123") String planId) throws Exception { - return editTextHandler.retrieveTexte(planId); + return editTextHandler.retrieveTexte(planId).stream().map(Text::convertToV1).toList(); } @POST @@ -99,7 +102,7 @@ public class PlanTextApi { } Text text = textmodel.getValueAs(Text.class); File file = editTextHandler.storeAsFile(datei, dateiMeta); - return editTextHandler.addText(planId, text, file); + return convertToV1(editTextHandler.addText(planId, convertToV2(text), file)); } @GET @@ -118,7 +121,7 @@ public class PlanTextApi { @PathParam("id") @Parameter(description = "ID of the text to be returned (GML-Id of the feature)", example = "GML_ID_123") String id) throws Exception { - return editTextHandler.retrieveText(planId, id); + return convertToV1(editTextHandler.retrieveText(planId, id)); } @PUT @@ -148,7 +151,7 @@ public class PlanTextApi { } Text text = textmodel.getValueAs(Text.class); File file = editTextHandler.storeAsFile(datei, dateiMeta); - return editTextHandler.replaceText(planId, id, text, file); + return convertToV1(editTextHandler.replaceText(planId, id, convertToV2(text), file)); } } diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/model/Text.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/model/Text.java index 9490fd98c..0288385a5 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/model/Text.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v1/model/Text.java @@ -8,23 +8,27 @@ * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ package de.latlon.xplanbox.api.manager.v1.model; -import com.fasterxml.jackson.annotation.JsonProperty; -import de.latlon.xplan.manager.web.shared.edit.ExterneReferenzArt; -import de.latlon.xplan.manager.web.shared.edit.MimeTypes; -import de.latlon.xplan.manager.web.shared.edit.TextRechtscharacterType; +import static de.latlon.xplan.commons.util.TextPatternConstants.S_LENGTH; +import static de.latlon.xplan.commons.util.TextPatternConstants.TEXT_PATTERN; +import static de.latlon.xplan.commons.util.TextPatternConstants.XL_LENGTH; +import static de.latlon.xplan.commons.util.TextPatternConstants.XS_LENGTH; +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonProperty; +import de.latlon.xplanbox.api.commons.DateConverter; import jakarta.validation.Valid; import jakarta.validation.constraints.DecimalMax; import jakarta.validation.constraints.DecimalMin; @@ -33,12 +37,6 @@ import jakarta.validation.constraints.Size; import jakarta.xml.bind.annotation.XmlAccessType; import jakarta.xml.bind.annotation.XmlAccessorType; import jakarta.xml.bind.annotation.XmlRootElement; -import java.util.Objects; - -import static de.latlon.xplan.commons.util.TextPatternConstants.S_LENGTH; -import static de.latlon.xplan.commons.util.TextPatternConstants.TEXT_PATTERN; -import static de.latlon.xplan.commons.util.TextPatternConstants.XL_LENGTH; -import static de.latlon.xplan.commons.util.TextPatternConstants.XS_LENGTH; /** * Datatype for Text. @@ -71,47 +69,44 @@ public class Text { @DecimalMax("99999") private @Valid Integer rechtscharakter; - public static Text fromText(de.latlon.xplan.manager.web.shared.edit.Text oldText) { - return fromText(oldText.getFeatureId(), oldText); - } + public static Text convertToV1(de.latlon.xplanbox.api.manager.v2.model.Text textV2) { + de.latlon.xplanbox.api.manager.v2.model.Referenz refTextv2 = textV2.getRefText(); + return new Text().id(textV2.getId()) + .schluessel(textV2.getSchluessel()) + .gesetzlicheGrundlage(textV2.getGesetzlicheGrundlage()) + .text(textV2.getText()) + .rechtscharakter(textV2.getRechtscharakter()) + .refText(refTextv2 != null ? new Referenz().art(refTextv2.getArt()) + .beschreibung(refTextv2.getBeschreibung()) + .datum(DateConverter.convertToDate(refTextv2.getDatum())) + .georefMimeType(refTextv2.getGeorefMimeType()) + .georefURL(refTextv2.getGeorefURL()) + .informationssystemURL(refTextv2.getInformationssystemURL()) + .referenzMimeType(refTextv2.getReferenzMimeType()) + .referenzURL(refTextv2.getReferenzURL()) + .referenzName(refTextv2.getReferenzName()) : null); - public static Text fromText(String textId, de.latlon.xplan.manager.web.shared.edit.Text oldText) { - Referenz referenz = new Referenz().art(oldText.getArt() != null ? oldText.getArt().getCode() : null) - .beschreibung(oldText.getBeschreibung()) - .datum(oldText.getDatum()) - .georefMimeType(oldText.getGeorefMimeType() != null ? oldText.getGeorefMimeType().getCode() : null) - .georefURL(oldText.getGeoReference()) - .informationssystemURL(oldText.getInformationssystemURL()) - .referenzMimeType(oldText.getReferenzMimeType() != null ? oldText.getReferenzMimeType().getCode() : null) - .referenzURL(oldText.getReference()) - .referenzName(oldText.getReferenzName()); - Text text = new Text().id(textId) - .schluessel(oldText.getKey()) - .gesetzlicheGrundlage(oldText.getBasis()) - .text(oldText.getText()) - .rechtscharakter(oldText.getRechtscharakter() != null ? oldText.getRechtscharakter().getCode() : -1) - .refText(referenz); - return text; } - public de.latlon.xplan.manager.web.shared.edit.Text toText(String version, String type) { - de.latlon.xplan.manager.web.shared.edit.Text oldText = new de.latlon.xplan.manager.web.shared.edit.Text(); - oldText.setKey(schluessel); - oldText.setBasis(gesetzlicheGrundlage); - oldText.setText(text); - oldText.setRechtscharakter(TextRechtscharacterType.fromCode(rechtscharakter, version, type)); - if (refText != null) { - oldText.setReference(refText.getReferenzURL()); - oldText.setReferenzName(refText.getReferenzName()); - oldText.setReferenzMimeType(MimeTypes.getByCode(refText.getReferenzMimeType())); - oldText.setGeoReference(refText.getGeorefURL()); - oldText.setGeorefMimeType(MimeTypes.getByCode(refText.getGeorefMimeType())); - oldText.setArt(ExterneReferenzArt.getByCode(refText.getArt())); - oldText.setBeschreibung(refText.getBeschreibung()); - oldText.setDatum(refText.getDatum()); - oldText.setInformationssystemURL(refText.getInformationssystemURL()); - } - return oldText; + public static de.latlon.xplanbox.api.manager.v2.model.Text convertToV2(Text textV1) { + Referenz refTextV1 = textV1.getRefText(); + de.latlon.xplanbox.api.manager.v2.model.Text text = new de.latlon.xplanbox.api.manager.v2.model.Text() + .id(textV1.getId()) + .schluessel(textV1.getSchluessel()) + .gesetzlicheGrundlage(textV1.getGesetzlicheGrundlage()) + .text(textV1.getText()) + .rechtscharakter(textV1.getRechtscharakter()) + .refText(refTextV1 != null ? new de.latlon.xplanbox.api.manager.v2.model.Referenz().art(refTextV1.getArt()) + .beschreibung(refTextV1.getBeschreibung()) + .datum(DateConverter.convertToLocalDate(refTextV1.getDatum())) + .georefMimeType(refTextV1.getGeorefMimeType()) + .georefURL(refTextV1.getGeorefURL()) + .informationssystemURL(refTextV1.getInformationssystemURL()) + .referenzMimeType(refTextV1.getReferenzMimeType()) + .referenzURL(refTextV1.getReferenzURL()) + .referenzName(refTextV1.getReferenzName()) : null); + ; + return text; } public Text id(String id) { @@ -199,8 +194,8 @@ public class Text { /** * **/ - public Text rechtscharakter(int rechtscharakter) { - if (rechtscharakter > 0) + public Text rechtscharakter(Integer rechtscharakter) { + if (rechtscharakter != null && rechtscharakter > 0) this.rechtscharakter = rechtscharakter; else this.rechtscharakter = null; diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2.java index 683471ec0..222a8d9c7 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2.java @@ -26,7 +26,7 @@ import java.util.List; import de.latlon.xplanbox.api.manager.exception.MissingRequestEntity; import de.latlon.xplanbox.api.manager.handler.EditTextHandler; -import de.latlon.xplanbox.api.manager.v1.model.Text; +import de.latlon.xplanbox.api.manager.v2.model.Text; import de.latlon.xplanbox.api.manager.validation.ModelValidator; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/ManagerSystemConfig.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/ManagerSystemConfig.java index b74d9feba..546b275ba 100644 --- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/ManagerSystemConfig.java +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/ManagerSystemConfig.java @@ -8,12 +8,12 @@ * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% @@ -46,8 +46,6 @@ public class ManagerSystemConfig extends SystemConfig { private @Valid String rasterCrs; - private @Valid String rasterType; - private @Valid Boolean skipSemantisch = false; private @Valid Boolean skipGeometrisch = false; @@ -79,24 +77,6 @@ public class ManagerSystemConfig extends SystemConfig { this.rasterCrs = rasterCrs; } - /** - * Typ der Rasterdatenhaltung: geotiff of mapserver - **/ - public ManagerSystemConfig rasterType(String rasterType) { - this.rasterType = rasterType; - return this; - } - - @Schema(example = "geotiff", description = "Typ der Rasterdatenhaltung: geotiff or mapserver") - @JsonProperty("rasterType") - public String getRasterType() { - return rasterType; - } - - public void setRasterType(String rasterType) { - this.rasterType = rasterType; - } - /** * Semantische Validierung bei Import ueberspringen **/ @@ -216,7 +196,6 @@ public class ManagerSystemConfig extends SystemConfig { } ManagerSystemConfig managerSystemConfig = (ManagerSystemConfig) o; return super.equals(o) && Objects.equals(this.rasterCrs, managerSystemConfig.rasterCrs) - && Objects.equals(this.rasterType, managerSystemConfig.rasterType) && Objects.equals(this.skipSemantisch, managerSystemConfig.skipSemantisch) && Objects.equals(this.skipGeometrisch, managerSystemConfig.skipGeometrisch) && Objects.equals(this.skipFlaechenschluss, managerSystemConfig.skipFlaechenschluss) @@ -226,8 +205,8 @@ public class ManagerSystemConfig extends SystemConfig { @Override public int hashCode() { - return Arrays.hashCode(new int[] { super.hashCode(), Objects.hash(rasterCrs, rasterType, skipSemantisch, - skipGeometrisch, skipFlaechenschluss, skipGeltungsbereich, skipLaufrichtung) }); + return Arrays.hashCode(new int[] { super.hashCode(), Objects.hash(rasterCrs, skipSemantisch, skipGeometrisch, + skipFlaechenschluss, skipGeltungsbereich, skipLaufrichtung) }); } @Override @@ -240,7 +219,6 @@ public class ManagerSystemConfig extends SystemConfig { .append(toIndentedString(getSupportedXPlanGmlVersions())) .append("\n"); sb.append(" rasterCrs: ").append(toIndentedString(rasterCrs)).append("\n"); - sb.append(" rasterType: ").append(toIndentedString(rasterType)).append("\n"); sb.append(" skipSemantisch: ").append(toIndentedString(skipSemantisch)).append("\n"); sb.append(" skipGeometrisch: ").append(toIndentedString(skipGeometrisch)).append("\n"); sb.append(" skipFlaechenschluss: ").append(toIndentedString(skipFlaechenschluss)).append("\n"); diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/Text.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/Text.java new file mode 100644 index 000000000..f193b7702 --- /dev/null +++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/v2/model/Text.java @@ -0,0 +1,263 @@ +/*- + * #%L + * xplan-manager-api - Software zur Verwaltung von XPlanGML Daten + * %% + * Copyright (C) 2008 - 2025 Freie und Hansestadt Hamburg, developed by lat/lon gesellschaft für raumbezogene Informationssysteme mbH + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package de.latlon.xplanbox.api.manager.v2.model; + +import static de.latlon.xplan.commons.util.TextPatternConstants.S_LENGTH; +import static de.latlon.xplan.commons.util.TextPatternConstants.TEXT_PATTERN; +import static de.latlon.xplan.commons.util.TextPatternConstants.XL_LENGTH; +import static de.latlon.xplan.commons.util.TextPatternConstants.XS_LENGTH; + +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonProperty; +import de.latlon.xplan.manager.web.shared.edit.ExterneReferenzArt; +import de.latlon.xplan.manager.web.shared.edit.MimeTypes; +import de.latlon.xplan.manager.web.shared.edit.TextRechtscharacterType; +import de.latlon.xplanbox.api.commons.DateConverter; +import jakarta.validation.Valid; +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlRootElement; + +/** + * Datatype for Text. + * + * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz</a> + * @since 8.0.1 + */ +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class Text { + + private String id; + + @Size(max = XS_LENGTH) + @Pattern(regexp = TEXT_PATTERN) + private @Valid String schluessel; + + @Size(max = S_LENGTH) + @Pattern(regexp = TEXT_PATTERN) + private @Valid String gesetzlicheGrundlage; + + @Size(max = XL_LENGTH) + @Pattern(regexp = TEXT_PATTERN) + private @Valid String text; + + private @Valid Referenz refText; + + @DecimalMin("1000") + @DecimalMax("99999") + private @Valid Integer rechtscharakter; + + public static Text fromText(de.latlon.xplan.manager.web.shared.edit.Text oldText) { + return fromText(oldText.getFeatureId(), oldText); + } + + public static Text fromText(String textId, de.latlon.xplan.manager.web.shared.edit.Text oldText) { + Referenz referenz = new Referenz().art(oldText.getArt() != null ? oldText.getArt().getCode() : null) + .beschreibung(oldText.getBeschreibung()) + .datum(DateConverter.convertToLocalDate(oldText.getDatum())) + .georefMimeType(oldText.getGeorefMimeType() != null ? oldText.getGeorefMimeType().getCode() : null) + .georefURL(oldText.getGeoReference()) + .informationssystemURL(oldText.getInformationssystemURL()) + .referenzMimeType(oldText.getReferenzMimeType() != null ? oldText.getReferenzMimeType().getCode() : null) + .referenzURL(oldText.getReference()) + .referenzName(oldText.getReferenzName()); + return new Text().id(textId) + .schluessel(oldText.getKey()) + .gesetzlicheGrundlage(oldText.getBasis()) + .text(oldText.getText()) + .rechtscharakter(oldText.getRechtscharakter() != null ? oldText.getRechtscharakter().getCode() : -1) + .refText(referenz); + } + + public de.latlon.xplan.manager.web.shared.edit.Text toText(String version, String type) { + de.latlon.xplan.manager.web.shared.edit.Text oldText = new de.latlon.xplan.manager.web.shared.edit.Text(); + oldText.setKey(schluessel); + oldText.setBasis(gesetzlicheGrundlage); + oldText.setText(text); + oldText.setRechtscharakter(TextRechtscharacterType.fromCode(rechtscharakter, version, type)); + if (refText != null) { + oldText.setReference(refText.getReferenzURL()); + oldText.setReferenzName(refText.getReferenzName()); + oldText.setReferenzMimeType(MimeTypes.getByCode(refText.getReferenzMimeType())); + oldText.setGeoReference(refText.getGeorefURL()); + oldText.setGeorefMimeType(MimeTypes.getByCode(refText.getGeorefMimeType())); + oldText.setArt(ExterneReferenzArt.getByCode(refText.getArt())); + oldText.setBeschreibung(refText.getBeschreibung()); + oldText.setDatum(DateConverter.convertToDate(refText.getDatum())); + oldText.setInformationssystemURL(refText.getInformationssystemURL()); + } + return oldText; + } + + public Text id(String id) { + this.id = id; + return this; + } + + @JsonProperty("id") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + /** + * + **/ + public Text schluessel(String schluessel) { + this.schluessel = schluessel; + return this; + } + + @JsonProperty("schluessel") + public String getSchluessel() { + return schluessel; + } + + public void setSchluessel(String schluessel) { + this.schluessel = schluessel; + } + + /** + * + **/ + public Text gesetzlicheGrundlage(String gesetzlicheGrundlage) { + this.gesetzlicheGrundlage = gesetzlicheGrundlage; + return this; + } + + @JsonProperty("gesetzlicheGrundlage") + public String getGesetzlicheGrundlage() { + return gesetzlicheGrundlage; + } + + public void setGesetzlicheGrundlage(String gesetzlicheGrundlage) { + this.gesetzlicheGrundlage = gesetzlicheGrundlage; + } + + /** + * + **/ + public Text text(String text) { + this.text = text; + return this; + } + + @JsonProperty("text") + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + /** + * + **/ + public Text refText(Referenz refText) { + this.refText = refText; + return this; + } + + @JsonProperty("refText") + public Referenz getRefText() { + return refText; + } + + public void setRefText(Referenz refText) { + this.refText = refText; + } + + /** + * + **/ + public Text rechtscharakter(int rechtscharakter) { + if (rechtscharakter > 0) + this.rechtscharakter = rechtscharakter; + else + this.rechtscharakter = null; + return this; + } + + @JsonProperty("rechtscharakter") + public Integer getRechtscharakter() { + return rechtscharakter; + } + + public void setRechtscharakter(Integer rechtscharakter) { + this.rechtscharakter = rechtscharakter; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Text text = (Text) o; + return Objects.equals(this.schluessel, text.schluessel) + && Objects.equals(this.gesetzlicheGrundlage, text.gesetzlicheGrundlage) + && Objects.equals(this.text, text.text) && Objects.equals(this.refText, text.refText) + && Objects.equals(this.rechtscharakter, text.rechtscharakter); + } + + @Override + public int hashCode() { + return Objects.hash(schluessel, gesetzlicheGrundlage, text, refText, rechtscharakter); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Text {\n"); + + sb.append(" schluessel: ").append(toIndentedString(schluessel)).append("\n"); + sb.append(" gesetzlicheGrundlage: ").append(toIndentedString(gesetzlicheGrundlage)).append("\n"); + sb.append(" text: ").append(toIndentedString(text)).append("\n"); + sb.append(" refText: ").append(toIndentedString(refText)).append("\n"); + sb.append(" rechtscharakter: ").append(toIndentedString(rechtscharakter)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the + * first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} diff --git a/xplan-manager/xplan-manager-api/src/main/resources/application.properties b/xplan-manager/xplan-manager-api/src/main/resources/application.properties index 83110655a..7facd9c78 100644 --- a/xplan-manager/xplan-manager-api/src/main/resources/application.properties +++ b/xplan-manager/xplan-manager-api/src/main/resources/application.properties @@ -33,6 +33,7 @@ spring.rabbitmq.host=${XPLAN_RABBIT_HOST:localhost} spring.rabbitmq.password=${XPLAN_RABBIT_PASSWORD:guest} spring.rabbitmq.port=${XPLAN_RABBIT_PORT:5672} spring.rabbitmq.username=${XPLAN_RABBIT_USER:guest} +spring.rabbitmq.virtual-host=${XPLAN_RABBIT_VIRTUALHOST:} xplanbox.rabbitmq.public.topic.name=${XPLAN_RABBIT_PUBLIC_TOPIC} @@ -46,6 +47,7 @@ xplanbox.s3.accessKeyId=${XPLAN_S3_ACCESS_KEY} xplanbox.s3.endpoint.url=${XPLAN_S3_ENDPOINT} xplanbox.s3.region=${XPLAN_S3_REGION} xplanbox.s3.secretKey=${XPLAN_S3_SECRET_ACCESS_KEY} +xplanbox.s3.pathStyleAccessEnabled=${XPLAN_S3_PATHSTYLEACCESS_ENABLED:false} xplanbox.validation.profiles=${XPLAN_VALIDATION_PROFILES:} xplanbox.s3.bucket.validation=${XPLAN_S3_BUCKET_VALIDATION:validation} diff --git a/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/ManagerApiJerseyTest.java b/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/ManagerApiJerseyTest.java index 306943a35..a1918d0a9 100644 --- a/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/ManagerApiJerseyTest.java +++ b/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/ManagerApiJerseyTest.java @@ -26,6 +26,7 @@ import de.latlon.xplanbox.api.commons.exception.XPlanApiExceptionMapper; import de.latlon.xplanbox.api.manager.config.ApplicationContext; import de.latlon.xplanbox.api.manager.config.HsqlJpaContext; import de.latlon.xplanbox.api.manager.config.TestContext; +import de.latlon.xplanbox.api.manager.exception.ValidationExceptionMapper; import jakarta.ws.rs.core.Application; import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.server.ResourceConfig; @@ -56,6 +57,7 @@ public abstract class ManagerApiJerseyTest<T> extends JerseyTest { context.refresh(); resourceConfig.register(XPlanApiExceptionMapper.class); resourceConfig.register(MultiPartFeature.class); + resourceConfig.register(ValidationExceptionMapper.class); resourceConfig.packages("org.glassfish.jersey.examples.multipart"); resourceConfig.property("contextConfig", context); return resourceConfig; diff --git a/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2Test.java b/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2Test.java index e8fcfe6a3..a8994ccbc 100644 --- a/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2Test.java +++ b/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/v2/PlanTextApi2Test.java @@ -93,9 +93,23 @@ class PlanTextApi2Test extends ManagerApiJerseyTest<PlanTextApi2> { assertThat(response.getHeaderString(HttpHeaders.CONTENT_TYPE)).isEqualTo(APPLICATION_JSON); } + @Test + void verifyThat_replaceTextById_invalidDateTime_returnsCorrectStatusCodeForValidMediaType() + throws URISyntaxException { + FileDataBodyPart textmodel = createFileDataBodyPart("textmodel", "textmodel-datetime.json", + MediaType.APPLICATION_JSON_TYPE); + FileDataBodyPart filePart = createFileDataBodyPart("datei", "datei.pdf", null); + FormDataMultiPart multipart = (FormDataMultiPart) new FormDataMultiPart().bodyPart(filePart) + .bodyPart(textmodel); + + Response response = target("/plan/2/text/FEATURE_0f870967-bd6f-4367-9150-8a255f0290ad").request() + .put(Entity.entity(multipart, multipart.getMediaType())); + assertThat(response.getStatus()).isEqualTo(Response.Status.BAD_REQUEST.getStatusCode()); + } + private FileDataBodyPart createFileDataBodyPart(String name, String resource, MediaType mediaType) throws URISyntaxException { - File datei = new File(getClass().getResource("../v1/" + resource).toURI()); + File datei = new File(getClass().getResource("../v2/" + resource).toURI()); return new FileDataBodyPart(name, datei, mediaType); } diff --git a/xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel-datetime.json b/xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel-datetime.json new file mode 100644 index 000000000..2a1c002dd --- /dev/null +++ b/xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel-datetime.json @@ -0,0 +1,17 @@ +{ + "schluessel": "string", + "gesetzlicheGrundlage": "string", + "text": "string", + "refText": { + "georefURL": "string", + "georefMimeType": "string", + "art": "string", + "informationssystemURL": "string", + "referenzName": "string", + "referenzURL": "string", + "referenzMimeType": "string", + "beschreibung": "string", + "datum": "2021-08-31T14:19:35.752+0000" + }, + "rechtscharakter": 1000 +} diff --git a/xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel.json b/xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel.json new file mode 100644 index 000000000..05192f972 --- /dev/null +++ b/xplan-manager/xplan-manager-api/src/test/resources/de/latlon/xplanbox/api/manager/v2/textmodel.json @@ -0,0 +1,17 @@ +{ + "schluessel": "string", + "gesetzlicheGrundlage": "string", + "text": "string", + "refText": { + "georefURL": "string", + "georefMimeType": "string", + "art": "string", + "informationssystemURL": "string", + "referenzName": "string", + "referenzURL": "string", + "referenzMimeType": "string", + "beschreibung": "string", + "datum": "2021-08-31" + }, + "rechtscharakter": 1000 +} diff --git a/xplan-manager/xplan-manager-config/pom.xml b/xplan-manager/xplan-manager-config/pom.xml index f3fa97975..4ebf572da 100644 --- a/xplan-manager/xplan-manager-config/pom.xml +++ b/xplan-manager/xplan-manager-config/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-manager</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-manager/xplan-manager-web/pom.xml b/xplan-manager/xplan-manager-web/pom.xml index 807e43f5c..d4e75b89f 100644 --- a/xplan-manager/xplan-manager-web/pom.xml +++ b/xplan-manager/xplan-manager-web/pom.xml @@ -9,7 +9,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-manager</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-tests/pom.xml b/xplan-tests/pom.xml index 7be971624..709407446 100644 --- a/xplan-tests/pom.xml +++ b/xplan-tests/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-tests/xplan-tests-integration/README.md b/xplan-tests/xplan-tests-integration/README.md index 0d13aef37..1ab7f6f8f 100644 --- a/xplan-tests/xplan-tests-integration/README.md +++ b/xplan-tests/xplan-tests-integration/README.md @@ -8,10 +8,10 @@ Bei einer lokale Ausführung der Tests muss der Webbrowser "Google Chrome" insta ``` mvn clean integration-test -Psystem-tests \ - -DXPLAN_VALIDATORAPI_URL_PUBLIC=https://xplanbox.lat-lon.de/xplan-validator-api \ - -DXPLAN_MANAGERAPI_URL_PUBLIC=https://xplanbox.lat-lon.de/xplan-manager-api \ - -DXPLAN_DOKUMENTEAPI_URL_PUBLIC=https://xplanbox.lat-lon.de/xplan-dokumente-api \ -DXPLAN_API_USERNAME=xplanbox -DXPLAN_API_PASSWORD='pwd' \ + -DXPLAN_DOKUMENTEAPI_URL_PUBLIC=https://xplanbox.lat-lon.de/xplan-dokumente-api \ + -DXPLAN_MANAGERAPI_URL_PUBLIC=https://xplanbox.lat-lon.de/xplan-manager-api \ + -DXPLAN_VALIDATORAPI_URL_PUBLIC=https://xplanbox.lat-lon.de/xplan-validator-api \ -DXPLAN_VALIDATOR_WEB_BASE_URL=https://xplanbox.lat-lon.de/xplan-validator-web \ -DXPLAN_VALIDATOR_WEB_USERNAME=xplanbox -DXPLAN_VALIDATOR_WEB_PASSWORD='PWD' ``` @@ -42,6 +42,7 @@ docker run --env XPLAN_VALIDATOR_WEB_BASE_URL=... xplanbox/xplan-tests-integrati - `SKIP_RABBIT_TESTS`: wenn `true` oder `1` werden die Tests ignoriert, für die eine Verbindung zum RabbitMQ Server benötigt wird. - `XPLAN_RABBIT_HOST`: der Host vom RabbitMQ Server (Default: `localhost`) - `XPLAN_RABBIT_PORT`: der Port vom RabbitMQ Server (Default: `5672`) +- `XPLAN_RABBIT_VIRTUALHOST`: der Virtual Host auf dem RabbitMQ Server (Default: ``) - `XPLAN_RABBIT_USER`: der Benutzername für die Verbindung zum RabbitMQ Server (Default: `guest`) - `XPLAN_RABBIT_PASSWORD`: das Passwort für die Verbindung zum RabbitMQ Server (Default: `guest`) - `XPLAN_RABBIT_PUBLIC_TOPIC`: der Name vom Topic Exchange (Default: `xplanbox-public`) diff --git a/xplan-tests/xplan-tests-integration/pom.xml b/xplan-tests/xplan-tests-integration/pom.xml index 5e36ca499..9cf797b9e 100644 --- a/xplan-tests/xplan-tests-integration/pom.xml +++ b/xplan-tests/xplan-tests-integration/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-tests</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-tests/xplan-tests-integration/runAllIntegrationTests.sh b/xplan-tests/xplan-tests-integration/runAllIntegrationTests.sh index df198263e..6b106e5a5 100755 --- a/xplan-tests/xplan-tests-integration/runAllIntegrationTests.sh +++ b/xplan-tests/xplan-tests-integration/runAllIntegrationTests.sh @@ -37,7 +37,7 @@ function waitForRightVersion() { ############################################ if [ -n "$XPLAN_NOTIFY_SLACK_CHANNEL" ] && [ -n "$XPLAN_NOTIFY_SLACK_TOKEN" ]; then - sendSlackMessage "Starting Integration tests..." + sendSlackMessage "Starting Integration tests (git revision: $GIT_REVISION)..." fi echo "Waiting for services with git revision $GIT_REVISION:" @@ -61,6 +61,12 @@ DISPLAY=:0 mvn integration-test -Psystem-tests \ -Dwebdriver.chrome.driver=/usr/bin/chromedriver kill -9 $xvfbPid +echo -e "\n" +echo "Results:" +results=`find target/surefire-reports/ -name 'TEST-*.xml' | xargs cat | grep "<testsuite" | sed 's/>.*/>/' | sed -e 's/[">]//g' -e 's/.*name=//' | sort` +echo -e "$results" +echo -e "\n" + echo "Generating html report..." mvn surefire-report:failsafe-report-only -q @@ -92,7 +98,9 @@ fi if [ -n "$XPLAN_NOTIFY_SLACK_CHANNEL" ] && [ -n "$XPLAN_NOTIFY_SLACK_TOKEN" ]; then echo "Sending slack notification to $XPLAN_NOTIFY_SLACK_CHANNEL" - message="Finished Integration tests" + formattedResults=`echo -e "$results" | sed 's/^/%0A* /'` + message="Finished Integration tests%0A\ +$formattedResults" if [ -n "$S3_PATH_PDF" ]; then message="$message%0A%0A\ Get test reports from S3 bucket with:%0A\ diff --git a/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/TestConfig.java b/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/TestConfig.java index 2b8e1a5d6..eae1bcbd0 100644 --- a/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/TestConfig.java +++ b/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/TestConfig.java @@ -8,12 +8,12 @@ * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% @@ -30,8 +30,8 @@ public record TestConfig(String dokumenteApiBaseUrl, String managerApiBaseUrl, S String apiUsername, String apiPassword, String validatorWebBaseUrl, String validatorWebUsername, String validatorWebPassword, RabbitConfig rabbitConfig) { - public record RabbitConfig(String rabbitHost, int rabbitPort, String rabbitUsername, String rabbitPassword, - String publicTopicName, String publicTopicRoutingPrefix) { + public record RabbitConfig(String rabbitHost, int rabbitPort, String rabbitVirtualHost, String rabbitUsername, + String rabbitPassword, String publicTopicName, String publicTopicRoutingPrefix) { }; public static TestConfig getTestConfig() { @@ -51,13 +51,14 @@ public record TestConfig(String dokumenteApiBaseUrl, String managerApiBaseUrl, S String rabbitHost = getEnv("XPLAN_RABBIT_HOST", "localhost"); int rabbitPort = Integer.parseInt(getEnv("XPLAN_RABBIT_PORT", "5672"), 10); + String rabbitVirtualHost = getEnv("XPLAN_RABBIT_VIRTUALHOST", ""); String rabbitUsername = getEnv("XPLAN_RABBIT_USER", "guest"); String rabbitPassword = getEnv("XPLAN_RABBIT_PASSWORD", "guest"); String publicTopicName = getEnv("XPLAN_RABBIT_PUBLIC_TOPIC", "latlon.public"); String publicTopicRoutingPrefix = getEnv("XPLAN_RABBIT_PUBLIC_TOPIC_ROUTING_PREFIX", ""); - RabbitConfig rabbitConfig = new RabbitConfig(rabbitHost, rabbitPort, rabbitUsername, rabbitPassword, - publicTopicName, publicTopicRoutingPrefix); + RabbitConfig rabbitConfig = new RabbitConfig(rabbitHost, rabbitPort, rabbitVirtualHost, rabbitUsername, + rabbitPassword, publicTopicName, publicTopicRoutingPrefix); return new TestConfig(dokumenteApiBaseUrl, managerApiBaseUrl, validatorApiBaseUrl, apiUsername, apiPassword, validatorWebBaseUrl, validatorWebUsername, validatorWebPassword, rabbitConfig); } diff --git a/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/AbstractRabbitITExecution.java b/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/AbstractRabbitITExecution.java index e62d5b9d7..fd41537ab 100644 --- a/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/AbstractRabbitITExecution.java +++ b/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/AbstractRabbitITExecution.java @@ -8,12 +8,12 @@ * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% @@ -62,6 +62,7 @@ public abstract class AbstractRabbitITExecution { ConnectionFactory factory = new ConnectionFactory(); factory.setHost(rabbitConfig.rabbitHost()); factory.setPort(rabbitConfig.rabbitPort()); + factory.setVirtualHost(rabbitConfig.rabbitVirtualHost()); factory.setUsername(rabbitConfig.rabbitUsername()); factory.setPassword(rabbitConfig.rabbitPassword()); Connection connection = factory.newConnection(); diff --git a/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/manager/ManagerPublicEventsIT.java b/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/manager/ManagerPublicEventsIT.java index 14da7f619..fe8fed7fb 100644 --- a/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/manager/ManagerPublicEventsIT.java +++ b/xplan-tests/xplan-tests-integration/src/test/java/de/latlon/xplanbox/tests/rabbit/manager/ManagerPublicEventsIT.java @@ -8,12 +8,12 @@ * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% @@ -29,6 +29,7 @@ import de.latlon.xplanbox.tests.FeignUtils; import de.latlon.xplanbox.tests.TestConfig; import de.latlon.xplanbox.tests.rabbit.AbstractRabbitITExecution; import feign.Feign; +import feign.auth.BasicAuthRequestInterceptor; import feign.jackson.JacksonDecoder; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfEnvironmentVariable; @@ -48,6 +49,7 @@ class ManagerPublicEventsIT extends AbstractRabbitITExecution { .client(FeignUtils.unsecuredClient()) // .logger(new Logger.ErrorLogger()) // .logLevel(Level.FULL) + .requestInterceptor(new BasicAuthRequestInterceptor(testConfig.apiUsername(), testConfig.apiPassword())) .encoder(new SimpleBodyFileEncoder()) .decoder(new JacksonDecoder()) .target(ManagerApiV2.class, testConfig.managerApiBaseUrl()); diff --git a/xplan-tests/xplan-tests-manual/pom.xml b/xplan-tests/xplan-tests-manual/pom.xml index d809a0e50..74111a3b9 100644 --- a/xplan-tests/xplan-tests-manual/pom.xml +++ b/xplan-tests/xplan-tests-manual/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-tests</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> </project> diff --git a/xplan-tests/xplan-tests-soapui/pom.xml b/xplan-tests/xplan-tests-soapui/pom.xml index 7a6fb53f5..f585b8dd2 100644 --- a/xplan-tests/xplan-tests-soapui/pom.xml +++ b/xplan-tests/xplan-tests-soapui/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-tests</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-tests/xplan-tests-soapui/runAllSoapUiTests.sh b/xplan-tests/xplan-tests-soapui/runAllSoapUiTests.sh index 50bfb8ebb..0707b022e 100755 --- a/xplan-tests/xplan-tests-soapui/runAllSoapUiTests.sh +++ b/xplan-tests/xplan-tests-soapui/runAllSoapUiTests.sh @@ -41,7 +41,7 @@ function waitForRightVersion() { ############################################ if [ -n "$XPLAN_NOTIFY_SLACK_CHANNEL" ] && [ -n "$XPLAN_NOTIFY_SLACK_TOKEN" ]; then - sendSlackMessage "Starting SoapUI tests..." + sendSlackMessage "Starting SoapUI tests (git revision: $GIT_REVISION)..." fi if [ -z ${XPLAN_DB_HOSTNAME+x} ]; then diff --git a/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml b/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml index 13bc028c3..0e8ce2d30 100644 --- a/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml +++ b/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml @@ -13119,7 +13119,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="c626c665-ca92-4af6-8419-b36cb3dd893c" name="Exists postImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdXPlanGML53}' and ARTEFACTS.FILENAME = 'postImg.png'])</path> @@ -13138,6 +13138,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="5710fe1e-6f12-4181-8694-e6c0b83b5cf2" name="postImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdXPlanGML53}' and ARTEFACTS.FILENAME = 'postImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -13905,7 +13914,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="518f9564-7d7c-43a7-9bab-8af3c6ab860e" name="Exists postImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdFPlan}' and ARTEFACTS.FILENAME = 'postImg.png'])</path> @@ -13924,6 +13933,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="518f9564-7d7c-43a7-9bab-8af3c6ab860e" name="postImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdFPlan}' and ARTEFACTS.FILENAME = 'postImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -14204,7 +14222,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="b2bba16f-ae74-46ba-a523-30bc7163b8b2" name="Exists postImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdLPlan}' and ARTEFACTS.FILENAME = 'postImg.png'])</path> @@ -14223,6 +14241,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="b2bba16f-ae74-46ba-a523-30bc7163b8b2" name="postImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdLPlan}' and ARTEFACTS.FILENAME = 'postImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -14443,7 +14470,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="4e5d61b2-3df0-4601-a9c3-f73bf2304533" name="Exists postImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdRPlan}' and ARTEFACTS.FILENAME = 'postImg.png'])</path> @@ -14462,6 +14489,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="4e5d61b2-3df0-4601-a9c3-f73bf2304533" name="postImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdRPlan}' and ARTEFACTS.FILENAME = 'postImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -14684,7 +14720,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="403a72b4-1988-4e96-8c5f-5e89d77c0954" name="Exists postImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdSOPlan}' and ARTEFACTS.FILENAME = 'postImg.png'])</path> @@ -14703,6 +14739,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="403a72b4-1988-4e96-8c5f-5e89d77c0954" name="postImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdSOPlan}' and ARTEFACTS.FILENAME = 'postImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -15017,7 +15062,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="754f7477-aae0-4c92-b56e-1036ba3316aa" name="Exists putImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdXPlanGML53}' and ARTEFACTS.FILENAME = 'putImg.png'])</path> @@ -15036,6 +15081,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="754f7477-aae0-4c92-b56e-1036ba3316aa" name="putImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdXPlanGML53}' and ARTEFACTS.FILENAME = 'putImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -15823,7 +15877,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="4cf3837a-caf0-41de-b613-bb8739649972" name="Exists putImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdFPlan}' and ARTEFACTS.FILENAME = 'putImg.png'])</path> @@ -15842,6 +15896,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="4cf3837a-caf0-41de-b613-bb8739649972" name="putImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdFPlan}' and ARTEFACTS.FILENAME = 'putImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -16079,7 +16142,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="de22dc85-4185-4b18-a749-9c0dff0b4dbc" name="Exits putImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdLPlan}' and ARTEFACTS.FILENAME = 'putImg.png'])</path> @@ -16098,6 +16161,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="de22dc85-4185-4b18-a749-9c0dff0b4dbc" name="putImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdLPlan}' and ARTEFACTS.FILENAME = 'putImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -16335,7 +16407,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="941a4cb0-3f22-444a-a2ed-96301eee6b43" name="Exists putImg,png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdRPlan}' and ARTEFACTS.FILENAME = 'putImg.png'])</path> @@ -16354,6 +16426,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="941a4cb0-3f22-444a-a2ed-96301eee6b43" name="putImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdRPlan}' and ARTEFACTS.FILENAME = 'putImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -16591,7 +16672,7 @@ if (jdbcUrl == ""){ <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:driver>org.postgresql.Driver</con:driver> <con:connectionString>${#Project#jdbcUrl}</con:connectionString> - <con:query>select plan,filename from xplanmgr.artefacts;</con:query> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> <con:assertion type="XPath Match" id="d096b504-060c-4dd0-9a83-73bf35f534df" name="Exists putImg.png"> <con:configuration> <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdSOPlan}' and ARTEFACTS.FILENAME = 'putImg.png'])</path> @@ -16610,6 +16691,15 @@ if (jdbcUrl == ""){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="XPath Match" id="d096b504-060c-4dd0-9a83-73bf35f534df" name="putImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#currentPlanIdSOPlan}' and ARTEFACTS.FILENAME = 'putImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:properties/> </con:config> </con:testStep> @@ -22563,134 +22653,994 @@ assert expectedHeader == actualHeader</scriptText> </con:testStep> <con:properties/> </con:testCase> - <con:properties/> - </con:testSuite> - <con:testSuite id="0b9ba577-517d-4770-ae8b-842f1a09f403" name="Profiles v1 TestSuite"> - <con:settings/> - <con:runType>SEQUENTIAL</con:runType> - <con:testCase id="d85d5258-e301-44d8-ab37-b8bfae32ec8d" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/info TestCase" searchProperties="true"> + <con:testCase id="6e3f081e-c58c-47b4-908f-0e22727b413f" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Archive with internalId TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von Archiv mit internalId</con:description> <con:settings/> - <con:testStep type="restrequest" name="GET XX X.X XX showConfig" id="e6a87004-ca2f-4aa8-b721-f61ed8060d6c"> + <con:testStep type="httprequest" name="POST BP 5.3 xF,sS,sF,sG,sL importPlan" id="d76e1c11-2f61-44a4-b08c-9b998ad0e0c4"> <con:settings/> - <con:config service="XPlanManagerAPI" resourcePath="/info" methodName="showConfig" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:restRequest name="GET XX X.X XX showConfig" id="e9ab8dcf-b755-40af-baf7-aa17a2ca4cdc" mediaType="application/json"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1</con:endpoint> - <con:request/> - <con:originalUri>https://xplanbox.lat-lon.de/xmanager/api/v1/info</con:originalUri> - <con:assertion type="Valid HTTP Status Codes" id="8738532e-3368-48bb-a866-0b35c62f3643" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match id"> - <con:configuration> - <path>$.profiles[0].id</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match name"> - <con:configuration> - <path>$.profiles[0].name</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match description"> - <con:configuration> - <path>$.profiles[0].description</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match version"> - <con:configuration> - <path>$.profiles[0].version</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match source"> - <con:configuration> - <path>$.profiles[0].source</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:domain xsi:nil="true"/> - <con:authType>No Authorization</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:restRequest> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 5.3 xF,sS,sF,sG,sL importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>201</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>TESTID1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="Property Transfer" id="35c10770-7e76-448c-873a-6e998e802208"> + <con:testStep type="transfer" name="POST BP 5.3 xF,sS,sF,sG,sL importPlan Property Transfer" id="2f6ff36c-8a5c-4a2e-9708-0ca97a7ca824"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>profilesId</con:name> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET XX X.X XX showConfig</con:sourceStep> - <con:sourcePath>$.profiles[0].id</con:sourcePath> - <con:targetType>profileId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> + <con:sourceStep>POST BP 5.3 xF,sS,sF,sG,sL importPlan</con:sourceStep> + <con:sourcePath>$.id</con:sourcePath> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> <con:type>JSONPATH</con:type> <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="08dc4218-1cab-418d-a881-a9d3d90eec06" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan TestCase" searchProperties="true"> - <con:settings/> - <con:testStep type="restrequest" name="POST BP 4.1 sF,sS,pf importPlanWithProfil" id="70e48894-fd11-4425-b586-146f2f1fd0b9"> + <con:testStep type="httprequest" name="GET BP 5.3 pI retrievePlans" id="cbe70c4a-54f5-4ae0-9be2-ec8b4dfa4e06"> <con:settings/> - <con:config service="XPlanManagerAPI" resourcePath="/plan" methodName="import" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:restRequest name="POST BP 4.1 sF,sS,pf importPlanWithProfil" id="bf7971d6-e318-4bdc-b279-2bb920237af7" mediaType="application/octet-stream" postQueryString="false"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/vnd.xplanbox.api+json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1</con:endpoint> - <con:request/> - <con:originalUri>http://localhost/xplan-manager-api/xmanager/api/v1/plan</con:originalUri> - <con:assertion type="Valid HTTP Status Codes" id="175f3cab-acc4-43f8-857f-68775292193b" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>201,400</codes> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:domain xsi:nil="true"/> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:attachment> - <con:name>BP_4.1.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BP_4.1.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_4.1.zip</con:url> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 5.3 pI retrievePlans" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plans</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>TESTID1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>planId</con:name> + <con:value>${#TestCase#planId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 retrievePlanById" id="3680f45a-f2bd-4f35-b3ee-5ea4f666c7a7"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 5.3 retrievePlanById" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>TESTID1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 retrievePlanByName" id="0ff0a343-72b0-4ed3-9c7d-496c8be15a26"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 5.3 retrievePlanByName" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan/name/BPlan002_5-3-soapui-internalid</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>TESTID1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 5.3 pI deletePlan" id="7313e369-d921-402f-88aa-031731bda171"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.3 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:configuration> + <path>$.message</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="Cleanup Properties" id="f8ff2c50-ec50-4fed-a546-580bc289407f"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="784702d8-a73c-4e00-80a3-5305679fabbc" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Archive with internalId and QueryParam internalId TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von Archiv mit internalId und Query-Parameter internalId</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan" id="45383389-521a-429a-a10c-7aad8cde0a9f"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>201</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>Test-overwrite-internalId</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>internalId</con:name> + <con:value>Test-overwrite-internalId</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan Property Transfer" id="580c4fcf-b6af-4f71-a81e-baa30bedc9b8"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan</con:sourceStep> + <con:sourcePath>$.id</con:sourcePath> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 pI retrievePlans" id="c2448d4a-1988-4751-8fce-dd0abcfa5222"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 5.3 pI retrievePlans" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plans</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>Test-overwrite-internalId</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>planId</con:name> + <con:value>${#TestCase#planId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 retrievePlanById" id="1110b405-fbcc-465b-86b8-3667af66ff59"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 5.3 retrievePlanById" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>Test-overwrite-internalId</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 retrievePlanByName" id="c12691e6-94b7-4587-a5d1-a328a8dfef5d"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 5.3 retrievePlanByName" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan/name/BPlan002_5-3-soapui-internalid</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>Test-overwrite-internalId</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 5.3 pI deletePlan" id="75dd56bb-dab8-4c52-bbca-c44be8196645"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.3 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:configuration> + <path>$.message</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="Cleanup Properties" id="3d23f161-d5f6-4c45-b30d-27ac3529f625"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="0492331b-0833-40a6-84b1-089f6517cb0a" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Archive without internalId TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von Archiv ohne internalId</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL importPlan" id="5d28e30e-6c5f-4cf0-b8e4-503f8f8ada92"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>201</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL importPlan Property Transfer" id="dbfd7283-6d73-43b2-ae77-2e6e5fea7957"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL importPlan</con:sourceStep> + <con:sourcePath>$.id</con:sourcePath> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0 pI retrievePlans" id="5affaf3c-4642-49ab-a54f-ab4688fb3e14"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 6.0 pI retrievePlans" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plans</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>planId</con:name> + <con:value>${#TestCase#planId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0 retrievePlanById" id="e25500e9-6534-45fd-913b-c2c666dc866f"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 6.0 retrievePlanById" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0 retrievePlanByName" id="fe85d38d-fabf-42bb-9b55-e987ca04ad21"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="GET BP 6.0 retrievePlanByName" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1/plan/name/BPlan004_6-0</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="15cacc61-6240-4b6c-a361-b369fe6b4bcc" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan" id="ab6cd953-f0b8-44fb-a1fc-cb0d438207f7"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:configuration> + <path>$.message</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="Cleanup Properties" id="0c2ed64a-4a0d-458f-8358-cf808d40e46e"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:properties/> + </con:testSuite> + <con:testSuite id="0b9ba577-517d-4770-ae8b-842f1a09f403" name="Profiles v1 TestSuite"> + <con:settings/> + <con:runType>SEQUENTIAL</con:runType> + <con:testCase id="d85d5258-e301-44d8-ab37-b8bfae32ec8d" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/info TestCase" searchProperties="true"> + <con:settings/> + <con:testStep type="restrequest" name="GET XX X.X XX showConfig" id="e6a87004-ca2f-4aa8-b721-f61ed8060d6c"> + <con:settings/> + <con:config service="XPlanManagerAPI" resourcePath="/info" methodName="showConfig" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:restRequest name="GET XX X.X XX showConfig" id="e9ab8dcf-b755-40af-baf7-aa17a2ca4cdc" mediaType="application/json"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1</con:endpoint> + <con:request/> + <con:originalUri>https://xplanbox.lat-lon.de/xmanager/api/v1/info</con:originalUri> + <con:assertion type="Valid HTTP Status Codes" id="8738532e-3368-48bb-a866-0b35c62f3643" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match id"> + <con:configuration> + <path>$.profiles[0].id</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match name"> + <con:configuration> + <path>$.profiles[0].name</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match description"> + <con:configuration> + <path>$.profiles[0].description</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match version"> + <con:configuration> + <path>$.profiles[0].version</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="9705d513-0993-43b9-9759-99e38583dfd5" name="JsonPath Existence Match source"> + <con:configuration> + <path>$.profiles[0].source</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain xsi:nil="true"/> + <con:authType>No Authorization</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:restRequest> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="Property Transfer" id="35c10770-7e76-448c-873a-6e998e802208"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>profilesId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET XX X.X XX showConfig</con:sourceStep> + <con:sourcePath>$.profiles[0].id</con:sourcePath> + <con:targetType>profileId</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties/> + </con:testCase> + <con:testCase id="08dc4218-1cab-418d-a881-a9d3d90eec06" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan TestCase" searchProperties="true"> + <con:settings/> + <con:testStep type="restrequest" name="POST BP 4.1 sF,sS,pf importPlanWithProfil" id="70e48894-fd11-4425-b586-146f2f1fd0b9"> + <con:settings/> + <con:config service="XPlanManagerAPI" resourcePath="/plan" methodName="import" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:restRequest name="POST BP 4.1 sF,sS,pf importPlanWithProfil" id="bf7971d6-e318-4bdc-b279-2bb920237af7" mediaType="application/octet-stream" postQueryString="false"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/vnd.xplanbox.api+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1</con:endpoint> + <con:request/> + <con:originalUri>http://localhost/xplan-manager-api/xmanager/api/v1/plan</con:originalUri> + <con:assertion type="Valid HTTP Status Codes" id="175f3cab-acc4-43f8-857f-68775292193b" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>201,400</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain xsi:nil="true"/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>BP_4.1.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BP_4.1.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_4.1.zip</con:url> <con:id>f164f967-c936-4019-aa8b-4fb3bda60c80</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -22714,15 +23664,967 @@ assert expectedHeader == actualHeader</scriptText> </con:restRequest> </con:config> </con:testStep> - <con:testStep type="transfer" name="Property Transfer" id="b23cc84c-19f3-4ee9-9924-d6a5f72d877f"> + <con:testStep type="transfer" name="Property Transfer" id="b23cc84c-19f3-4ee9-9924-d6a5f72d877f"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planIdProfile</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 4.1 sF,sS,pf importPlanWithProfil</con:sourceStep> + <con:sourcePath>$.id</con:sourcePath> + <con:targetType>planIdProfile</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties/> + </con:testCase> + <con:testCase id="387666a7-3721-4a64-849f-9b8e20c83581" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId} TestCase" searchProperties="true"> + <con:settings/> + <con:testStep type="restrequest" name="DEL BP 4.1 pI deletePlanWithProfil" id="5a05a8ff-fbd1-4621-b965-2905c8431ae7"> + <con:settings/> + <con:config service="XPlanManagerAPI" resourcePath="/plan/{planId}" methodName="delete" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:restRequest name="DEL BP 4.1 pI deletePlanWithProfil" id="d1cd7d2d-f354-4a5a-9fa0-1137ede48dcd" mediaType="application/json" postQueryString="false"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1</con:endpoint> + <con:request/> + <con:originalUri>http://localhost/xplan-manager-api/xmanager/api/v1/plan/</con:originalUri> + <con:assertion type="Valid HTTP Status Codes" id="859dc093-1e4d-4794-bcc1-58695077093f" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200,404</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain xsi:nil="true"/> + <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:preemptive>true</con:preemptive> + <con:authType>No Authorization</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <entry key="planId" value="${#TestSuite#planIdProfile}" xmlns="http://eviware.com/soapui/config"/> + </con:parameters> + </con:restRequest> + </con:config> + </con:testStep> + <con:properties/> + </con:testCase> + <con:testCase id="aedaa003-bb2b-42b6-958c-57575e10ec85" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Cleanup Properties" searchProperties="true"> + <con:description>Gesetzte Werte werden wieder geleert</con:description> + <con:settings/> + <con:testStep type="transfer" name="Property Transfer" id="e40cda18-0926-49de-8cac-07dd1d3f6f89"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>profileId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>profileId</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" disabled="false" entitize="false" ignoreEmpty="false" transferChildNodes="false" transferToAll="false" useXQuery="false"> + <con:name>planIdProfile</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:sourcePath xsi:nil="true"/> + <con:targetType>planIdProfile</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:targetPath xsi:nil="true"/> + <con:type>XPATH</con:type> + <con:targetTransferType>XPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:properties> + <con:property> + <con:name>profileId</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planIdProfile</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testSuite> + <con:testSuite id="a4f05c8c-eedf-42f6-be20-b18452375de0" name="XPlanManagerAPI v2 TestSuite"> + <con:description>TestSuite für XPlanManagerAPI version 2</con:description> + <con:settings/> + <con:runType>SEQUENTIAL</con:runType> + <con:testCase id="07ae12f0-ac5e-4cb1-8f1b-1e1eece581b8" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/ TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET XX X.X XX openAPI" id="f14c1458-23c0-457b-b6d6-4edf36743743"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="726e80e0-3694-4e52-a9ca-a38258fe7503" name="GET XX X.X XX openAPI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="b1659bc9-5975-48fe-8c72-3bdf99daca0f" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="2e5a7efa-134b-4a50-b960-dff030686f34" name="openapi"> + <con:configuration> + <path>$.openapi</path> + <content>3.0.1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="c7bcd776-0947-4d88-923d-e40eb4bb599c" name="info.version"> + <con:configuration> + <path>$.info.version</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>2.*</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="338faceb-131f-43eb-bf38-2bf035ec149f" name="path /"> + <con:configuration> + <path>$.paths./.get.operationId</path> + <content>openApi</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="338faceb-131f-43eb-bf38-2bf035ec149f" name="path /plan response 200 description"> + <con:configuration> + <path>$.paths./plan.post.responses.200.description</path> + <content>ImportReceipt with uuid of the import</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="338faceb-131f-43eb-bf38-2bf035ec149f" name="path /report/{uuid}"> + <con:configuration> + <path>$.paths./report/{uuid}.get.operationId</path> + <content>reportByUuid</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="2397109c-69bb-40f6-9b5a-2f5db5d69ade" name="path /report/{uuid}/geomfindings"> + <con:configuration> + <path>$.paths./report/{uuid}/geomfindings.get.operationId</path> + <content>geomfindingsByUuid</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="fc254bba-c565-40fd-be0b-d265e6144a76" name="path /report/{uuid}/geomfindings response 406 exists"> + <con:configuration> + <path>$.paths./report/{uuid}/geomfindings.get.responses.406</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="GroovyScriptAssertion" id="eb77ee0a-79c2-4ea5-a3c0-4bc0011fcd06" name="path /report/{uuid}/geomfindings.json"> + <con:configuration> + <scriptText>import groovy.json.JsonSlurper + +def json = new JsonSlurper().parseText(messageExchange.response.responseContent) + +assert json.paths.'/report/{uuid}/geomfindings.json'.get.operationId == 'geomfindingsJsonByUuid'</scriptText> + </con:configuration> + </con:assertion> + <con:assertion type="GroovyScriptAssertion" id="01846f0c-e87d-4974-9eb6-38ed2e944029" name="path /report/{uuid}/geomfindings.json response 406 exists"> + <con:configuration> + <scriptText>import groovy.json.JsonSlurper + +def json = new JsonSlurper().parseText(messageExchange.response.responseContent) + +assert json.paths.'/report/{uuid}/geomfindings.json'.get.responses.'406'</scriptText> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="baefa2ef-b925-44ef-b1bb-3e43e1a95a34" name="schema PlanInfo"> + <con:configuration> + <path>$.components.schemas.PlanInfo</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="a0fe450e-b235-4d07-bf3b-edd930c011f6" name="schema ValidationReport geomfindings"> + <con:configuration> + <path>$.components.schemas.ValidationReport.properties.geomfindings.$ref</path> + <content>#/components/schemas/FeatureCollection</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="GroovyScriptAssertion" id="4b10252b-c0ec-478b-8e74-b6f23c599c6b" name="securitySchemes"> + <con:configuration> + <scriptText>import groovy.json.JsonSlurper + +def jwtUrl = context.testCase.testSuite.project.getPropertyValue("jwtUrl"); + +if (jwtUrl != ""){ + def response = messageExchange.response.responseContent + def json = new JsonSlurper().parseText(response) + + def type = json.components.securitySchemes.Bearer.type + def scheme = json.components.securitySchemes.Bearer.scheme + def bearerFormat = json.components.securitySchemes.Bearer.bearerFormat + + assert(type == "http") + assert(scheme == "bearer") + assert(bearerFormat == "JWT") +}</scriptText> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="a0fe450e-b235-4d07-bf3b-edd930c011f6" name="schema Referenz datum"> + <con:configuration> + <path>$.components.schemas.Referenz.properties.datum.format</path> + <content>date</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET XX X.X XX invalidAcceptHeaderExpectError406" id="3b94ce9c-2426-464d-88fd-c906032c818c"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="726e80e0-3694-4e52-a9ca-a38258fe7503" name="GET XX X.X XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="b1659bc9-5975-48fe-8c72-3bdf99daca0f" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>406</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:properties/> + </con:testCase> + <con:testCase id="9a952141-6600-4b2d-bccd-de0ce037bb89" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/info TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/info"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET XX X.X XX showConfig" id="11e7c2b5-68da-4905-bd1c-1dcc75ca2195"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="ada729bc-f24a-41d6-bcf5-4dd34948e273" name="GET XX X.X XX showConfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/info</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="860eaa41-d4c0-4b28-9e32-132c7e894b18" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="1beb64fd-81c2-46b9-b690-f88938a487fc" name="hasVersion"> + <con:configuration> + <path>$.version</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="GroovyScriptAssertion" id="bf3730ab-4f4d-4167-b404-d09046ef994c" name="versionNotNull"> + <con:configuration> + <scriptText>import groovy.json.JsonSlurper + +json = new JsonSlurper().parseText(messageExchange.response.responseContent) +assert !(json.isEmpty()) + +assert json.version != null</scriptText> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="a525ec99-c1ee-4ed3-a1f4-19760fc2d1c0" name="supportedXPlanGmlVersions"> + <con:configuration> + <path>$.supportedXPlanGmlVersions</path> + <content>["XPLAN_40","XPLAN_41","XPLAN_50","XPLAN_51","XPLAN_52","XPLAN_53","XPLAN_54","XPLAN_60"]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET XX X.X XX invalidAcceptHeaderExpectError406" id="d28565da-26c0-4317-aa52-63895156e99a"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="ada729bc-f24a-41d6-bcf5-4dd34948e273" name="GET XX X.X XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/info</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="860eaa41-d4c0-4b28-9e32-132c7e894b18" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>406</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:properties/> + </con:testCase> + <con:testCase id="e68513c7-b782-498e-9a43-fab6619cbbb3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan" id="6b5d393f-424c-42fe-a468-ca531d60500d"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> + <con:configuration> + <path>$.uuid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:configuration> + <path>$.statusLink</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:configuration> + <path>$.statusLink.href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>internalId</con:name> + <con:value>soapui-test-id</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>planStatus</con:name> + <con:value>FESTGESTELLT</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="51ebcb92-bc33-47c6-9d74-b252f2f85fb6"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> + <con:sourcePath>$.uuid</con:sourcePath> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0.2 pf invalidProfile" id="236ab532-d435-41e6-abde-5689be19b3e6"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 pf invalidProfile" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> + <con:configuration> + <path>$.uuid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:configuration> + <path>$.statusLink</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:configuration> + <path>$.statusLink.href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>FP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>profiles</con:name> + <con:value>invalid</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="POST BP 6.0.2 pf invalidProfile Property Transfer" id="4539114b-8cab-4e41-ab2b-9f1094957446"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuidInvalidProfile</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0.2 pf invalidProfile</con:sourceStep> + <con:sourcePath>$.uuid</con:sourcePath> + <con:targetType>uuidInvalidProfile</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0.2 XX mismatchingContentTypeAndFileType" id="4132883a-577d-4e97-a182-5759d85f25f2"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 XX mismatchingContentTypeAndFileType" postQueryString="false" mediaType="text/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="c1df2d96-38e5-4318-8284-ad41312a8676" name="uuidExists"> + <con:configuration> + <path>$.uuid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="c1df2d96-38e5-4318-8284-ad41312a8676" name="statusLinkExists"> + <con:configuration> + <path>$.statusLink</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="c1df2d96-38e5-4318-8284-ad41312a8676" name="hrefExists"> + <con:configuration> + <path>$.statusLink.href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>text/xml</con:contentType> + <con:contentId>FP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="POST BP 6.0.2 XX mismatchingContentTypeAndFileType Property Transfer" id="5b0ec99a-1f44-466a-b4da-403b4d20455a"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuidMismatchingTypes</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0.2 XX mismatchingContentTypeAndFileType</con:sourceStep> + <con:sourcePath>$.uuid</con:sourcePath> + <con:targetType>uuidMismatchingTypes</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0.2 XX invalidXSSExpectError400" id="401dbcc9-16e7-47bf-a7ed-21612d9fbf6d"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 XX invalidXSSExpectError400" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="//"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>400</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="03a65e66-247d-401c-bf31-853be62db322"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 XX invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>406</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>FP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0 XX unsupportedMediaTypeZipExpectError415" id="5dfe142f-87e9-419c-b271-c608e7ec8393"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 XX unsupportedMediaTypeZipExpectError415" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>415</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>FP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/Blankenese29_Test_60_InvalidContent.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST XX X.X XX unsupportedMediaTypeOdtExpectError415" id="e7b57a24-6f3d-4127-a9c2-53742acf6fc2"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST XX X.X XX unsupportedMediaTypeOdtExpectError415" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>415</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>FP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/invalidContentType.odt</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:properties/> + </con:testCase> + <con:testCase id="0bd6341f-a662-4437-9ac7-b4c14284ff61" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/status/{uuid} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/status/{uuid}"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatus" id="21e02ed1-eb99-46e0-a831-776df2391487"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuid}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:configuration> + <path>$.status</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="groovy" name="pollStatus" id="07dfd200-af16-409e-9ec5-bf0d892d3f34"> + <con:settings/> + <con:config> + <script>import groovy.json.JsonSlurper + +def testStepName = "GET BP 6.0.2 XX pollStatus" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) + +if( context.loopIndex == null ) + context.loopIndex = 0 + +if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveStatus" id="7b5e345d-819e-4561-8158-053c5005060b"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuid}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> + <con:configuration> + <path>$.status</path> + <content>IMPORT_FINISHED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="320f668b-21ff-4589-a944-cfbd07931e2a" name="importedPlanIdsExists"> + <con:configuration> + <path>$.importedPlanIds</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> + <con:configuration> + <path>$.links</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="af671b26-7707-43bd-a3c9-5f085cd3dff5" name="schema report"> + <con:configuration> + <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].schema</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2#/components/schemas/ValidationReport.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="af671b26-7707-43bd-a3c9-5f085cd3dff5" name="schema planinfo"> + <con:configuration> + <path>$.links[?(@.rel == 'planinfo' && @.type == 'application/json')].schema</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>/api/v2#/components/schemas/PlanInfo</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="d9eefe15-72b1-4ead-a022-0839c587fcda" name="href report json"> + <con:configuration> + <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="d9eefe15-72b1-4ead-a022-0839c587fcda" name="href report pdf"> + <con:configuration> + <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="d9eefe15-72b1-4ead-a022-0839c587fcda" name="href planinfo"> + <con:configuration> + <path>$.links[?(@.rel == 'planinfo' && @.type == 'application/json')].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/plan/.*$</regEx> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="GET BP 6.0.2 XX retrieveStatus Property Transfer" id="185a9506-2d65-4ce0-8891-af698dcdca55"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>planIdProfile</con:name> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 4.1 sF,sS,pf importPlanWithProfil</con:sourceStep> - <con:sourcePath>$.id</con:sourcePath> - <con:targetType>planIdProfile</con:targetType> + <con:sourceStep>GET BP 6.0.2 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> + <con:targetType>planId</con:targetType> <con:targetStep>#TestSuite#</con:targetStep> <con:type>JSONPATH</con:type> <con:targetTransferType>JSONPATH</con:targetTransferType> @@ -22730,227 +24632,221 @@ assert expectedHeader == actualHeader</scriptText> </con:transfers> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="387666a7-3721-4a64-849f-9b8e20c83581" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId} TestCase" searchProperties="true"> - <con:settings/> - <con:testStep type="restrequest" name="DEL BP 4.1 pI deletePlanWithProfil" id="5a05a8ff-fbd1-4621-b965-2905c8431ae7"> - <con:settings/> - <con:config service="XPlanManagerAPI" resourcePath="/plan/{planId}" methodName="delete" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:restRequest name="DEL BP 4.1 pI deletePlanWithProfil" id="d1cd7d2d-f354-4a5a-9fa0-1137ede48dcd" mediaType="application/json" postQueryString="false"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/xmanager/api/v1</con:endpoint> - <con:request/> - <con:originalUri>http://localhost/xplan-manager-api/xmanager/api/v1/plan/</con:originalUri> - <con:assertion type="Valid HTTP Status Codes" id="859dc093-1e4d-4794-bcc1-58695077093f" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200,404</codes> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:domain xsi:nil="true"/> - <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> - <con:preemptive>true</con:preemptive> - <con:authType>No Authorization</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters> - <entry key="planId" value="${#TestSuite#planIdProfile}" xmlns="http://eviware.com/soapui/config"/> - </con:parameters> - </con:restRequest> - </con:config> - </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="aedaa003-bb2b-42b6-958c-57575e10ec85" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Cleanup Properties" searchProperties="true"> - <con:description>Gesetzte Werte werden wieder geleert</con:description> - <con:settings/> - <con:testStep type="transfer" name="Property Transfer" id="e40cda18-0926-49de-8cac-07dd1d3f6f89"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>profileId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>profileId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="false" disabled="false" entitize="false" ignoreEmpty="false" transferChildNodes="false" transferToAll="false" useXQuery="false"> - <con:name>planIdProfile</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:sourcePath xsi:nil="true"/> - <con:targetType>planIdProfile</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:targetPath xsi:nil="true"/> - <con:type>XPATH</con:type> - <con:targetTransferType>XPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:properties> - <con:property> - <con:name>empty</con:name> - <con:value/> - </con:property> - </con:properties> - </con:testCase> - <con:properties> - <con:property> - <con:name>profileId</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>planIdProfile</con:name> - <con:value/> - </con:property> - </con:properties> - </con:testSuite> - <con:testSuite id="a4f05c8c-eedf-42f6-be20-b18452375de0" name="XPlanManagerAPI v2 TestSuite"> - <con:description>TestSuite für XPlanManagerAPI version 2</con:description> - <con:settings/> - <con:runType>SEQUENTIAL</con:runType> - <con:testCase id="07ae12f0-ac5e-4cb1-8f1b-1e1eece581b8" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/ TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET XX X.X XX openAPI" id="f14c1458-23c0-457b-b6d6-4edf36743743"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatusInvalidProfile" id="3410ff8c-b573-44f7-a823-0aa74269ac72"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="726e80e0-3694-4e52-a9ca-a38258fe7503" name="GET XX X.X XX openAPI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatusInvalidProfile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidInvalidProfile}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="b1659bc9-5975-48fe-8c72-3bdf99daca0f" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="2e5a7efa-134b-4a50-b960-dff030686f34" name="openapi"> - <con:configuration> - <path>$.openapi</path> - <content>3.0.1</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="c7bcd776-0947-4d88-923d-e40eb4bb599c" name="info.version"> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> <con:configuration> - <path>$.info.version</path> + <path>$.status</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>2.*</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="338faceb-131f-43eb-bf38-2bf035ec149f" name="path /"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="groovy" name="pollStatusInvalidProfile" id="e41e9e45-1764-4625-9bf4-8f97f2e03b51"> + <con:settings/> + <con:config> + <script>import groovy.json.JsonSlurper + +def testStepName = "GET BP 6.0.2 XX pollStatusInvalidProfile" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) + +if( context.loopIndex == null ) + context.loopIndex = 0 + +if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidProfile" id="8307a0f5-93c1-464b-806a-e7ab8b510755"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidProfile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidInvalidProfile}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.paths./.get.operationId</path> - <content>openApi</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="338faceb-131f-43eb-bf38-2bf035ec149f" name="path /plan response 200 description"> + <con:assertion type="JsonPath Match" id="4f337b40-5001-46e3-ae48-6c4fcc1920a5" name="status"> <con:configuration> - <path>$.paths./plan.post.responses.200.description</path> - <content>ImportReceipt with uuid of the import</content> + <path>$.status</path> + <content>VALIDATION_FAILED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="338faceb-131f-43eb-bf38-2bf035ec149f" name="path /report/{uuid}"> + <con:assertion type="JsonPath Match" id="c1848a54-240f-4a71-a77d-d352334d6b1f" name="errorMsg"> <con:configuration> - <path>$.paths./report/{uuid}.get.operationId</path> - <content>reportByUuid</content> + <path>$.errorMsg</path> + <content>Profile with id invalid does not exist</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="2397109c-69bb-40f6-9b5a-2f5db5d69ade" name="path /report/{uuid}/geomfindings"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatusMismatchingTypes" id="41c913d2-42d4-4e18-8b73-8558153a656b"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatusMismatchingTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidMismatchingTypes}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.paths./report/{uuid}/geomfindings.get.operationId</path> - <content>geomfindingsByUuid</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="fc254bba-c565-40fd-be0b-d265e6144a76" name="path /report/{uuid}/geomfindings response 406 exists"> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> <con:configuration> - <path>$.paths./report/{uuid}/geomfindings.get.responses.406</path> + <path>$.status</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="GroovyScriptAssertion" id="eb77ee0a-79c2-4ea5-a3c0-4bc0011fcd06" name="path /report/{uuid}/geomfindings.json"> - <con:configuration> - <scriptText>import groovy.json.JsonSlurper - -def json = new JsonSlurper().parseText(messageExchange.response.responseContent) + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="groovy" name="pollStatusMismatchingTypes" id="3babb438-a8e0-4474-a305-647b06b616da"> + <con:settings/> + <con:config> + <script>import groovy.json.JsonSlurper -assert json.paths.'/report/{uuid}/geomfindings.json'.get.operationId == 'geomfindingsJsonByUuid'</scriptText> - </con:configuration> - </con:assertion> - <con:assertion type="GroovyScriptAssertion" id="01846f0c-e87d-4974-9eb6-38ed2e944029" name="path /report/{uuid}/geomfindings.json response 406 exists"> - <con:configuration> - <scriptText>import groovy.json.JsonSlurper +def testStepName = "GET BP 6.0.2 XX pollStatusMismatchingTypes" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) -def json = new JsonSlurper().parseText(messageExchange.response.responseContent) +if( context.loopIndex == null ) + context.loopIndex = 0 -assert json.paths.'/report/{uuid}/geomfindings.json'.get.responses.'406'</scriptText> +if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX mismatchingContentTypeAndFileType" id="376bae1d-09d7-4f00-803a-cb9da3c4b22b"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX mismatchingContentTypeAndFileType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidMismatchingTypes}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="baefa2ef-b925-44ef-b1bb-3e43e1a95a34" name="schema PlanInfo"> + <con:assertion type="JsonPath Match" id="4f337b40-5001-46e3-ae48-6c4fcc1920a5" name="status"> <con:configuration> - <path>$.components.schemas.PlanInfo</path> - <content>true</content> + <path>$.status</path> + <content>VALIDATION_FAILED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="a0fe450e-b235-4d07-bf3b-edd930c011f6" name="schema ValidationReport geomfindings"> + <con:assertion type="JsonPath Match" id="c1848a54-240f-4a71-a77d-d352334d6b1f" name="errorMsg"> <con:configuration> - <path>$.components.schemas.ValidationReport.properties.geomfindings.$ref</path> - <content>#/components/schemas/FeatureCollection</content> + <path>$.errorMsg</path> + <content>Could not read attached file as XPlanGML</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="GroovyScriptAssertion" id="4b10252b-c0ec-478b-8e74-b6f23c599c6b" name="securitySchemes"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="bbb4f23e-2fd0-4cab-856f-8cae8679b1a6"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/invalid</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <scriptText>import groovy.json.JsonSlurper - -def jwtUrl = context.testCase.testSuite.project.getPropertyValue("jwtUrl"); - -if (jwtUrl != ""){ - def response = messageExchange.response.responseContent - def json = new JsonSlurper().parseText(response) - - def type = json.components.securitySchemes.Bearer.type - def scheme = json.components.securitySchemes.Bearer.scheme - def bearerFormat = json.components.securitySchemes.Bearer.bearerFormat - - assert(type == "http") - assert(scheme == "bearer") - assert(bearerFormat == "JWT") -}</scriptText> + <codes>404</codes> </con:configuration> </con:assertion> <con:credentials> @@ -22966,15 +24862,15 @@ if (jwtUrl != ""){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET XX X.X XX invalidAcceptHeaderExpectError406" id="3b94ce9c-2426-464d-88fd-c906032c818c"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="6d808e19-6722-4ed2-ae65-8c16efcc698f"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="726e80e0-3694-4e52-a9ca-a38258fe7503" name="GET XX X.X XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="b1659bc9-5975-48fe-8c72-3bdf99daca0f" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>406</codes> </con:configuration> @@ -22994,45 +24890,35 @@ if (jwtUrl != ""){ </con:testStep> <con:properties/> </con:testCase> - <con:testCase id="9a952141-6600-4b2d-bccd-de0ce037bb89" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/info TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/info"-Pfad</con:description> + <con:testCase id="67870df1-23e1-4192-889c-1215d60abdef" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/report/{uuid} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/status/{uuid}"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET XX X.X XX showConfig" id="11e7c2b5-68da-4905-bd1c-1dcc75ca2195"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportJson" id="85410f40-220a-4e1a-9010-c0ea528c6445"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="ada729bc-f24a-41d6-bcf5-4dd34948e273" name="GET XX X.X XX showConfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/info</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="860eaa41-d4c0-4b28-9e32-132c7e894b18" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="1beb64fd-81c2-46b9-b690-f88938a487fc" name="hasVersion"> + <con:assertion type="JsonPath Match" id="f1ed37db-538c-4c70-b650-bde8b1c510e2" name="plans.name"> <con:configuration> - <path>$.version</path> - <content>true</content> + <path>$.plans[?(@.name == 'BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI')].name</path> + <content>[BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="GroovyScriptAssertion" id="bf3730ab-4f4d-4167-b404-d09046ef994c" name="versionNotNull"> - <con:configuration> - <scriptText>import groovy.json.JsonSlurper - -json = new JsonSlurper().parseText(messageExchange.response.responseContent) -assert !(json.isEmpty()) - -assert json.version != null</scriptText> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="a525ec99-c1ee-4ed3-a1f4-19760fc2d1c0" name="supportedXPlanGmlVersions"> + <con:assertion type="JsonPath Match" id="f1ed37db-538c-4c70-b650-bde8b1c510e2" name="plans.type"> <con:configuration> - <path>$.supportedXPlanGmlVersions</path> - <content>["XPLAN_40","XPLAN_41","XPLAN_50","XPLAN_51","XPLAN_52","XPLAN_53","XPLAN_54","XPLAN_60"]</content> + <path>$.plans[?(@.name == 'BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI')].type</path> + <content>[BP_Plan]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -23051,17 +24937,26 @@ assert json.version != null</scriptText> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET XX X.X XX invalidAcceptHeaderExpectError406" id="d28565da-26c0-4317-aa52-63895156e99a"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportPdf" id="e6cae4d0-b1ed-4ebd-980e-1258d6608047"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="ada729bc-f24a-41d6-bcf5-4dd34948e273" name="GET XX X.X XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/info</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="860eaa41-d4c0-4b28-9e32-132c7e894b18" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="XPath Match" id="e6a3edaf-71fd-4bc3-b441-7ed174a5932c" name="contentType"> + <con:configuration> + <path>/data/@contentType</path> + <content>application/pdf</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -23077,52 +24972,43 @@ assert json.version != null</scriptText> <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="e68513c7-b782-498e-9a43-fab6619cbbb3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan" id="6b5d393f-424c-42fe-a468-ca531d60500d"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="b62b4284-57e9-49e4-8f2c-b675d679c233"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-test"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/invalid</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> - <con:configuration> - <path>$.uuid</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.statusLink</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>404</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="b41034a8-dd5c-4b35-98a9-43ab9b8e2baa"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.statusLink.href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>406</codes> </con:configuration> </con:assertion> <con:credentials> @@ -23133,106 +25019,51 @@ assert json.version != null</scriptText> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>skipSemantisch</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipFlaechenschluss</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipGeltungsbereich</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipLaufrichtung</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter required="false" disableUrlEncoding="false"> - <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> - <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> - </con:parameter> - <con:parameter> - <con:name>planStatus</con:name> - <con:value>FESTGESTELLT</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> - </con:config> - </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="51ebcb92-bc33-47c6-9d74-b252f2f85fb6"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuid</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> - <con:sourcePath>$.uuid</con:sourcePath> - <con:targetType>uuid</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pf invalidProfile" id="236ab532-d435-41e6-abde-5689be19b3e6"> + <con:properties/> + </con:testCase> + <con:testCase id="9bed2e5b-6a9c-4da6-a527-01affd76103e" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/report/{uuid}/geomfindings TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/report/{uuid}/geomfindings"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveGeomfindings" id="88b564b2-2628-4f72-ac57-5d4ee11976eb"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 pf invalidProfile" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveGeomfindings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-test"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="type"> <con:configuration> - <path>$.uuid</path> - <content>true</content> + <path>$.type</path> + <content>FeatureCollection</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="bbox"> <con:configuration> - <path>$.statusLink</path> - <content>true</content> + <path>$.bbox</path> + <content>null</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="features"> <con:configuration> - <path>$.statusLink.href</path> - <content>true</content> + <path>$.features</path> + <content>[]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -23246,78 +25077,48 @@ assert json.version != null</scriptText> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>FP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>profiles</con:name> - <con:value>invalid</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0.2 pf invalidProfile Property Transfer" id="4539114b-8cab-4e41-ab2b-9f1094957446"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="29a869ba-0b72-4035-8d1d-37453b496b54"> <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuidInvalidProfile</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0.2 pf invalidProfile</con:sourceStep> - <con:sourcePath>$.uuid</con:sourcePath> - <con:targetType>uuidInvalidProfile</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/invalid/geomfindings</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>404</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 XX mismatchingContentTypeAndFileType" id="4132883a-577d-4e97-a182-5759d85f25f2"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="19ca2181-ad13-4ae6-b4fb-4b34de7568b6"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 XX mismatchingContentTypeAndFileType" postQueryString="false" mediaType="text/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c1df2d96-38e5-4318-8284-ad41312a8676" name="uuidExists"> - <con:configuration> - <path>$.uuid</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c1df2d96-38e5-4318-8284-ad41312a8676" name="statusLinkExists"> - <con:configuration> - <path>$.statusLink</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c1df2d96-38e5-4318-8284-ad41312a8676" name="hrefExists"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.statusLink.href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>406</codes> </con:configuration> </con:assertion> <con:credentials> @@ -23328,48 +25129,54 @@ assert json.version != null</scriptText> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>text/xml</con:contentType> - <con:contentId>FP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0.2 XX mismatchingContentTypeAndFileType Property Transfer" id="5b0ec99a-1f44-466a-b4da-403b4d20455a"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuidMismatchingTypes</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0.2 XX mismatchingContentTypeAndFileType</con:sourceStep> - <con:sourcePath>$.uuid</con:sourcePath> - <con:targetType>uuidMismatchingTypes</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 XX invalidXSSExpectError400" id="401dbcc9-16e7-47bf-a7ed-21612d9fbf6d"> + <con:properties/> + </con:testCase> + <con:testCase id="9b6558ff-76b1-4c95-9911-f521141fbcd9" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/report/{uuid}/geomfindings.json TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/report/{uuid}/geomfindings.json"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveGeomfindings" id="81505cf3-1b14-42ef-b175-3484cce434a0"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 XX invalidXSSExpectError400" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveGeomfindings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="//"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings.json</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="type"> + <con:configuration> + <path>$.type</path> + <content>FeatureCollection</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="bbox"> + <con:configuration> + <path>$.bbox</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="features"> <con:configuration> - <codes>400</codes> + <path>$.features</path> + <content>[]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -23380,62 +25187,49 @@ assert json.version != null</scriptText> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="03a65e66-247d-401c-bf31-853be62db322"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveGeomfindingsNoAcceptHeader" id="27a26a43-bd93-40e2-833c-48af5b6d3c7e"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 XX invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveGeomfindingsNoAcceptHeader" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings.json</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>200</codes> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>FP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0 XX unsupportedMediaTypeZipExpectError415" id="5dfe142f-87e9-419c-b271-c608e7ec8393"> - <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 XX unsupportedMediaTypeZipExpectError415" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="type"> <con:configuration> - <codes>415</codes> + <path>$.type</path> + <content>FeatureCollection</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="bbox"> + <con:configuration> + <path>$.bbox</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="features"> + <con:configuration> + <path>$.features</path> + <content>[]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -23446,29 +25240,22 @@ assert json.version != null</scriptText> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>FP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/Blankenese29_Test_60_InvalidContent.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST XX X.X XX unsupportedMediaTypeOdtExpectError415" id="e7b57a24-6f3d-4127-a9c2-53742acf6fc2"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="c917f544-3f02-4f23-a1f1-7e7835e246e6"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST XX X.X XX unsupportedMediaTypeOdtExpectError415" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/invalid/geomfindings.json</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>415</codes> + <codes>404</codes> </con:configuration> </con:assertion> <con:credentials> @@ -23479,43 +25266,22 @@ assert json.version != null</scriptText> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>FP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/invalidContentType.odt</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="0bd6341f-a662-4437-9ac7-b4c14284ff61" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/status/{uuid} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/status/{uuid}"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatus" id="21e02ed1-eb99-46e0-a831-776df2391487"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="e24f5ec0-e242-44fd-9516-ed95e0f61ff3"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings.json</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.status</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>406</codes> </con:configuration> </con:assertion> <con:credentials> @@ -23531,164 +25297,110 @@ assert json.version != null</scriptText> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="07dfd200-af16-409e-9ec5-bf0d892d3f34"> - <con:settings/> - <con:config> - <script>import groovy.json.JsonSlurper - -def testStepName = "GET BP 6.0.2 XX pollStatus" -def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") -def json = new JsonSlurper().parseText(response) - -if( context.loopIndex == null ) - context.loopIndex = 0 - -if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ - sleep(1000) - testRunner.gotoStepByName(testStepName) -} else if (context.loopIndex == 40) { - context.loopIndex = null - assert(false) -} else { - context.loopIndex = null -}</script> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveStatus" id="7b5e345d-819e-4561-8158-053c5005060b"> + <con:properties/> + </con:testCase> + <con:testCase id="6d00085e-8474-4a41-b422-5187e0c865a4" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plans TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plans"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET BP 6.0.2 pN getByPlanName" id="378a5ad5-02d4-435c-bfac-610cbfe4d3c0"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="241a13cd-fc19-4992-83ba-d7e6b56b3743" name="GET BP 6.0.2 pN getByPlanName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="e21d229a-4da0-46d6-95ba-9d521f98ad6d" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="type"> <con:configuration> - <path>$.status</path> - <content>IMPORT_FINISHED</content> + <path>$[0].type</path> + <content>BP_Plan</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="320f668b-21ff-4589-a944-cfbd07931e2a" name="importedPlanIdsExists"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="version"> <con:configuration> - <path>$.importedPlanIds</path> - <content>true</content> + <path>$[0].version</path> + <content>XPLAN_60</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="planStatus"> <con:configuration> - <path>$.links</path> - <content>true</content> + <path>$[0].planStatus</path> + <content>FESTGESTELLT</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="af671b26-7707-43bd-a3c9-5f085cd3dff5" name="schema report"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.ags"> <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].schema</path> - <content>true</content> + <path>$[0].xplanModelData.gemeinden[0].ags</path> + <content>02000000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2#/components/schemas/ValidationReport.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="af671b26-7707-43bd-a3c9-5f085cd3dff5" name="schema planinfo"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.gemeindeName"> <con:configuration> - <path>$.links[?(@.rel == 'planinfo' && @.type == 'application/json')].schema</path> - <content>false</content> + <path>$[0].xplanModelData.gemeinden[0].gemeindeName</path> + <content>Freie und Hansestadt Hamburg</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>/api/v2#/components/schemas/PlanInfo</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="d9eefe15-72b1-4ead-a022-0839c587fcda" name="href report json"> + <con:assertion type="JsonPath RegEx Match" id="661feb7b-2379-46aa-a994-f7034df08aaf" name="link self"> <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> + <path>$[0].links[?(@.rel == 'self' && (@.type == 'application/json'))].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> + <regEx>^.*/api/v2/plan/.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="d9eefe15-72b1-4ead-a022-0839c587fcda" name="href report pdf"> + <con:assertion type="JsonPath Count" id="1f02b841-df99-4f50-bc12-f75834e396e0" name="link self count"> <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> - <content>true</content> + <path>$[0].links[?(@.rel == 'self')]</path> + <content>1</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="d9eefe15-72b1-4ead-a022-0839c587fcda" name="href planinfo"> + <con:assertion type="JsonPath RegEx Match" id="39a75872-c3c6-4fe9-ac53-858e3008c208" name="link planwerkwms"> <con:configuration> - <path>$.links[?(@.rel == 'planinfo' && @.type == 'application/json')].href</path> + <path>$[0].links[?(@.rel == 'planwerkwms')].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/plan/.*$</regEx> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="transfer" name="GET BP 6.0.2 XX retrieveStatus Property Transfer" id="185a9506-2d65-4ce0-8891-af698dcdca55"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>planId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET BP 6.0.2 XX retrieveStatus</con:sourceStep> - <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> - <con:targetType>planId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatusInvalidProfile" id="3410ff8c-b573-44f7-a823-0aa74269ac72"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatusInvalidProfile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidInvalidProfile}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <regEx>^.*/services/planwerkwms/planname/.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="57fc059a-8898-4adf-9161-588cdaa49fbf" name="geltungsbereichWGS84.type"> <con:configuration> - <codes>200</codes> + <path>$[0].geltungsbereichWGS84.type</path> + <content>Polygon</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:assertion type="JsonPath Existence Match" id="4e500b26-89ef-4749-b0fd-707dc9ec031a" name="geltungsbereichWGS84.coordinates exists"> <con:configuration> - <path>$.status</path> + <path>$[0].geltungsbereichWGS84.coordinates</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> @@ -23705,189 +25417,114 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="groovy" name="pollStatusInvalidProfile" id="e41e9e45-1764-4625-9bf4-8f97f2e03b51"> - <con:settings/> - <con:config> - <script>import groovy.json.JsonSlurper - -def testStepName = "GET BP 6.0.2 XX pollStatusInvalidProfile" -def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") -def json = new JsonSlurper().parseText(response) - -if( context.loopIndex == null ) - context.loopIndex = 0 - -if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ - sleep(1000) - testRunner.gotoStepByName(testStepName) -} else if (context.loopIndex == 40) { - context.loopIndex = null - assert(false) -} else { - context.loopIndex = null -}</script> + <con:parameters> + <con:parameter> + <con:name>planName</con:name> + <con:value>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>includeGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidProfile" id="8307a0f5-93c1-464b-806a-e7ab8b510755"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI getByPlanId" id="075daffd-664c-441f-b138-6fe75430bc69"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidProfile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="241a13cd-fc19-4992-83ba-d7e6b56b3743" name="GET BP 6.0.2 pI getByPlanId" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidInvalidProfile}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="e21d229a-4da0-46d6-95ba-9d521f98ad6d" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="4f337b40-5001-46e3-ae48-6c4fcc1920a5" name="status"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="type"> <con:configuration> - <path>$.status</path> - <content>VALIDATION_FAILED</content> + <path>$[0].type</path> + <content>BP_Plan</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="c1848a54-240f-4a71-a77d-d352334d6b1f" name="errorMsg"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="version"> <con:configuration> - <path>$.errorMsg</path> - <content>Profile with id invalid does not exist</content> + <path>$[0].version</path> + <content>XPLAN_60</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatusMismatchingTypes" id="41c913d2-42d4-4e18-8b73-8558153a656b"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatusMismatchingTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidMismatchingTypes}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="planStatus"> <con:configuration> - <codes>200</codes> + <path>$[0].planStatus</path> + <content>FESTGESTELLT</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.ags"> <con:configuration> - <path>$.status</path> - <content>true</content> + <path>$[0].xplanModelData.gemeinden[0].ags</path> + <content>02000000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="groovy" name="pollStatusMismatchingTypes" id="3babb438-a8e0-4474-a305-647b06b616da"> - <con:settings/> - <con:config> - <script>import groovy.json.JsonSlurper - -def testStepName = "GET BP 6.0.2 XX pollStatusMismatchingTypes" -def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") -def json = new JsonSlurper().parseText(response) - -if( context.loopIndex == null ) - context.loopIndex = 0 - -if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ - sleep(1000) - testRunner.gotoStepByName(testStepName) -} else if (context.loopIndex == 40) { - context.loopIndex = null - assert(false) -} else { - context.loopIndex = null -}</script> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX mismatchingContentTypeAndFileType" id="376bae1d-09d7-4f00-803a-cb9da3c4b22b"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX mismatchingContentTypeAndFileType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuidMismatchingTypes}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.gemeindeName"> <con:configuration> - <codes>200</codes> + <path>$[0].xplanModelData.gemeinden[0].gemeindeName</path> + <content>Freie und Hansestadt Hamburg</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="4f337b40-5001-46e3-ae48-6c4fcc1920a5" name="status"> + <con:assertion type="JsonPath RegEx Match" id="661feb7b-2379-46aa-a994-f7034df08aaf" name="link self"> <con:configuration> - <path>$.status</path> - <content>VALIDATION_FAILED</content> + <path>$[0].links[?(@.rel == 'self' && (@.type == 'application/json'))].href</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/plan/.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="c1848a54-240f-4a71-a77d-d352334d6b1f" name="errorMsg"> + <con:assertion type="JsonPath Count" id="1f02b841-df99-4f50-bc12-f75834e396e0" name="link self count"> <con:configuration> - <path>$.errorMsg</path> - <content>Could not read attached file as XPlanGML</content> + <path>$[0].links[?(@.rel == 'self')]</path> + <content>1</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="bbb4f23e-2fd0-4cab-856f-8cae8679b1a6"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/invalid</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath RegEx Match" id="c4de6278-26a0-4499-b07a-a01eb57cafd2" name="link planwerkwms"> <con:configuration> - <codes>404</codes> + <path>$[0].links[?(@.rel == 'planwerkwms')].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/services/planwerkwms/planname/.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="XPath Match" id="c49ca5e9-39d5-475d-b721-c32dc9fe86e5" name="geltungsbereichWGS84"> + <con:configuration> + <path>exists(//*:geltungsbereichWGS84)</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -23900,18 +25537,24 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>planId</con:name> + <con:value>${#TestSuite#planId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="6d808e19-6722-4ed2-ae65-8c16efcc698f"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pN invalidAcceptHeaderExpectError406" id="cbb9bf86-65c4-4e27-9ea9-91ec18b81012"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="241a13cd-fc19-4992-83ba-d7e6b56b3743" name="GET BP 6.0.2 pN invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestSuite#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="e21d229a-4da0-46d6-95ba-9d521f98ad6d" name="Valid HTTP Status Codes"> <con:configuration> <codes>406</codes> </con:configuration> @@ -23926,40 +25569,37 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>planName</con:name> + <con:value>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> <con:properties/> </con:testCase> - <con:testCase id="67870df1-23e1-4192-889c-1215d60abdef" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/report/{uuid} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/status/{uuid}"-Pfad</con:description> + <con:testCase id="2150525e-2aeb-46bc-bc45-a9d05a41995a" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/archive TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/archive"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportJson" id="85410f40-220a-4e1a-9010-c0ea528c6445"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI getArchiveById" id="3c7a13c1-91ed-45bc-a1a8-dae32811ec02"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI getArchiveById" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/zip" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/archive</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="f1ed37db-538c-4c70-b650-bde8b1c510e2" name="plans.name"> - <con:configuration> - <path>$.plans[?(@.name == 'BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI')].name</path> - <content>[BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f1ed37db-538c-4c70-b650-bde8b1c510e2" name="plans.type"> + <con:assertion type="XPath Match" id="0cafd298-2bed-4e17-81ec-6884448ebe77" name="contentType"> <con:configuration> - <path>$.plans[?(@.name == 'BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI')].type</path> - <content>[BP_Plan]</content> + <path>/data/@contentType</path> + <content>application/zip</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -23978,26 +25618,17 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportPdf" id="e6cae4d0-b1ed-4ebd-980e-1258d6608047"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="4873d48d-ee5a-4896-96f7-2e9504591f90"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/zip" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/archive</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="XPath Match" id="e6a3edaf-71fd-4bc3-b441-7ed174a5932c" name="contentType"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <path>/data/@contentType</path> - <content>application/pdf</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>400</codes> </con:configuration> </con:assertion> <con:credentials> @@ -24013,15 +25644,15 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="b62b4284-57e9-49e4-8f2c-b675d679c233"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="fc0defba-fc1e-4de2-8d15-97d676688c73"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/zip" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/invalid</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/archive</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>404</codes> </con:configuration> @@ -24039,15 +25670,15 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="b41034a8-dd5c-4b35-98a9-43ab9b8e2baa"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="015a3f06-7310-4423-94b1-7fa1b94f582e"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/archive</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>406</codes> </con:configuration> @@ -24067,44 +25698,44 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:testStep> <con:properties/> </con:testCase> - <con:testCase id="9bed2e5b-6a9c-4da6-a527-01affd76103e" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/report/{uuid}/geomfindings TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/report/{uuid}/geomfindings"-Pfad</con:description> + <con:testCase id="3b8ec81f-78d9-48ae-920c-e17c55d22c2f" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/basisdaten TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/basisdaten"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveGeomfindings" id="88b564b2-2628-4f72-ac57-5d4ee11976eb"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI getBasisdaten" id="9767ff03-4166-40a9-898a-417e1764a336"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveGeomfindings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getBasisdaten" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="type"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="name"> <con:configuration> - <path>$.type</path> - <content>FeatureCollection</content> + <path>$.name</path> + <content>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="bbox"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="planArt"> <con:configuration> - <path>$.bbox</path> - <content>null</content> + <path>$.planArt</path> + <content>1000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="features"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="rechtsstand"> <con:configuration> - <path>$.features</path> - <content>[]</content> + <path>$.rechtsstand</path> + <content>3000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -24113,6 +25744,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24123,17 +25755,17 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="29a869ba-0b72-4035-8d1d-37453b496b54"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="472a928d-ed1b-4591-9b50-7fb69cc6324e"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/invalid/geomfindings</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/basisdaten</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>404</codes> + <codes>400</codes> </con:configuration> </con:assertion> <con:credentials> @@ -24149,17 +25781,17 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="19ca2181-ad13-4ae6-b4fb-4b34de7568b6"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="c984f858-a128-40eb-8b98-7f1f03105d16"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/basisdaten</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>404</codes> </con:configuration> </con:assertion> <con:credentials> @@ -24175,49 +25807,17 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="9b6558ff-76b1-4c95-9911-f521141fbcd9" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/report/{uuid}/geomfindings.json TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/report/{uuid}/geomfindings.json"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveGeomfindings" id="81505cf3-1b14-42ef-b175-3484cce434a0"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="526bd21f-82e8-44a9-a22e-a643005c67b5"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveGeomfindings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings.json</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="type"> - <con:configuration> - <path>$.type</path> - <content>FeatureCollection</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="bbox"> - <con:configuration> - <path>$.bbox</path> - <content>null</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="features"> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.features</path> - <content>[]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>406</codes> </con:configuration> </con:assertion> <con:credentials> @@ -24233,41 +25833,77 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveGeomfindingsNoAcceptHeader" id="27a26a43-bd93-40e2-833c-48af5b6d3c7e"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI replaceBasisdaten" id="f5a5b269-7f4e-46f3-9666-1cf581178783"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveGeomfindingsNoAcceptHeader" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI replaceBasisdaten" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings.json</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> + <con:request>{ + "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", + "beschreibung": null, + "planArt": 1000, + "verfahren": null, + "rechtsstand": 3000, + "rechtsverordnungsDatum": "2024-08-19", + "technHerstellDatum": "2024-08-18", + "untergangsDatum": "2054-08-19" +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="type"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="name"> <con:configuration> - <path>$.type</path> - <content>FeatureCollection</content> + <path>$.name</path> + <content>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="bbox"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="planArt"> <con:configuration> - <path>$.bbox</path> - <content>null</content> + <path>$.planArt</path> + <content>1000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d7f432a9-5dd7-46bb-80ad-e8e78f623aa8" name="features"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="rechtsstand"> <con:configuration> - <path>$.features</path> - <content>[]</content> + <path>$.rechtsstand</path> + <content>3000</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="462dac20-7d34-4b9d-b5ef-4a7d0e4ec044" name="rechtsverordnungsDatum"> + <con:configuration> + <path>$.rechtsverordnungsDatum</path> + <content>2024-08-19</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="462dac20-7d34-4b9d-b5ef-4a7d0e4ec044" name="technHerstellDatum"> + <con:configuration> + <path>$.technHerstellDatum</path> + <content>2024-08-18</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="462dac20-7d34-4b9d-b5ef-4a7d0e4ec044" name="untergangsDatum"> + <con:configuration> + <path>$.untergangsDatum</path> + <content>2054-08-19</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -24276,6 +25912,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24286,15 +25923,60 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidUuidExpectError404" id="c917f544-3f02-4f23-a1f1-7e7835e246e6"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="05b528fc-4add-465d-b4fe-428da58dfa9e"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidUuidExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/basisdaten</con:endpoint> + <con:request>{ + "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", + "beschreibung": null, + "planArt": 1000, + "verfahren": null, + "rechtsstand": 3000, + "rechtsverordnungsDatum": null, + "technHerstellDatum": null, + "untergangsDatum": null +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>400</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" id="5ef8a26b-714e-49b3-8a29-2b75cb1a576e"> + <con:settings/> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/invalid/geomfindings.json</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/basisdaten</con:endpoint> + <con:request>{ + "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", + "beschreibung": null, + "planArt": 1000, + "verfahren": null, + "rechtsstand": 3000, + "rechtsverordnungsDatum": null, + "technHerstellDatum": null, + "untergangsDatum": null +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>404</codes> </con:configuration> @@ -24302,6 +25984,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24312,15 +25995,24 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" id="e24f5ec0-e242-44fd-9516-ed95e0f61ff3"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="cc325cd8-dab8-4fdc-a8a8-eb548f6ba1ff"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestSuite#uuid}/geomfindings.json</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> + <con:request>{ + "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", + "beschreibung": null, + "planArt": 1000, + "verfahren": null, + "rechtsstand": 3000, + "rechtsverordnungsDatum": null, + "technHerstellDatum": null, + "untergangsDatum": null +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>406</codes> </con:configuration> @@ -24328,6 +26020,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24338,119 +26031,32 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="6d00085e-8474-4a41-b422-5187e0c865a4" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plans TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plans"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pN getByPlanName" id="378a5ad5-02d4-435c-bfac-610cbfe4d3c0"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI xssExpectError400" id="839598ba-cc6a-4f56-a75d-bded567ea850"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="241a13cd-fc19-4992-83ba-d7e6b56b3743" name="GET BP 6.0.2 pN getByPlanName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI xssExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="e21d229a-4da0-46d6-95ba-9d521f98ad6d" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="type"> - <con:configuration> - <path>$[0].type</path> - <content>BP_Plan</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="version"> - <con:configuration> - <path>$[0].version</path> - <content>XPLAN_60</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="planStatus"> - <con:configuration> - <path>$[0].planStatus</path> - <content>FESTGESTELLT</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.ags"> - <con:configuration> - <path>$[0].xplanModelData.gemeinden[0].ags</path> - <content>02000000</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.gemeindeName"> - <con:configuration> - <path>$[0].xplanModelData.gemeinden[0].gemeindeName</path> - <content>Freie und Hansestadt Hamburg</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="661feb7b-2379-46aa-a994-f7034df08aaf" name="link self"> - <con:configuration> - <path>$[0].links[?(@.rel == 'self' && (@.type == 'application/json'))].href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/plan/.*$</regEx> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Count" id="1f02b841-df99-4f50-bc12-f75834e396e0" name="link self count"> - <con:configuration> - <path>$[0].links[?(@.rel == 'self')]</path> - <content>1</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="39a75872-c3c6-4fe9-ac53-858e3008c208" name="link planwerkwms"> - <con:configuration> - <path>$[0].links[?(@.rel == 'planwerkwms')].href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - <regEx>^.*/services/planwerkwms/planname/.*$</regEx> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="57fc059a-8898-4adf-9161-588cdaa49fbf" name="geltungsbereichWGS84.type"> - <con:configuration> - <path>$[0].geltungsbereichWGS84.type</path> - <content>Polygon</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="4e500b26-89ef-4749-b0fd-707dc9ec031a" name="geltungsbereichWGS84.coordinates exists"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> + <con:request>{ + "name": "ffXSSTestﬕ", + "beschreibung": null, + "planArt": 1000, + "verfahren": null, + "rechtsstand": 3000, + "rechtsverordnungsDatum": null, + "technHerstellDatum": null, + "untergangsDatum": null +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <path>$[0].geltungsbereichWGS84.coordinates</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>400</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24458,111 +26064,40 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>planName</con:name> - <con:value>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>includeGeltungsbereich</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI getByPlanId" id="075daffd-664c-441f-b138-6fe75430bc69"> + <con:properties/> + </con:testCase> + <con:testCase id="93feb88e-f923-4e62-bd1e-4638a2526b04" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/aenderungen TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/aenderungen"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI getAenderungen" id="c93b560c-ae99-4163-a86e-a171710a2cb2"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="241a13cd-fc19-4992-83ba-d7e6b56b3743" name="GET BP 6.0.2 pI getByPlanId" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getAenderungen" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="e21d229a-4da0-46d6-95ba-9d521f98ad6d" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="type"> - <con:configuration> - <path>$[0].type</path> - <content>BP_Plan</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="version"> - <con:configuration> - <path>$[0].version</path> - <content>XPLAN_60</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="planStatus"> - <con:configuration> - <path>$[0].planStatus</path> - <content>FESTGESTELLT</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.ags"> - <con:configuration> - <path>$[0].xplanModelData.gemeinden[0].ags</path> - <content>02000000</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="6045130d-e4df-49a7-883b-3688df7dc91b" name="gemeinden.gemeindeName"> - <con:configuration> - <path>$[0].xplanModelData.gemeinden[0].gemeindeName</path> - <content>Freie und Hansestadt Hamburg</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="661feb7b-2379-46aa-a994-f7034df08aaf" name="link self"> - <con:configuration> - <path>$[0].links[?(@.rel == 'self' && (@.type == 'application/json'))].href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/plan/.*$</regEx> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Count" id="1f02b841-df99-4f50-bc12-f75834e396e0" name="link self count"> - <con:configuration> - <path>$[0].links[?(@.rel == 'self')]</path> - <content>1</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="c4de6278-26a0-4499-b07a-a01eb57cafd2" name="link planwerkwms"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="aendert"> <con:configuration> - <path>$[0].links[?(@.rel == 'planwerkwms')].href</path> - <content>true</content> + <path>$.aendert</path> + <content>[]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/services/planwerkwms/planname/.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="XPath Match" id="c49ca5e9-39d5-475d-b721-c32dc9fe86e5" name="geltungsbereichWGS84"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="wurdeGeaendertVon"> <con:configuration> - <path>exists(//*:geltungsbereichWGS84)</path> - <content>false</content> + <path>$.wurdeGeaendertVon</path> + <content>[]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -24571,6 +26106,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24578,24 +26114,72 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>planId</con:name> - <con:value>${#TestSuite#planId}</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pN invalidAcceptHeaderExpectError406" id="cbb9bf86-65c4-4e27-9ea9-91ec18b81012"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="e30a3193-444a-4edb-a047-9652a4841e4a"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="241a13cd-fc19-4992-83ba-d7e6b56b3743" name="GET BP 6.0.2 pN invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/aenderungen</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>400</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="938d495a-1813-4fcd-beba-67e7dbe3f9ec"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/aenderungen</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>404</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="4ecad8dc-3b11-4f71-8a07-b22272f824dc"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="e21d229a-4da0-46d6-95ba-9d521f98ad6d" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>406</codes> </con:configuration> @@ -24603,6 +26187,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24610,37 +26195,60 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>planName</con:name> - <con:value>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="2150525e-2aeb-46bc-bc45-a9d05a41995a" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/archive TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/archive"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI getArchiveById" id="3c7a13c1-91ed-45bc-a1a8-dae32811ec02"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI replaceAenderung" id="2db9d6e5-644b-4fb3-ae34-2424b982e4e8"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI getArchiveById" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI replaceAenderung" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/zip" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/archive</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> + <con:request>{ + "aendert": [ { + "planName": "geaendert", + "rechtscharakter": 1000, + "nummer": "1.1" + }], + "wurdeGeaendertVon": [] +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="XPath Match" id="0cafd298-2bed-4e17-81ec-6884448ebe77" name="contentType"> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="planName"> <con:configuration> - <path>/data/@contentType</path> - <content>application/zip</content> + <path>$.aendert[0].planName</path> + <content>geaendert</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="rechtscharakter"> + <con:configuration> + <path>$.aendert[0].rechtscharakter</path> + <content>1000</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="nummer"> + <con:configuration> + <path>$.aendert[0].nummer</path> + <content>1.1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="wurdeGeaendertVon"> + <con:configuration> + <path>$.wurdeGeaendertVon</path> + <content>[]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -24649,6 +26257,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24659,15 +26268,22 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="4873d48d-ee5a-4896-96f7-2e9504591f90"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="9c845e83-9e6b-4fe6-a54f-6b7fc775c501"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/zip" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/archive</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/aenderungen</con:endpoint> + <con:request>{ + "aendert": [ { + "planName": "geaendert", + "rechtscharakter": 1000, + "nummer": "1.1" + }], + "wurdeGeaendertVon": [] +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>400</codes> </con:configuration> @@ -24675,6 +26291,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24685,15 +26302,22 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="fc0defba-fc1e-4de2-8d15-97d676688c73"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" id="db1c0f87-e4e6-42b3-8d45-594c99fc8544"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/zip" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/archive</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/aenderungen</con:endpoint> + <con:request>{ + "aendert": [ { + "planName": "geaendert", + "rechtscharakter": 1000, + "nummer": "1.1" + }], + "wurdeGeaendertVon": [] +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>404</codes> </con:configuration> @@ -24701,6 +26325,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24711,15 +26336,22 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="015a3f06-7310-4423-94b1-7fa1b94f582e"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="758cf285-c79f-45a2-9d5e-0f5591822afa"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/archive</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> + <con:request>{ + "aendert": [ { + "planName": "geaendert", + "rechtscharakter": 1000, + "nummer": "1.1" + }], + "wurdeGeaendertVon": [] +}</con:request> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>406</codes> </con:configuration> @@ -24727,6 +26359,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24737,49 +26370,56 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="3b8ec81f-78d9-48ae-920c-e17c55d22c2f" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/basisdaten TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/basisdaten"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI getBasisdaten" id="9767ff03-4166-40a9-898a-417e1764a336"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI xssExpectError400" id="115d3e56-7f99-4f4e-b707-bf0037290c53"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getBasisdaten" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI xssExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> - <con:request/> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> + <con:request>{ + "aendert": [ { + "planName": "ffXSSTestﬕ", + "rechtscharakter": 1000, + "nummer": "1.1" + }], + "wurdeGeaendertVon": [] +}</con:request> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="name"> - <con:configuration> - <path>$.name</path> - <content>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="planArt"> - <con:configuration> - <path>$.planArt</path> - <content>1000</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>400</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="rechtsstand"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:properties/> + </con:testCase> + <con:testCase id="080643b5-a241-41a5-b422-46d67c997820" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/text TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/text"-Pfad</con:description> + <con:settings/> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI getTexte" id="4fc99a55-fd0b-4c65-befe-2bbb6ea14aaa"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getTexte" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.rechtsstand</path> - <content>3000</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>200</codes> </con:configuration> </con:assertion> <con:credentials> @@ -24796,13 +26436,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="472a928d-ed1b-4591-9b50-7fb69cc6324e"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="f7f5d700-a4a5-4c6d-8b5c-82943c66b93c"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/basisdaten</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -24812,6 +26452,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24822,13 +26463,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="c984f858-a128-40eb-8b98-7f1f03105d16"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="8294a8c9-009b-40ee-b0ca-a4cfc2f90d51"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/basisdaten</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -24838,6 +26479,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24848,13 +26490,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="526bd21f-82e8-44a9-a22e-a643005c67b5"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="ac91dcc3-ed28-40f2-9e0a-333afc1edef6"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -24864,6 +26506,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> + <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -24874,82 +26517,37 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI replaceBasisdaten" id="f5a5b269-7f4e-46f3-9666-1cf581178783"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI addText" id="ded1d86e-6533-4243-9012-86bb6761305f"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI replaceBasisdaten" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI addText" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> - <con:request>{ - "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", - "beschreibung": null, - "planArt": 1000, - "verfahren": null, - "rechtsstand": 3000, - "rechtsverordnungsDatum": "2024-08-19", - "technHerstellDatum": "2024-08-18", - "untergangsDatum": "2054-08-19" -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="name"> - <con:configuration> - <path>$.name</path> - <content>BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="planArt"> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="schluessel"> <con:configuration> - <path>$.planArt</path> - <content>1000</content> + <path>$.schluessel</path> + <content>HN 9 geaendert</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="rechtsstand"> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="rechtscharakter"> <con:configuration> - <path>$.rechtsstand</path> + <path>$.rechtscharakter</path> <content>3000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="462dac20-7d34-4b9d-b5ef-4a7d0e4ec044" name="rechtsverordnungsDatum"> - <con:configuration> - <path>$.rechtsverordnungsDatum</path> - <content>2024-08-19</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="462dac20-7d34-4b9d-b5ef-4a7d0e4ec044" name="technHerstellDatum"> - <con:configuration> - <path>$.technHerstellDatum</path> - <content>2024-08-18</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="462dac20-7d34-4b9d-b5ef-4a7d0e4ec044" name="untergangsDatum"> - <con:configuration> - <path>$.untergangsDatum</path> - <content>2054-08-19</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> @@ -24959,28 +26557,49 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="05b528fc-4add-465d-b4fe-428da58dfa9e"> + <con:testStep type="transfer" name="POST BP 6.0.2 pI addText Property Transfer" id="2a74f745-5a65-4e4f-be65-849be6ce75f7"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>textId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0.2 pI addText</con:sourceStep> + <con:sourcePath>$.id</con:sourcePath> + <con:targetType>textId</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="b573ebde-77c0-4111-a958-34a9c6133822"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/basisdaten</con:endpoint> - <con:request>{ - "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", - "beschreibung": null, - "planArt": 1000, - "verfahren": null, - "rechtsstand": 3000, - "rechtsverordnungsDatum": null, - "technHerstellDatum": null, - "untergangsDatum": null -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>400</codes> @@ -24995,28 +26614,33 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" id="5ef8a26b-714e-49b3-8a29-2b75cb1a576e"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" id="148c2420-0b5a-4854-89ed-0348320170f4"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/basisdaten</con:endpoint> - <con:request>{ - "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", - "beschreibung": null, - "planArt": 1000, - "verfahren": null, - "rechtsstand": 3000, - "rechtsverordnungsDatum": null, - "technHerstellDatum": null, - "untergangsDatum": null -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>404</codes> @@ -25031,28 +26655,33 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="cc325cd8-dab8-4fdc-a8a8-eb548f6ba1ff"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="a4c5e2c9-1429-409f-b293-2d325a0e6585"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> - <con:request>{ - "name": "BPlan_SO-Objekte-Test_6-0-2_SoapUI-XPlanManagerAPI-modified", - "beschreibung": null, - "planArt": 1000, - "verfahren": null, - "rechtsstand": 3000, - "rechtsverordnungsDatum": null, - "technHerstellDatum": null, - "untergangsDatum": null -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>406</codes> @@ -25067,28 +26696,74 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" id="d2c57e66-16c2-4fe7-aeee-173ad067ea9f"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>415</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI xssExpectError400" id="839598ba-cc6a-4f56-a75d-bded567ea850"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" id="7677393b-bea9-497c-a230-1d473ba2cada"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI xssExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/basisdaten</con:endpoint> - <con:request>{ - "name": "ffXSSTestﬕ", - "beschreibung": null, - "planArt": 1000, - "verfahren": null, - "rechtsstand": 3000, - "rechtsverordnungsDatum": null, - "technHerstellDatum": null, - "untergangsDatum": null -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>400</codes> @@ -25103,6 +26778,20 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postTextInvalidContent.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> @@ -25110,35 +26799,44 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:testStep> <con:properties/> </con:testCase> - <con:testCase id="93feb88e-f923-4e62-bd1e-4638a2526b04" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/aenderungen TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/aenderungen"-Pfad</con:description> + <con:testCase id="da0530c0-34be-4674-be0a-c66442e5d24d" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/text/{id} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/text/{id}"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI getAenderungen" id="c93b560c-ae99-4163-a86e-a171710a2cb2"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id getTextById" id="df9fa718-9e7e-4df0-a7b2-a5c14ce7ce14"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getAenderungen" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id getTextById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="aendert"> + <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="id"> <con:configuration> - <path>$.aendert</path> - <content>[]</content> + <path>$.id</path> + <content>${#TestSuite#textId}</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="wurdeGeaendertVon"> + <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="schluessel"> <con:configuration> - <path>$.wurdeGeaendertVon</path> - <content>[]</content> + <path>$.schluessel</path> + <content>HN 9 geaendert</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="rechtscharakter"> + <con:configuration> + <path>$.rechtscharakter</path> + <content>3000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -25158,13 +26856,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="e30a3193-444a-4edb-a047-9652a4841e4a"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="a2a2e844-c1cd-401d-a657-669466d34e2b"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/aenderungen</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text/invalid</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25185,13 +26883,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="938d495a-1813-4fcd-beba-67e7dbe3f9ec"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" id="3bd21efb-918e-43e7-b942-0cc2414c6214"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/aenderungen</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text/999999999</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25212,13 +26910,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="4ecad8dc-3b11-4f71-8a07-b22272f824dc"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="ae1381f2-124c-45b0-800a-868c6fb22594"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25239,57 +26937,41 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI replaceAenderung" id="2db9d6e5-644b-4fb3-ae34-2424b982e4e8"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id replaceTextById" id="a6cc6bc2-7065-4de9-9051-c81484e62636"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI replaceAenderung" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id replaceTextById" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> - <con:request>{ - "aendert": [ { - "planName": "geaendert", - "rechtscharakter": 1000, - "nummer": "1.1" - }], - "wurdeGeaendertVon": [] -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="planName"> - <con:configuration> - <path>$.aendert[0].planName</path> - <content>geaendert</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="rechtscharakter"> + <con:assertion type="JsonPath Match" id="92560390-05d4-48e4-9680-b882e944790c" name="id"> <con:configuration> - <path>$.aendert[0].rechtscharakter</path> - <content>1000</content> + <path>$.id</path> + <content>${#TestSuite#textId}</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="nummer"> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="schluessel"> <con:configuration> - <path>$.aendert[0].nummer</path> - <content>1.1</content> + <path>$.schluessel</path> + <content>HN 9 geaendert</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="f3689ccf-6d8e-4c43-995f-ac1eabca8a1d" name="wurdeGeaendertVon"> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="rechtscharakter"> <con:configuration> - <path>$.wurdeGeaendertVon</path> - <content>[]</content> + <path>$.rechtscharakter</path> + <content>3000</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -25304,26 +26986,33 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="9c845e83-9e6b-4fe6-a54f-6b7fc775c501"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="1c6d3528-2be3-4f15-8367-11237a2264d2"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/aenderungen</con:endpoint> - <con:request>{ - "aendert": [ { - "planName": "geaendert", - "rechtscharakter": 1000, - "nummer": "1.1" - }], - "wurdeGeaendertVon": [] -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text/${#TestSuite#textId}</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>400</codes> @@ -25338,26 +27027,33 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" id="db1c0f87-e4e6-42b3-8d45-594c99fc8544"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" id="a10ad6d0-f09a-4a9a-bb94-95daf9b15734"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/aenderungen</con:endpoint> - <con:request>{ - "aendert": [ { - "planName": "geaendert", - "rechtscharakter": 1000, - "nummer": "1.1" - }], - "wurdeGeaendertVon": [] -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text/999999999</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>404</codes> @@ -25372,29 +27068,77 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="758cf285-c79f-45a2-9d5e-0f5591822afa"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="ea5bea5b-a327-4923-aa98-ea9c60a836fe"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> - <con:request>{ - "aendert": [ { - "planName": "geaendert", - "rechtscharakter": 1000, - "nummer": "1.1" - }], - "wurdeGeaendertVon": [] -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>406</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" id="19190b3a-98b7-40a5-ba26-25083a2fe118"> + <con:settings/> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>415</codes> </con:configuration> </con:assertion> <con:credentials> @@ -25406,26 +27150,33 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI xssExpectError400" id="115d3e56-7f99-4f4e-b707-bf0037290c53"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" id="685c723f-5c5d-40db-9b03-23c756c53d1c"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI xssExpectError400" postQueryString="false" mediaType="application/json" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/aenderungen</con:endpoint> - <con:request>{ - "aendert": [ { - "planName": "ffXSSTestﬕ", - "rechtscharakter": 1000, - "nummer": "1.1" - }], - "wurdeGeaendertVon": [] -}</con:request> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>400</codes> @@ -25440,6 +27191,20 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>textmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putTextInvalidContent.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> @@ -25447,16 +27212,16 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:testStep> <con:properties/> </con:testCase> - <con:testCase id="080643b5-a241-41a5-b422-46d67c997820" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/text TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/text"-Pfad</con:description> + <con:testCase id="72840d67-96bc-44ad-8416-cd054fd228f3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/dokument TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/dokument"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI getTexte" id="4fc99a55-fd0b-4c65-befe-2bbb6ea14aaa"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI getDokumente" id="927948a4-fcce-44ce-9ed5-4d4840bde928"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getTexte" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getDokumente" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25477,13 +27242,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="f7f5d700-a4a5-4c6d-8b5c-82943c66b93c"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="51fe6383-e02d-4c29-ba1e-c92979a6c9e1"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25504,13 +27269,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="8294a8c9-009b-40ee-b0ca-a4cfc2f90d51"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="6451ffcb-c1b5-4f4c-8a92-f699617e9bb6"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25531,13 +27296,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="ac91dcc3-ed28-40f2-9e0a-333afc1edef6"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="297a65b8-1fac-42d1-bd32-5f93c8c7a551"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25558,32 +27323,23 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI addText" id="ded1d86e-6533-4243-9012-86bb6761305f"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI addDokument" id="22d1bdfe-ad49-4ea4-be3f-2c52951ff239"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI addText" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI addDokument" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="schluessel"> - <con:configuration> - <path>$.schluessel</path> - <content>HN 9 geaendert</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="rechtscharakter"> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="typ"> <con:configuration> - <path>$.rechtscharakter</path> - <content>3000</content> + <path>$.typ</path> + <content>1010</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -25602,14 +27358,14 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:name>postText.pdf</con:name> <con:contentType>application/pdf</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -25617,15 +27373,15 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0.2 pI addText Property Transfer" id="2a74f745-5a65-4e4f-be65-849be6ce75f7"> + <con:testStep type="transfer" name="POST BP 6.0.2 pI addDokument Property Transfer" id="27778152-6117-40a8-83bf-152c67b04811"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>textId</con:name> + <con:name>dokumentId</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0.2 pI addText</con:sourceStep> + <con:sourceStep>POST BP 6.0.2 pI addDokument</con:sourceStep> <con:sourcePath>$.id</con:sourcePath> - <con:targetType>textId</con:targetType> + <con:targetType>dokumentId</con:targetType> <con:targetStep>#TestSuite#</con:targetStep> <con:type>JSONPATH</con:type> <con:targetTransferType>JSONPATH</con:targetTransferType> @@ -25633,13 +27389,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="b573ebde-77c0-4111-a958-34a9c6133822"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="dbf484d8-1f29-49d9-8474-031010d82102"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25659,14 +27415,14 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:name>postText.pdf</con:name> <con:contentType>application/pdf</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -25674,13 +27430,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" id="148c2420-0b5a-4854-89ed-0348320170f4"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" id="5f2abe58-f7c9-4590-bf9d-d4a5b6e8dcba"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25700,14 +27456,14 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:name>postText.pdf</con:name> <con:contentType>application/pdf</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -25715,13 +27471,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="a4c5e2c9-1429-409f-b293-2d325a0e6585"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="6a5a257f-b22b-4db0-8486-5c3b7f16e6a2"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25741,14 +27497,14 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:name>postText.pdf</con:name> <con:contentType>application/pdf</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -25756,13 +27512,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" id="d2c57e66-16c2-4fe7-aeee-173ad067ea9f"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" id="8acfb022-e53f-4e5a-a9f6-a127123455e7"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25788,8 +27544,8 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -25797,13 +27553,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" id="7677393b-bea9-497c-a230-1d473ba2cada"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" id="a24a03bc-19ef-4eb1-afb0-3428ba2966ac"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25823,14 +27579,14 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:name>postText.pdf</con:name> <con:contentType>application/pdf</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postText.pdf</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postTextInvalidContent.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDokInvalidContent.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -25840,16 +27596,16 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:testStep> <con:properties/> </con:testCase> - <con:testCase id="da0530c0-34be-4674-be0a-c66442e5d24d" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/text/{id} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/text/{id}"-Pfad</con:description> + <con:testCase id="267fbe04-ad48-479a-bbbb-5f19a65fd77a" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/dokument/{id} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/dokument/{id}"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id getTextById" id="df9fa718-9e7e-4df0-a7b2-a5c14ce7ce14"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id getDokumentById" id="aa17cee4-d09d-4892-aa8f-57dc1a8afd39"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id getTextById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id getDokumentById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25859,28 +27615,46 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="id"> <con:configuration> <path>$.id</path> - <content>${#TestSuite#textId}</content> + <content>${#TestSuite#dokumentId}</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="schluessel"> + <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="typ"> <con:configuration> - <path>$.schluessel</path> - <content>HN 9 geaendert</content> + <path>$.typ</path> + <content>1010</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="rechtscharakter"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="9bfb83fb-7a5b-4046-8804-67901a8f0807"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.rechtscharakter</path> - <content>3000</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>400</codes> </con:configuration> </con:assertion> <con:credentials> @@ -25897,13 +27671,67 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="a2a2e844-c1cd-401d-a657-669466d34e2b"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" id="373b11f4-dbfc-41f3-81ba-ce013f0821ce"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument/999999999</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>404</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="d5c866db-8ddc-4025-8308-dfbed63a1b6b"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>406</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="f1b085e6-ba96-45f3-9ffc-12177a151c62"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text/invalid</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument/${#TestSuite#dokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25919,18 +27747,32 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" id="3bd21efb-918e-43e7-b942-0cc2414c6214"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" id="cf56cce1-6d67-447e-9904-9514f4def4c8"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument/999999999</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25946,18 +27788,32 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="ae1381f2-124c-45b0-800a-868c6fb22594"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="7d071706-c3f7-4f81-a013-50322f61a300"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -25973,49 +27829,36 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>postText.pdf</con:name> + <con:contentType>application/pdf</con:contentType> + <con:contentId>datei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> + <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + </con:attachment> + <con:attachment> + <con:name>postText.json</con:name> + <con:contentType>application/json</con:contentType> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> + <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id replaceTextById" id="a6cc6bc2-7065-4de9-9051-c81484e62636"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" id="9cbd2eaa-014c-4015-b507-f5944e7a49e4"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id replaceTextById" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="92560390-05d4-48e4-9680-b882e944790c" name="id"> - <con:configuration> - <path>$.id</path> - <content>${#TestSuite#textId}</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="schluessel"> - <con:configuration> - <path>$.schluessel</path> - <content>HN 9 geaendert</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="rechtscharakter"> - <con:configuration> - <path>$.rechtscharakter</path> - <content>3000</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>415</codes> </con:configuration> </con:assertion> <con:credentials> @@ -26029,16 +27872,16 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:attachment> <con:name>postText.pdf</con:name> - <con:contentType>text/plain</con:contentType> + <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -26046,13 +27889,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="1c6d3528-2be3-4f15-8367-11237a2264d2"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" id="51da4eba-94f0-4da7-9024-ca14cd6be805"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/text/${#TestSuite#textId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26070,16 +27913,16 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:attachment> <con:name>postText.pdf</con:name> - <con:contentType>text/plain</con:contentType> + <con:contentType>application/pdf</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDokInvalidContent.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -26087,17 +27930,26 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" id="a10ad6d0-f09a-4a9a-bb94-95daf9b15734"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id replaceDokumentById" id="130d5826-9c20-40d3-99c4-3863a38fbd4e"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id replaceDokumentById" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/text/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>404</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="typ"> + <con:configuration> + <path>$.typ</path> + <content>1030</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -26111,16 +27963,16 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:credentials> <con:attachment> <con:name>postText.pdf</con:name> - <con:contentType>text/plain</con:contentType> + <con:contentType>application/pdf</con:contentType> <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> </con:attachment> <con:attachment> <con:name>postText.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> + <con:contentId>dokumentmodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -26128,17 +27980,33 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="ea5bea5b-a327-4923-aa98-ea9c60a836fe"> + <con:testStep type="transfer" name="PUT BP 6.0.2 pI,id replaceDokumentById Property Transfer" id="19f7876b-fee3-4012-8b07-9d902dbbe102"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>replacedDokumentId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>PUT BP 6.0.2 pI,id replaceDokumentById</con:sourceStep> + <con:sourcePath>$.id</con:sourcePath> + <con:targetType>replacedDokumentId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="209c8b35-fbb2-42a2-a79d-d0f9a1d1d537"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument/${#TestCase#replacedDokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>400</codes> </con:configuration> </con:assertion> <con:credentials> @@ -26150,36 +28018,22 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> - </con:attachment> - <con:attachment> - <con:name>postText.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" id="19190b3a-98b7-40a5-ba26-25083a2fe118"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id notExistingIdExpectError404" id="18e48297-efef-4bd1-87c2-3ef8516290a9"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument/999999999</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>415</codes> + <codes>404</codes> </con:configuration> </con:assertion> <con:credentials> @@ -26191,36 +28045,67 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> - </con:attachment> - <con:attachment> - <con:name>postText.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" id="685c723f-5c5d-40db-9b03-23c756c53d1c"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="b38ea79d-b53a-4669-986a-5df82bb74fae"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestCase#replacedDokumentId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>406</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:domain/> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id deleteDokumentById" id="d3318fe4-f665-4f8d-9275-505ca5abe89a"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id deleteDokumentById" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/text/${#TestSuite#textId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestCase#replacedDokumentId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> - <codes>400</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="id"> + <con:configuration> + <path>$.id</path> + <content>${#TestCase#replacedDokumentId}</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="typ"> + <con:configuration> + <path>$.typ</path> + <content>1030</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -26232,37 +28117,45 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putText.txt</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> - </con:attachment> - <con:attachment> - <con:name>postText.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>textmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putTextInvalidContent.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:properties/> + <con:testStep type="transfer" name="Cleanup Properties" id="d72bc92d-659e-4390-b267-6152a74dd939"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>replacedDokumentId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>replacedDokumentId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>replacedDokumentId</con:name> + <con:value/> + </con:property> + </con:properties> </con:testCase> - <con:testCase id="72840d67-96bc-44ad-8416-cd054fd228f3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/dokument TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/dokument"-Pfad</con:description> + <con:testCase id="ccadec16-905d-4fe8-aafd-93091c764534" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/rasterbasis TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/rasterbasis"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI getDokumente" id="927948a4-fcce-44ce-9ed5-4d4840bde928"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI getRasterBasis" id="b1d19332-c2ce-4f1f-ad4a-06135d97734e"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getDokumente" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getRasterBasis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26283,13 +28176,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="51fe6383-e02d-4c29-ba1e-c92979a6c9e1"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="835a4908-c8d6-474e-81ab-8955bb9b0021"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26310,13 +28203,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="6451ffcb-c1b5-4f4c-8a92-f699617e9bb6"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="93f44e37-e364-40b6-9d66-af2f0f42d19b"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26337,13 +28230,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="297a65b8-1fac-42d1-bd32-5f93c8c7a551"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="839e7f5e-86ee-4064-86e8-e39485049be7"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26364,23 +28257,32 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI addDokument" id="22d1bdfe-ad49-4ea4-be3f-2c52951ff239"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI addRasterBasis" id="2d691e01-0ff4-4bce-84fb-b5b68de9a311"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI addDokument" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI addRasterBasis" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="typ"> + <con:assertion type="JsonPath Match" id="ef3e40e8-ca3a-496f-a0c9-2fdb0ab4290c" name="referenzName"> <con:configuration> - <path>$.typ</path> - <content>1010</content> + <path>$.referenzName</path> + <content>postImg</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="ef3e40e8-ca3a-496f-a0c9-2fdb0ab4290c" name="bereichNummer"> + <con:configuration> + <path>$.bereichNummer</path> + <content>0</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -26396,33 +28298,40 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>postImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> + <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>postImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> + <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> + </con:attachment> + <con:attachment> + <con:name>postDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> + <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0.2 pI addDokument Property Transfer" id="27778152-6117-40a8-83bf-152c67b04811"> + <con:testStep type="transfer" name="POST BP 6.0.2 pI addRasterBasis Property Transfer" id="963638c6-a6bc-407b-a4ae-ba9bf980b0b9"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>dokumentId</con:name> + <con:name>rasterbasisId</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0.2 pI addDokument</con:sourceStep> + <con:sourceStep>POST BP 6.0.2 pI addRasterBasis</con:sourceStep> <con:sourcePath>$.id</con:sourcePath> - <con:targetType>dokumentId</con:targetType> + <con:targetType>rasterbasisId</con:targetType> <con:targetStep>#TestSuite#</con:targetStep> <con:type>JSONPATH</con:type> <con:targetTransferType>JSONPATH</con:targetTransferType> @@ -26430,13 +28339,61 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="dbf484d8-1f29-49d9-8474-031010d82102"> + <con:testStep type="groovy" name="skipNextStepIfJdbcUrlMissing" id="bc4005a1-dcfb-4b6d-99e2-0d72f539765d"> + <con:settings/> + <con:config> + <script>def jdbcUrl = context.testCase.testSuite.project.getPropertyValue("jdbcUrl"); + +if (jdbcUrl == ""){ + def currentStepIndex = context.currentStepIndex; + def stepToGo = testRunner.testCase.getTestStepAt(currentStepIndex + 2).getName(); + testRunner.gotoStepByName(stepToGo); +}</script> + </con:config> + </con:testStep> + <con:testStep type="jdbc" name="JDBC BP 6.0.2 XX checkRasterbasis" id="bfbad32a-3ad0-43a0-9045-c525354688c5"> + <con:settings/> + <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:driver>org.postgresql.Driver</con:driver> + <con:connectionString>${#Project#jdbcUrl}</con:connectionString> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> + <con:assertion type="XPath Match" id="c626c665-ca92-4af6-8419-b36cb3dd893c" name="Exists postImg.png"> + <con:configuration> + <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#planId}' and ARTEFACTS.FILENAME = 'postImg.png'])</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="XPath Match" id="5710fe1e-6f12-4181-8694-e6c0b83b5cf2" name="Exists postImg.pgw"> + <con:configuration> + <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#planId}' and ARTEFACTS.FILENAME = 'postImg.pgw'])</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="XPath Match" id="5710fe1e-6f12-4181-8694-e6c0b83b5cf2" name="postImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#planId}' and ARTEFACTS.FILENAME = 'postImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:properties/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="ee7c04b1-7df3-4e01-8716-50a597447493"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26453,31 +28410,38 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>postImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> + <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>postImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> + <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> + </con:attachment> + <con:attachment> + <con:name>postDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> + <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" id="5f2abe58-f7c9-4590-bf9d-d4a5b6e8dcba"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" id="0e7bfe85-1992-4889-9849-b9dfe9881e12"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26494,31 +28458,38 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>postImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> + <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>postImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> + <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> + </con:attachment> + <con:attachment> + <con:name>postDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> + <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="6a5a257f-b22b-4db0-8486-5c3b7f16e6a2"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="abb3e882-1da3-4dcb-9a1f-559bb438e7f5"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26535,31 +28506,38 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>postImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> + <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>postImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> + <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> + </con:attachment> + <con:attachment> + <con:name>postDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> + <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" id="8acfb022-e53f-4e5a-a9f6-a127123455e7"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" id="4cee4bea-712f-4df2-bbdb-7e4b334e7ddd"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26576,31 +28554,38 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> + <con:name>postImg.png</con:name> <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> - <con:contentId>datei</con:contentId> + <con:contentId>rasterdatei</con:contentId> <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> + </con:attachment> + <con:attachment> + <con:name>postImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> + <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>postDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> + <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" id="a24a03bc-19ef-4eb1-afb0-3428ba2966ac"> + <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" id="5113bb78-6181-43b0-950b-c09cfcc11fae"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26617,18 +28602,25 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>postImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> + <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>postImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> + <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> + </con:attachment> + <con:attachment> + <con:name>postDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDokInvalidContent.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/postDokRasterInvalidContent.json</con:url> + <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> @@ -26637,35 +28629,44 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:testStep> <con:properties/> </con:testCase> - <con:testCase id="267fbe04-ad48-479a-bbbb-5f19a65fd77a" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/dokument/{id} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/dokument/{id}"-Pfad</con:description> + <con:testCase id="ebb3fc3f-b954-43ec-96e2-7ef39257e8d3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/rasterbasis/{id} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}/rasterbasis/{id}"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id getDokumentById" id="aa17cee4-d09d-4892-aa8f-57dc1a8afd39"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id getRasterbasisById" id="49759f0c-cb2f-4f8a-a76e-49b8c65b65af"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id getDokumentById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id getRasterbasisById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> + <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="referenzName"> + <con:configuration> + <path>$.referenzName</path> + <content>postImg</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="id"> <con:configuration> <path>$.id</path> - <content>${#TestSuite#dokumentId}</content> + <content>${#TestSuite#rasterbasisId}</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="typ"> + <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="bereichNummer"> <con:configuration> - <path>$.typ</path> - <content>1010</content> + <path>$.bereichNummer</path> + <content>0</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -26685,13 +28686,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="9bfb83fb-7a5b-4046-8804-67901a8f0807"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="94d5775b-3338-4113-87f7-33d90db58c1f"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26712,13 +28713,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" id="373b11f4-dbfc-41f3-81ba-ce013f0821ce"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" id="8995d151-1693-408b-ad0b-ee9fe3e8291f"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis/999999999</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26739,13 +28740,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="d5c866db-8ddc-4025-8308-dfbed63a1b6b"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="9e0ea2f9-8728-4ff5-b35a-3b5796d5e2b3"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26766,13 +28767,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="f1b085e6-ba96-45f3-9ffc-12177a151c62"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="edb041b9-fc28-46fb-a44b-087037a15d93"> <con:settings/> <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26789,31 +28790,40 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>putImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> + <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>putImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> + <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> + </con:attachment> + <con:attachment> + <con:name>putDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> + <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" id="cf56cce1-6d67-447e-9904-9514f4def4c8"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" id="aca5362f-e32a-4701-9ea5-c8fab50d60cd"> <con:settings/> <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis/999999999</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26830,31 +28840,40 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>putImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> + <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>putImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> + <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> + </con:attachment> + <con:attachment> + <con:name>putDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> + <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="7d071706-c3f7-4f81-a013-50322f61a300"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="8d05a382-bae2-44db-b97b-0950bfabd497"> <con:settings/> <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26871,31 +28890,40 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>putImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> + <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>putImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> + <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> + </con:attachment> + <con:attachment> + <con:name>putDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> + <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" id="9cbd2eaa-014c-4015-b507-f5944e7a49e4"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" id="8e2385f5-784a-4719-80e9-1e934e2a4e4d"> <con:settings/> <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26912,31 +28940,40 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> + <con:name>putImg.png</con:name> <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> - <con:contentId>datei</con:contentId> + <con:contentId>rasterdatei</con:contentId> + <con:part xsi:nil="true"/> <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>putImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> + <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> + </con:attachment> + <con:attachment> + <con:name>putDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> + <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" id="51da4eba-94f0-4da7-9024-ca14cd6be805"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" id="27a97564-7a59-4ca0-b78f-804e28b25f81"> <con:settings/> <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -26953,41 +28990,50 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>putImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> + <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>putImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> + <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> + </con:attachment> + <con:attachment> + <con:name>putDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDokInvalidContent.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putDokRasterInvalidContent.json</con:url> + <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id replaceDokumentById" id="130d5826-9c20-40d3-99c4-3863a38fbd4e"> + <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id replaceRasterbasisById" id="60528307-d243-478c-83da-18d1a1a401f5"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id replaceDokumentById" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id replaceRasterbasisById" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestSuite#dokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="typ"> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="bereichNummer"> <con:configuration> - <path>$.typ</path> - <content>1030</content> + <path>$.bereichNummer</path> + <content>0</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -27003,33 +29049,42 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postText.pdf</con:name> - <con:contentType>application/pdf</con:contentType> - <con:contentId>datei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.pdf</con:url> - <con:id>20c61354-f2d7-40a6-9847-7dce2ebc979e</con:id> + <con:name>putImg.png</con:name> + <con:contentType>image/png</con:contentType> + <con:contentId>rasterdatei</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> + <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> + </con:attachment> + <con:attachment> + <con:name>putImg.pgw</con:name> + <con:contentType>text/plain</con:contentType> + <con:contentId>georeferenzdatei</con:contentId> + <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> + <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> </con:attachment> <con:attachment> - <con:name>postText.json</con:name> + <con:name>putDokRaster.json</con:name> <con:contentType>application/json</con:contentType> - <con:contentId>dokumentmodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putDok.json</con:url> - <con:id>262fdc19-67e6-449d-85ee-9787a4c968e1</con:id> + <con:contentId>rasterbasismodel</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> + <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="PUT BP 6.0.2 pI,id replaceDokumentById Property Transfer" id="19f7876b-fee3-4012-8b07-9d902dbbe102"> + <con:testStep type="transfer" name="PUT BP 6.0.2 pI,id replaceRasterbasisById Property Transfer" id="457e6bcb-6660-453f-9076-fd0a546b8f8a"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>replacedDokumentId</con:name> + <con:name>replacedRasterbasisId</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>PUT BP 6.0.2 pI,id replaceDokumentById</con:sourceStep> + <con:sourceStep>PUT BP 6.0.2 pI,id replaceRasterbasisById</con:sourceStep> <con:sourcePath>$.id</con:sourcePath> - <con:targetType>replacedDokumentId</con:targetType> + <con:targetType>replacedRasterbasisId</con:targetType> <con:targetStep>#TestCase#</con:targetStep> <con:type>JSONPATH</con:type> <con:targetTransferType>JSONPATH</con:targetTransferType> @@ -27037,13 +29092,61 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="209c8b35-fbb2-42a2-a79d-d0f9a1d1d537"> + <con:testStep type="groovy" name="skipNextStepIfJdbcUrlMissing" id="38a22ff5-0d41-4d17-8034-c085dc96311e"> + <con:settings/> + <con:config> + <script>def jdbcUrl = context.testCase.testSuite.project.getPropertyValue("jdbcUrl"); + +if (jdbcUrl == ""){ + def currentStepIndex = context.currentStepIndex; + def stepToGo = testRunner.testCase.getTestStepAt(currentStepIndex + 2).getName(); + testRunner.gotoStepByName(stepToGo); +}</script> + </con:config> + </con:testStep> + <con:testStep type="jdbc" name="JDBC BP 6.0.2 XX checkRasterbasis" id="985ab614-3058-47c1-b851-6910a19761cc"> + <con:settings/> + <con:config xsi:type="con:JdbcRequestTestStep" convertColumnNamesToUpperCase="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:driver>org.postgresql.Driver</con:driver> + <con:connectionString>${#Project#jdbcUrl}</con:connectionString> + <con:query>select plan,filename,artefacttype from xplanmgr.artefacts;</con:query> + <con:assertion type="XPath Match" id="754f7477-aae0-4c92-b56e-1036ba3316aa" name="Exists putImg.png"> + <con:configuration> + <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#planId}' and ARTEFACTS.FILENAME = 'putImg.png'])</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="XPath Match" id="754f7477-aae0-4c92-b56e-1036ba3316aa" name="Exists putImg.pgw"> + <con:configuration> + <path>exists(/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#planId}' and ARTEFACTS.FILENAME = 'putImg.pgw'])</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="XPath Match" id="754f7477-aae0-4c92-b56e-1036ba3316aa" name="putImg.pgw not RASTERBASIS"> + <con:configuration> + <path>/Results/ResultSet/Row[ARTEFACTS.PLAN = '${#TestSuite#planId}' and ARTEFACTS.FILENAME = 'putImg.pgw']/ARTEFACTS.ARTEFACTTYPE = 'RASTERBASIS'</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:properties/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="8469a42e-2148-440e-887f-62d9fbe19151"> <con:settings/> <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/dokument/${#TestCase#replacedDokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis/${#TestCase#replacedRasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -27064,13 +29167,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id notExistingIdExpectError404" id="18e48297-efef-4bd1-87c2-3ef8516290a9"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id notExistingIdExpectError404" id="367033df-565e-4e08-8be5-fdff813bb31f"> <con:settings/> <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/dokument/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis/999999999</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -27091,13 +29194,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="b38ea79d-b53a-4669-986a-5df82bb74fae"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="2a403e57-7682-4b5e-9d6e-b91b73ea0888"> <con:settings/> <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestCase#replacedDokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestCase#replacedRasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -27118,13 +29221,13 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id deleteDokumentById" id="d3318fe4-f665-4f8d-9275-505ca5abe89a"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id deleteRasterbasisById" id="d197eb2e-f916-4aaa-9562-8a9ad5662b23"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id deleteDokumentById" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id deleteRasterbasisById" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/dokument/${#TestCase#replacedDokumentId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestCase#replacedRasterbasisId}</con:endpoint> <con:request/> <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> <con:configuration> @@ -27134,16 +29237,16 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="id"> <con:configuration> <path>$.id</path> - <content>${#TestCase#replacedDokumentId}</content> + <content>${#TestCase#replacedRasterbasisId}</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="typ"> + <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="bereichNummer"> <con:configuration> - <path>$.typ</path> - <content>1030</content> + <path>$.bereichNummer</path> + <content>0</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -27163,14 +29266,14 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="d72bc92d-659e-4390-b267-6152a74dd939"> + <con:testStep type="transfer" name="Cleanup Properties" id="6fd8be50-3542-4623-abaf-d90daac7458e"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>replacedDokumentId</con:name> + <con:name>replacedRasterbasisId</con:name> <con:sourceType>empty</con:sourceType> <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>replacedDokumentId</con:targetType> + <con:targetType>replacedRasterbasisId</con:targetType> <con:targetStep>#TestCase#</con:targetStep> <con:upgraded>true</con:upgraded> </con:transfers> @@ -27182,31 +29285,131 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:value/> </con:property> <con:property> - <con:name>replacedDokumentId</con:name> + <con:name>replacedRasterbasisId</con:name> <con:value/> </con:property> </con:properties> </con:testCase> - <con:testCase id="ccadec16-905d-4fe8-aafd-93091c764534" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/rasterbasis TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/rasterbasis"-Pfad</con:description> + <con:testCase id="253222fc-e5f0-47f9-99b7-5b78d91f05c3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Tests für den "/plan/{planId}"-Pfad</con:description> <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI getRasterBasis" id="b1d19332-c2ce-4f1f-ad4a-06135d97734e"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI acceptApplicationJson" id="c6005e2e-fd92-46f5-aad1-104f36aef455"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI getRasterBasis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI acceptApplicationJson" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> + <con:assertion type="JsonPath Match" id="98e8e899-1aa0-49a9-88a4-c2ccaf9f4519" name="type"> + <con:configuration> + <path>$.type</path> + <content>BP_Plan</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="5b37bf48-1272-473a-b0fa-8af44fb4bda9" name="version"> + <con:configuration> + <path>$.version</path> + <content>XPLAN_60</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="a3bb8ff5-eb83-4e1c-9375-3a648d208427" name="planStatus"> + <con:configuration> + <path>$.planStatus</path> + <content>FESTGESTELLT</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="b04b5ac9-69db-4238-b0a3-31fb43bfb587" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>soapui-test-id</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="b04b5ac9-69db-4238-b0a3-31fb43bfb587" name="gemeinden.ags"> + <con:configuration> + <path>$.xplanModelData.gemeinden[0].ags</path> + <content>02000000</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="b04b5ac9-69db-4238-b0a3-31fb43bfb587" name="gemeinden.gemeindeName"> + <con:configuration> + <path>$.xplanModelData.gemeinden[0].gemeindeName</path> + <content>Freie und Hansestadt Hamburg</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="661feb7b-2379-46aa-a994-f7034df08aaf" name="link self"> + <con:configuration> + <path>$.links[?(@.rel == 'self' && (@.type == 'application/json'))].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/plan/.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Count" id="1f02b841-df99-4f50-bc12-f75834e396e0" name="link self count"> + <con:configuration> + <path>$.links[?(@.rel == 'self')]</path> + <content>1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="ef5b8e76-d4eb-4b91-a20f-cfacbdaaa3d3" name="link planwerkwms"> + <con:configuration> + <path>$.links[?(@.rel == 'planwerkwms')].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/services/planwerkwms/planname/.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="c6426ec1-7f70-4f7d-a0bf-1891f0f56f6f" name="geltungsbereichWGS84.type"> + <con:configuration> + <path>$.geltungsbereichWGS84.type</path> + <content>Polygon</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="7b5fcbfd-f410-4ec0-9a1d-60d62e1c9b19" name="geltungsbereichWGS84.coordinates firstEntry"> + <con:configuration> + <path>$.geltungsbereichWGS84.coordinates[0][0]</path> + <content>[9.86228294160898,53.57602035371566]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -27217,15 +29420,15 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="835a4908-c8d6-474e-81ab-8955bb9b0021"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="aacc1bbb-ad37-479c-8572-894b69e18e23"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>400</codes> </con:configuration> @@ -27233,7 +29436,6 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -27244,15 +29446,15 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="93f44e37-e364-40b6-9d66-af2f0f42d19b"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="dbd2d4c8-15ed-4077-a853-2f54782b0f4a"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>404</codes> </con:configuration> @@ -27260,7 +29462,6 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -27271,23 +29472,48 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="839e7f5e-86ee-4064-86e8-e39485049be7"> + <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="c1aba076-6f09-4943-811a-9d1abd46d554"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>406</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="5962a846-47b2-43b1-bebe-f1979b97c182"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999999999999999</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>400</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -27298,368 +29524,423 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI addRasterBasis" id="2d691e01-0ff4-4bce-84fb-b5b68de9a311"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI notExistingPlanIdExpectError404" id="aab75bec-d024-4b9e-a92b-59c66881a731"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI addRasterBasis" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="ef3e40e8-ca3a-496f-a0c9-2fdb0ab4290c" name="referenzName"> - <con:configuration> - <path>$.referenzName</path> - <content>postImg</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="ef3e40e8-ca3a-496f-a0c9-2fdb0ab4290c" name="bereichNummer"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.bereichNummer</path> - <content>0</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>404</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>postImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> - <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> - </con:attachment> - <con:attachment> - <con:name>postImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> - <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> - </con:attachment> - <con:attachment> - <con:name>postDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> - <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0.2 pI addRasterBasis Property Transfer" id="963638c6-a6bc-407b-a4ae-ba9bf980b0b9"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>rasterbasisId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0.2 pI addRasterBasis</con:sourceStep> - <con:sourcePath>$.id</con:sourcePath> - <con:targetType>rasterbasisId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="ee7c04b1-7df3-4e01-8716-50a597447493"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="851016d5-cfdf-45d8-9487-7a4cd387b4c4"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <codes>400</codes> + <codes>406</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>postImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> - <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> - </con:attachment> - <con:attachment> - <con:name>postImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> - <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> - </con:attachment> - <con:attachment> - <con:name>postDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> - <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" id="0e7bfe85-1992-4889-9849-b9dfe9881e12"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 pI deletePlan" id="fa52d97b-b10e-4e81-b1ab-c53e13a781c4"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <codes>404</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:configuration> + <path>$.message</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>postImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> - <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> - </con:attachment> - <con:attachment> - <con:name>postImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> - <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> - </con:attachment> - <con:attachment> - <con:name>postDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> - <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="abb3e882-1da3-4dcb-9a1f-559bb438e7f5"> + <con:properties/> + </con:testCase> + <con:testCase id="45abf6c5-f8d2-4a1e-8c19-d132aaf8cd8c" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Cleanup Properties" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>Gesetzte Werte werden wieder geleert</con:description> + <con:settings/> + <con:testStep type="transfer" name="Property Transfer" id="13275765-db9d-43ff-acce-e447fb399a29"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" disabled="false" entitize="false" ignoreEmpty="false" transferChildNodes="false" transferToAll="false" useXQuery="false"> + <con:name>uuidMismatchingTypes</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:sourcePath xsi:nil="true"/> + <con:targetType>uuidMismatchingTypes</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:targetPath xsi:nil="true"/> + <con:type>XPATH</con:type> + <con:targetTransferType>XPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>textId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>textId</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>dokumentId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>dokumentId</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>rasterbasisId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>rasterbasisId</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuidInvalidProfile</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuidInvalidProfile</con:targetType> + <con:targetStep>#TestSuite#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:properties> + <con:property> + <con:name>uuid</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>uuidMismatchingTypes</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>uuidInvalidProfile</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>textId</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>dokumentId</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>rasterbasisId</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testSuite> + <con:testSuite id="a24fcedd-6b79-4153-8047-938cac8308a8" name="Workflow v2 TestSuite"> + <con:description>Worflow-TestSuite für die API version 2</con:description> + <con:settings/> + <con:runType>SEQUENTIAL</con:runType> + <con:testCase id="4ba19cf1-4413-4322-842c-f35c0f43425e" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Raster evaluation TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für die Validierung von Rasterdaten (CRS und Bildformat)</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" id="47384dc8-250b-41dc-a703-4fc11fe6be5b"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>200</codes> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:domain/> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:attachment> - <con:name>postImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> - <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> - </con:attachment> - <con:attachment> - <con:name>postImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> - <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> - </con:attachment> - <con:attachment> - <con:name>postDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> - <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> - </con:attachment> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" id="4cee4bea-712f-4df2-bbdb-7e4b334e7ddd"> - <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> <con:configuration> - <codes>415</codes> + <path>$.uuid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:configuration> + <path>$.statusLink</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:configuration> + <path>$.statusLink.href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>postImg.png</con:name> - <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> - <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> - </con:attachment> - <con:attachment> - <con:name>postImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> - <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> - </con:attachment> - <con:attachment> - <con:name>postDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDokRaster.json</con:url> - <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>internalId</con:name> + <con:value>soapui-test-id</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>planStatus</con:name> + <con:value>FESTGESTELLT</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" id="5113bb78-6181-43b0-950b-c09cfcc11fae"> + <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="f82933e6-fd97-427c-9e00-803f265c57cd"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="POST BP 6.0.2 pI invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> + <con:sourcePath>$.uuid</con:sourcePath> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="1e098c49-c6a4-4205-9a4d-ddecdfb74cde"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <codes>400</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:configuration> + <path>$.status</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>postImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.png</con:url> - <con:id>bc046f4c-3ac0-4429-8147-60c18d35f321</con:id> - </con:attachment> - <con:attachment> - <con:name>postImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postImg.pgw</con:url> - <con:id>7e00e2a0-8b73-4665-b2ac-b458ef84b730</con:id> - </con:attachment> - <con:attachment> - <con:name>postDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/postDokRasterInvalidContent.json</con:url> - <con:id>8419d223-e80a-4b12-a72d-c0fc95349d12</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="ebb3fc3f-b954-43ec-96e2-7ef39257e8d3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId}/rasterbasis/{id} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}/rasterbasis/{id}"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id getRasterbasisById" id="49759f0c-cb2f-4f8a-a76e-49b8c65b65af"> + <con:testStep type="groovy" name="pollStatus" id="3ab9f16e-684f-419a-8eba-e05874263a90"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id getRasterbasisById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config> + <script>import groovy.json.JsonSlurper + +def testStepName = "GET BP 6.0 XX pollStatus" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) + +if( context.loopIndex == null ) + context.loopIndex = 0 + +if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="0a5a9eb9-fb3f-401d-9b0b-9513a77026d2"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="referenzName"> + <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> <con:configuration> - <path>$.referenzName</path> - <content>postImg</content> + <path>$.status</path> + <content>IMPORT_FINISHED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="320f668b-21ff-4589-a944-cfbd07931e2a" name="importedPlanIdsExists"> + <con:configuration> + <path>$.importedPlanIds</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="id"> + <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> <con:configuration> - <path>$.id</path> - <content>${#TestSuite#rasterbasisId}</content> + <path>$.links</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d9d5c738-aa0d-4eda-b4cb-cd0fdbdadba6" name="bereichNummer"> + <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> <con:configuration> - <path>$.bereichNummer</path> - <content>0</content> + <path>$.links[0].href</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -27668,7 +29949,6 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -27679,50 +29959,83 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="94d5775b-3338-4113-87f7-33d90db58c1f"> + <con:testStep type="transfer" name="GET BP 6.0 XX retrieveStatus Property Transfer" id="8f60fb8d-51ee-40c1-a1ab-cfead1947716"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>400</codes> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:domain/> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 6.0 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" id="8995d151-1693-408b-ad0b-ee9fe3e8291f"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="87f3b812-ef7e-4be0-9320-52c8bcb046ab"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id notExistingIdExpectError404" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>404</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="externalReferencesResult.name"> + <con:configuration> + <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].name</path> + <content>[BPlan004_6-0.png]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="externalReferencesResult.status"> + <con:configuration> + <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].status</path> + <content>[AVAILABLE]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="rasterEvaluationResult.name"> + <con:configuration> + <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan004_6-0.png')].name</path> + <content>[BPlan004_6-0.png]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="rasterEvaluationResult.crsStatus"> + <con:configuration> + <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan004_6-0.png')].crsStatus</path> + <content>[MISSING]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="rasterEvaluationResult.imageFormatStatus"> + <con:configuration> + <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan004_6-0.png')].imageFormatStatus</path> + <content>[SUPPORTED]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -27733,23 +30046,22 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="9e0ea2f9-8728-4ff5-b35a-3b5796d5e2b3"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="d1b25a16-eb87-41a2-bdc3-7ea847d92131"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="GET BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>200</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -27760,273 +30072,365 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="edb041b9-fc28-46fb-a44b-087037a15d93"> + <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan" id="fcfe9afc-ad18-49df-99cb-5a7891025f2c"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <codes>400</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:configuration> + <path>$.message</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>putImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> - <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> - </con:attachment> - <con:attachment> - <con:name>putImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> - <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> - </con:attachment> - <con:attachment> - <con:name>putDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> - <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" id="aca5362f-e32a-4701-9ea5-c8fab50d60cd"> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlanNotSupportedFormatExpectError415" id="f6834dbd-6794-4a56-8a1c-9a46db64cbfd"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlanNotSupportedFormatExpectError415" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> - <codes>404</codes> + <codes>415</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>putImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> - <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> - </con:attachment> - <con:attachment> - <con:name>putImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> - <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> - </con:attachment> - <con:attachment> - <con:name>putDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> - <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0_NotSupportedFormatJPEG.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>internalId</con:name> + <con:value>soapui-test-id</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>planStatus</con:name> + <con:value>FESTGESTELLT</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="Cleanup Properties" id="f6db3459-6183-408a-a68a-d070a034a34f"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="8d05a382-bae2-44db-b97b-0950bfabd497"> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>uuid</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="437fdb33-c85f-47bc-8896-4551bd0b8771" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Raster evaluation missing PNG TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für die Validierung von Rasterdaten (CRS und Bildformat), wenn die Rasterdatei im XPlanArchiv fehlt</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" id="2b2df413-8661-4c46-aaff-51a03681724e"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>200</codes> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:domain/> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:attachment> - <con:name>putImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> - <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> - </con:attachment> - <con:attachment> - <con:name>putImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> - <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> - </con:attachment> - <con:attachment> - <con:name>putDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> - <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> - </con:attachment> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" id="8e2385f5-784a-4719-80e9-1e934e2a4e4d"> - <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidMediaTypeExpectError415" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> <con:configuration> - <codes>415</codes> + <path>$.uuid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:configuration> + <path>$.statusLink</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:configuration> + <path>$.statusLink.href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>putImg.png</con:name> - <con:contentType>application/vnd.oasis.opendocument.text</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/invalidContentType.odt</con:url> - <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> - </con:attachment> - <con:attachment> - <con:name>putImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> - <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> - </con:attachment> - <con:attachment> - <con:name>putDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> - <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0_MissingPNG.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>internalId</con:name> + <con:value>soapui-test-id</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>planStatus</con:name> + <con:value>FESTGESTELLT</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" id="27a97564-7a59-4ca0-b78f-804e28b25f81"> + <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="9db231a3-6738-497f-9fb6-2d374a3b3657"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id invalidContentInJsonExpectError400" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> + <con:sourcePath>$.uuid</con:sourcePath> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="f196a0ba-4d6a-459d-9766-c46cfe148b94"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <codes>400</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:configuration> + <path>$.status</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>putImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> - <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> - </con:attachment> - <con:attachment> - <con:name>putImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> - <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> - </con:attachment> - <con:attachment> - <con:name>putDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putDokRasterInvalidContent.json</con:url> - <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="PUT BP 6.0.2 pI,id replaceRasterbasisById" id="60528307-d243-478c-83da-18d1a1a401f5"> + <con:testStep type="groovy" name="pollStatus" id="a0e1df51-0cd3-49f0-b7e3-1725d1272fc7"> + <con:settings/> + <con:config> + <script>import groovy.json.JsonSlurper + +def testStepName = "GET BP 6.0 XX pollStatus" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) + +if( context.loopIndex == null ) + context.loopIndex = 0 + +if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="c5f8a9ca-d815-492b-a437-6da38063f5d3"> <con:settings/> - <con:config method="PUT" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="PUT BP 6.0.2 pI,id replaceRasterbasisById" postQueryString="false" mediaType="multipart/form-data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestSuite#rasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="bereichNummer"> + <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> <con:configuration> - <path>$.bereichNummer</path> - <content>0</content> + <path>$.status</path> + <content>IMPORT_ABORTED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="129ac743-0353-43ba-93a5-97580a06afee" name="errorMsgExists"> + <con:configuration> + <path>$.errorMsg</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> + <con:configuration> + <path>$.links</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> + <con:configuration> + <path>$.links[0].href</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -28035,73 +30439,59 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>putImg.png</con:name> - <con:contentType>image/png</con:contentType> - <con:contentId>rasterdatei</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.png</con:url> - <con:id>322fb9cb-5a4b-4cd7-9892-e2c60feded4b</con:id> - </con:attachment> - <con:attachment> - <con:name>putImg.pgw</con:name> - <con:contentType>text/plain</con:contentType> - <con:contentId>georeferenzdatei</con:contentId> - <con:url>${projectDir}/xplan-manager-api/attachments/putImg.pgw</con:url> - <con:id>7bce64d6-46bb-41e0-b869-673d1c926ce0</con:id> - </con:attachment> - <con:attachment> - <con:name>putDokRaster.json</con:name> - <con:contentType>application/json</con:contentType> - <con:contentId>rasterbasismodel</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/attachments/putDokRaster.json</con:url> - <con:id>db9fe229-0045-4809-803f-8b64a0a59c53</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="PUT BP 6.0.2 pI,id replaceRasterbasisById Property Transfer" id="457e6bcb-6660-453f-9076-fd0a546b8f8a"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>replacedRasterbasisId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>PUT BP 6.0.2 pI,id replaceRasterbasisById</con:sourceStep> - <con:sourcePath>$.id</con:sourcePath> - <con:targetType>replacedRasterbasisId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" id="8469a42e-2148-440e-887f-62d9fbe19151"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="bfbc155e-88f4-4f2c-a4cc-7dc431caf5fb"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid/rasterbasis/${#TestCase#replacedRasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>400</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="89c7e1e0-c650-465c-9d3e-9da776d0f125" name="externalReferencesResult.name"> + <con:configuration> + <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].name</path> + <content>[BPlan004_6-0.png]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="89c7e1e0-c650-465c-9d3e-9da776d0f125" name="externalReferencesResult.status"> + <con:configuration> + <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].status</path> + <content>[MISSING]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="ab778302-2b91-4fb9-8cf2-777ab107e057" name="rasterEvaluationResults"> + <con:configuration> + <path>$.plans..rasterEvaluationResult[?(@.rasterEvaluationResult == '[]')]</path> + <content>[]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -28112,23 +30502,22 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id notExistingIdExpectError404" id="367033df-565e-4e08-8be5-fdff813bb31f"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="be3618fd-23d8-4343-ad68-f6d967896fc5"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id notExistingIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999/rasterbasis/999999999</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>404</codes> + <codes>200</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -28139,59 +30528,163 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" id="2a403e57-7682-4b5e-9d6e-b91b73ea0888"> + <con:testStep type="transfer" name="Cleanup Properties" id="4806fe96-bf30-4465-8087-0fa0c36949df"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>uuid</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="301145fa-4826-4743-ad59-773d6dd91d36" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Raster evaluation wrong CRS TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für die Validierung von Rasterdaten (CRS und Bildformat), wenn ein falsches CRS in den Rasterdaten gesetzt ist</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" id="d36388d8-ee33-4b7e-81a5-b857d9504b27"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestCase#replacedRasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> + <con:configuration> + <path>$.uuid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:configuration> + <path>$.statusLink</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:configuration> + <path>$.statusLink.href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan004_6-0.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan006_6-0_WrongCRSInTIFF4326.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>internalId</con:name> + <con:value>soapui-test-id</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>planStatus</con:name> + <con:value>FESTGESTELLT</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="0fef90e9-f502-4b3e-b678-3c3944755085"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> + <con:sourcePath>$.uuid</con:sourcePath> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI,id deleteRasterbasisById" id="d197eb2e-f916-4aaa-9562-8a9ad5662b23"> + <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="4abf7e36-9bb1-4273-bc30-a5d49711e241"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="814b3598-7ff7-4708-bf40-b084c3dfdbd8" name="DEL BP 6.0.2 pI,id deleteRasterbasisById" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}/rasterbasis/${#TestCase#replacedRasterbasisId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="5bcfd2ec-377d-48c4-ab82-1bb088367de5" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="id"> - <con:configuration> - <path>$.id</path> - <content>${#TestCase#replacedRasterbasisId}</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="08ca7e22-f5e1-4b21-853e-823a3d6c127d" name="bereichNummer"> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> <con:configuration> - <path>$.bereichNummer</path> - <content>0</content> + <path>$.status</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -28200,7 +30693,6 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:domain/> <con:selectedAuthProfile>Basic</con:selectedAuthProfile> <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> @@ -28211,133 +30703,73 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="6fd8be50-3542-4623-abaf-d90daac7458e"> + <con:testStep type="groovy" name="pollStatus" id="e221f8f8-df20-43b9-9463-423096800877"> <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>replacedRasterbasisId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>replacedRasterbasisId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> + <con:config> + <script>import groovy.json.JsonSlurper + +def testStepName = "GET BP 6.0 XX pollStatus" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) + +if( context.loopIndex == null ) + context.loopIndex = 0 + +if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> </con:config> </con:testStep> - <con:properties> - <con:property> - <con:name>empty</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>replacedRasterbasisId</con:name> - <con:value/> - </con:property> - </con:properties> - </con:testCase> - <con:testCase id="253222fc-e5f0-47f9-99b7-5b78d91f05c3" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="/plan/{planId} TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Tests für den "/plan/{planId}"-Pfad</con:description> - <con:settings/> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI acceptApplicationJson" id="c6005e2e-fd92-46f5-aad1-104f36aef455"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="e808c8ba-5d87-47fe-9aaf-bbccdac273c5"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI acceptApplicationJson" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="98e8e899-1aa0-49a9-88a4-c2ccaf9f4519" name="type"> - <con:configuration> - <path>$.type</path> - <content>BP_Plan</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="5b37bf48-1272-473a-b0fa-8af44fb4bda9" name="version"> - <con:configuration> - <path>$.version</path> - <content>XPLAN_60</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="a3bb8ff5-eb83-4e1c-9375-3a648d208427" name="planStatus"> - <con:configuration> - <path>$.planStatus</path> - <content>FESTGESTELLT</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="b04b5ac9-69db-4238-b0a3-31fb43bfb587" name="gemeinden.ags"> - <con:configuration> - <path>$.xplanModelData.gemeinden[0].ags</path> - <content>02000000</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="b04b5ac9-69db-4238-b0a3-31fb43bfb587" name="gemeinden.gemeindeName"> + <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> <con:configuration> - <path>$.xplanModelData.gemeinden[0].gemeindeName</path> - <content>Freie und Hansestadt Hamburg</content> + <path>$.status</path> + <content>IMPORT_ABORTED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="661feb7b-2379-46aa-a994-f7034df08aaf" name="link self"> + <con:assertion type="JsonPath Existence Match" id="129ac743-0353-43ba-93a5-97580a06afee" name="errorMsgExists"> <con:configuration> - <path>$.links[?(@.rel == 'self' && (@.type == 'application/json'))].href</path> + <path>$.errorMsg</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/plan/.*$</regEx> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Count" id="1f02b841-df99-4f50-bc12-f75834e396e0" name="link self count"> - <con:configuration> - <path>$.links[?(@.rel == 'self')]</path> - <content>1</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="ef5b8e76-d4eb-4b91-a20f-cfacbdaaa3d3" name="link planwerkwms"> + <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> <con:configuration> - <path>$.links[?(@.rel == 'planwerkwms')].href</path> + <path>$.links</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/services/planwerkwms/planname/.*$</regEx> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="c6426ec1-7f70-4f7d-a0bf-1891f0f56f6f" name="geltungsbereichWGS84.type"> - <con:configuration> - <path>$.geltungsbereichWGS84.type</path> - <content>Polygon</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="7b5fcbfd-f410-4ec0-9a1d-60d62e1c9b19" name="geltungsbereichWGS84.coordinates firstEntry"> + <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> <con:configuration> - <path>$.geltungsbereichWGS84.coordinates[0][0]</path> - <content>[9.86228294160898,53.57602035371566]</content> + <path>$.links[0].href</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -28356,121 +30788,62 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="aacc1bbb-ad37-479c-8572-894b69e18e23"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="92d2f4fa-c141-4300-8211-51dda5cf1cca"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/invalid</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>400</codes> + <codes>200</codes> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" id="dbd2d4c8-15ed-4077-a853-2f54782b0f4a"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="externalReferencesResult.name"> <con:configuration> - <codes>404</codes> + <path>$.plans..externalReferencesResult[?(@.name == 'BPlan006_6-0.tiff')].name</path> + <content>[BPlan006_6-0.tiff]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="c1aba076-6f09-4943-811a-9d1abd46d554"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="GET BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="externalReferencesResult.status"> <con:configuration> - <codes>406</codes> + <path>$.plans..externalReferencesResult[?(@.name == 'BPlan006_6-0.tiff')].status</path> + <content>[AVAILABLE]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" id="5962a846-47b2-43b1-bebe-f1979b97c182"> - <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI invalidPlanIdNotIntValueExpectError400" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999999999999999</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="rasterEvaluationResult.name"> + <con:configuration> + <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan006_6-0.tiff')].name</path> + <content>[BPlan006_6-0.tiff]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="rasterEvaluationResult.crsStatus"> <con:configuration> - <codes>400</codes> + <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan006_6-0.tiff')].crsStatus</path> + <content>[UNSUPPORTED]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI notExistingPlanIdExpectError404" id="aab75bec-d024-4b9e-a92b-59c66881a731"> - <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI notExistingPlanIdExpectError404" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/999999999</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="rasterEvaluationResult.imageFormatStatus"> <con:configuration> - <codes>404</codes> + <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan006_6-0.tiff')].imageFormatStatus</path> + <content>[SUPPORTED]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -28486,17 +30859,17 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI invalidAcceptHeaderExpectError406" id="851016d5-cfdf-45d8-9487-7a4cd387b4c4"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="838f0872-4fa2-4131-8588-75673197518c"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI invalidAcceptHeaderExpectError406" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="invalid" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> <con:configuration> - <codes>406</codes> + <codes>200</codes> </con:configuration> </con:assertion> <con:credentials> @@ -28512,28 +30885,77 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 pI deletePlan" id="fa52d97b-b10e-4e81-b1ab-c53e13a781c4"> + <con:testStep type="transfer" name="Cleanup Properties" id="b4a783ea-b823-4f80-a052-a2cacf6652f9"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" disabled="false" entitize="false" ignoreEmpty="false" transferChildNodes="false" transferToAll="false" useXQuery="false"> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:sourcePath xsi:nil="true"/> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:targetPath xsi:nil="true"/> + <con:type>XPATH</con:type> + <con:targetTransferType>XPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>uuid</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="184da798-81c7-4677-bdf3-d4ff823c0b21" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Profiles TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:settings/> + <con:testStep type="httprequest" name="GET XX X.X XX showConfig" id="0a19d2a8-8323-4881-8650-b63523e5b373"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="ada729bc-f24a-41d6-bcf5-4dd34948e273" name="GET XX X.X XX showConfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestSuite#planId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/info</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="860eaa41-d4c0-4b28-9e32-132c7e894b18" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:assertion type="JsonPath Existence Match" id="1beb64fd-81c2-46b9-b690-f88938a487fc" name="hasVersion"> <con:configuration> - <path>$.message</path> + <path>$.version</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> + <con:assertion type="GroovyScriptAssertion" id="bf3730ab-4f4d-4167-b404-d09046ef994c" name="versionNotNull"> + <con:configuration> + <scriptText>import groovy.json.JsonSlurper + +json = new JsonSlurper().parseText(messageExchange.response.responseContent) +assert !(json.isEmpty()) + +assert json.version != null</scriptText> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="a525ec99-c1ee-4ed3-a1f4-19760fc2d1c0" name="supportedXPlanGmlVersions"> + <con:configuration> + <path>$.supportedXPlanGmlVersions</path> + <content>["XPLAN_40","XPLAN_41","XPLAN_50","XPLAN_51","XPLAN_52","XPLAN_53","XPLAN_54","XPLAN_60"]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> @@ -28547,128 +30969,29 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:properties/> - </con:testCase> - <con:testCase id="45abf6c5-f8d2-4a1e-8c19-d132aaf8cd8c" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Cleanup Properties" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>Gesetzte Werte werden wieder geleert</con:description> - <con:settings/> - <con:testStep type="transfer" name="Property Transfer" id="13275765-db9d-43ff-acce-e447fb399a29"> + <con:testStep type="transfer" name="GET XX X.X XX showConfig Property Transfer" id="5c00b85e-4cdb-4b50-a290-fe440502f3d5"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuid</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>uuid</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>planId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>planId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" disabled="false" entitize="false" ignoreEmpty="false" transferChildNodes="false" transferToAll="false" useXQuery="false"> - <con:name>uuidMismatchingTypes</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:sourcePath xsi:nil="true"/> - <con:targetType>uuidMismatchingTypes</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:targetPath xsi:nil="true"/> - <con:type>XPATH</con:type> - <con:targetTransferType>XPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>textId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>textId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>dokumentId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>dokumentId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>rasterbasisId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>rasterbasisId</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuidInvalidProfile</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>uuidInvalidProfile</con:targetType> - <con:targetStep>#TestSuite#</con:targetStep> + <con:name>profile</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET XX X.X XX showConfig</con:sourceStep> + <con:sourcePath>$.profiles[0]</con:sourcePath> + <con:targetType>profile</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> </con:config> </con:testStep> - <con:properties> - <con:property> - <con:name>empty</con:name> - <con:value/> - </con:property> - </con:properties> - </con:testCase> - <con:properties> - <con:property> - <con:name>uuid</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>uuidMismatchingTypes</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>uuidInvalidProfile</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>planId</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>textId</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>dokumentId</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>rasterbasisId</con:name> - <con:value/> - </con:property> - </con:properties> - </con:testSuite> - <con:testSuite id="a24fcedd-6b79-4153-8047-938cac8308a8" name="Workflow v2 TestSuite"> - <con:description>Worflow-TestSuite für die API version 2</con:description> - <con:settings/> - <con:runType>SEQUENTIAL</con:runType> - <con:testCase id="4ba19cf1-4413-4322-842c-f35c0f43425e" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Raster evaluation TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für die Validierung von Rasterdaten (CRS und Bildformat)</con:description> - <con:settings/> - <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" id="47384dc8-250b-41dc-a703-4fc11fe6be5b"> + <con:testStep type="httprequest" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan" id="2d520618-0f96-43e3-8abb-833622c02afa"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-test"/> + <con:entry key="X-Filename" value="soapui-profiles-test"/> </xml-fragment></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> @@ -28716,8 +31039,8 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:attachment> <con:name>FP_6.0.2.zip</con:name> <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BPlan004_6-0.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0.zip</con:url> + <con:contentId>BP_6.0.2.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -28745,7 +31068,7 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:parameter> <con:parameter required="false" disableUrlEncoding="false"> <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> + <con:value>soapui-profiles-test-id</con:value> <con:style>QUERY</con:style> <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> <con:default/> @@ -28756,16 +31079,21 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:value>FESTGESTELLT</con:value> <con:style>QUERY</con:style> </con:parameter> + <con:parameter> + <con:name>profiles</con:name> + <con:value>${#TestCase#profile}</con:value> + <con:style>QUERY</con:style> + </con:parameter> </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="f82933e6-fd97-427c-9e00-803f265c57cd"> + <con:testStep type="transfer" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan Property Transfer" id="9b549a9d-2929-4756-8527-7b00357853d5"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> + <con:sourceStep>POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -28775,9 +31103,9 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="1e098c49-c6a4-4205-9a4d-ddecdfb74cde"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatus" id="7672cc36-9f90-4575-b8db-d44c16e65fff"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -28810,12 +31138,12 @@ if( ++context.loopIndex < 40 && json.status != "VALIDATION_FAILED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="3ab9f16e-684f-419a-8eba-e05874263a90"> + <con:testStep type="groovy" name="pollStatus" id="4ebd1bce-c2a9-479f-8bdf-f6747f908e6b"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper -def testStepName = "GET BP 6.0 XX pollStatus" +def testStepName = "GET BP 6.0.2 XX pollStatus" def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") def json = new JsonSlurper().parseText(response) @@ -28833,9 +31161,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="0a5a9eb9-fb3f-401d-9b0b-9513a77026d2"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveStatus" id="4d4ef268-51a5-47d5-b94b-4caacfe7c0fb"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -28895,13 +31223,13 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="GET BP 6.0 XX retrieveStatus Property Transfer" id="8f60fb8d-51ee-40c1-a1ab-cfead1947716"> + <con:testStep type="transfer" name="GET BP 6.0.2 XX retrieveStatus Property Transfer" id="fb2dfcd0-5278-4961-ba54-f4cc2e112df9"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>planId</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET BP 6.0 XX retrieveStatus</con:sourceStep> + <con:sourceStep>GET BP 6.0.2 XX retrieveStatus</con:sourceStep> <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> <con:targetType>planId</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -28911,9 +31239,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="87f3b812-ef7e-4be0-9320-52c8bcb046ab"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportJson" id="5f6239cb-ffa3-41e2-8bea-53c47786757d"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -28924,46 +31252,64 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="externalReferencesResult.name"> + <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.id exists"> <con:configuration> - <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].name</path> - <content>[BPlan004_6-0.png]</content> + <path>$.plans[0].validationResult.profile[0].rulesMetadata.id</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="externalReferencesResult.status"> + <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.name exists"> <con:configuration> - <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].status</path> - <content>[AVAILABLE]</content> + <path>$.plans[0].validationResult.profile[0].rulesMetadata.name</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="rasterEvaluationResult.name"> + <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.description exists"> <con:configuration> - <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan004_6-0.png')].name</path> - <content>[BPlan004_6-0.png]</content> + <path>$.plans[0].validationResult.profile[0].rulesMetadata.description</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="rasterEvaluationResult.crsStatus"> + <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.version exists"> <con:configuration> - <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan004_6-0.png')].crsStatus</path> - <content>[MISSING]</content> + <path>$.plans[0].validationResult.profile[0].rulesMetadata.version</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="75b7a2e6-379a-4cb9-b379-f7140a10ded9" name="rasterEvaluationResult.imageFormatStatus"> + <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.source exists"> <con:configuration> - <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan004_6-0.png')].imageFormatStatus</path> - <content>[SUPPORTED]</content> + <path>$.plans[0].validationResult.profile[0].rulesMetadata.source</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.ergebnis.valid exists"> + <con:configuration> + <path>$.plans[0].validationResult.profile[0].ergebnis.valid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.ergebnis.rules exists"> + <con:configuration> + <path>$.plans[0].validationResult.profile[0].ergebnis.rules</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -28982,9 +31328,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="d1b25a16-eb87-41a2-bdc3-7ea847d92131"> + <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportPdf" id="df5d365b-022b-4f93-9bd8-d8f713035e70"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -29008,9 +31354,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan" id="fcfe9afc-ad18-49df-99cb-5a7891025f2c"> + <con:testStep type="httprequest" name="DEL BP 6.0.2 XX deletePlan" id="a55332ad-10f5-4238-9d79-a72c29a4344b"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 XX deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -29043,79 +31389,17 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlanNotSupportedFormatExpectError415" id="f6834dbd-6794-4a56-8a1c-9a46db64cbfd"> - <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlanNotSupportedFormatExpectError415" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-test"/> -</xml-fragment></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>415</codes> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BPlan004_6-0.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0_NotSupportedFormatJPEG.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>skipSemantisch</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipFlaechenschluss</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipGeltungsbereich</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipLaufrichtung</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter required="false" disableUrlEncoding="false"> - <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> - <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> - </con:parameter> - <con:parameter> - <con:name>planStatus</con:name> - <con:value>FESTGESTELLT</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> - </con:config> - </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="f6db3459-6183-408a-a68a-d070a034a34f"> + <con:testStep type="transfer" name="Cleanup Properties" id="305457bb-5704-4cb3-bf8f-968f825d2642"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>profile</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>profile</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>empty</con:sourceType> @@ -29139,6 +31423,10 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:name>empty</con:name> <con:value/> </con:property> + <con:property> + <con:name>profile</con:name> + <con:value/> + </con:property> <con:property> <con:name>uuid</con:name> <con:value/> @@ -29149,12 +31437,12 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:property> </con:properties> </con:testCase> - <con:testCase id="437fdb33-c85f-47bc-8896-4551bd0b8771" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Raster evaluation missing PNG TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für die Validierung von Rasterdaten (CRS und Bildformat), wenn die Rasterdatei im XPlanArchiv fehlt</con:description> + <con:testCase id="2b029748-1503-4e80-96f7-016af68421f7" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Validation geometric error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für die Validierung eines geometrisch invaliden Planwerks.</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" id="2b2df413-8661-4c46-aaff-51a03681724e"> + <con:testStep type="httprequest" name="POST BP 5.2 XX importPlan" id="b10d677b-59aa-4b8c-8822-d24b5aec84c3"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.2 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> <con:entry key="Accept" value="application/json"/> @@ -29163,12 +31451,12 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="047b0265-8e8e-45c2-b4d6-1c67ce5c4a7c" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> + <con:assertion type="JsonPath Existence Match" id="a14750a4-b6ee-40eb-b83b-6905d92e26ed" name="uuidExists"> <con:configuration> <path>$.uuid</path> <content>true</content> @@ -29177,7 +31465,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="statusLinkExists"> <con:configuration> <path>$.statusLink</path> <content>true</content> @@ -29186,7 +31474,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="hrefExists"> <con:configuration> <path>$.statusLink.href</path> <content>true</content> @@ -29204,42 +31492,40 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BPlan004_6-0.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0_MissingPNG.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + <con:name>BP_6.0.2_valide.zip</con:name> + <con:contentType>application/gml+xml</con:contentType> + <con:contentId>BP_5.2_geometricErrorSelbstueberschneidung.gml</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/plans/BP_5.2_geometricErrorSelbstueberschneidung.gml</con:url> + <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters> <con:parameter> <con:name>skipSemantisch</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipFlaechenschluss</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipGeltungsbereich</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipLaufrichtung</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> - <con:parameter required="false" disableUrlEncoding="false"> + <con:parameter> <con:name>internalId</con:name> <con:value>soapui-test-id</con:value> <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> </con:parameter> <con:parameter> <con:name>planStatus</con:name> @@ -29249,13 +31535,13 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="9db231a3-6738-497f-9fb6-2d374a3b3657"> + <con:testStep type="transfer" name="POST BP 5.2 XX importPlan Property Transfer" id="4b681a4a-a640-4d3c-beb3-0620af4aba1b"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> + <con:sourceStep>POST BP 5.2 XX importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -29265,26 +31551,104 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="f196a0ba-4d6a-459d-9766-c46cfe148b94"> + <con:testStep type="httprequest" name="GET BP 5.2 XX pollStatus" id="ac7b19e3-16d7-43df-8beb-f99ba6965fca"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="9c15ee46-6bc7-4cb2-bca6-6439ca6fdd4f" name="statusExists"> + <con:configuration> + <path>$.status</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="groovy" name="pollStatus" id="51cca651-dfca-49d5-bcf9-0de0450da0c1"> + <con:settings/> + <con:config> + <script>import groovy.json.JsonSlurper + +def testStepName = "GET BP 5.2 XX pollStatus" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) + +if( context.loopIndex == null ) + context.loopIndex = 0 + +if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveStatus" id="fd12ecea-5fb2-4c6a-9ce1-5dfe5ef74f3f"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> <con:configuration> <path>$.status</path> + <content>IMPORT_ABORTED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href report json"> + <con:configuration> + <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href rename pdf"> + <con:configuration> + <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> <con:credentials> @@ -29300,73 +31664,140 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="a0e1df51-0cd3-49f0-b7e3-1725d1272fc7"> - <con:settings/> - <con:config> - <script>import groovy.json.JsonSlurper - -def testStepName = "GET BP 6.0 XX pollStatus" -def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") -def json = new JsonSlurper().parseText(response) - -if( context.loopIndex == null ) - context.loopIndex = 0 - -if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ - sleep(1000) - testRunner.gotoStepByName(testStepName) -} else if (context.loopIndex == 40) { - context.loopIndex = null - assert(false) -} else { - context.loopIndex = null -}</script> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="c5f8a9ca-d815-492b-a437-6da38063f5d3"> + <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveReportJson" id="9a1f0658-2479-4293-af08-9525cf0e46e7"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.name"> + <con:configuration> + <path>$.plans[?(@.name == 'BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI')].name</path> + <content>[BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.valid"> + <con:configuration> + <path>$.plans[?(@.valid == false)].valid</path> + <content>[false]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="status"> <con:configuration> <path>$.status</path> - <content>IMPORT_ABORTED</content> + <content>COMPLETED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="129ac743-0353-43ba-93a5-97580a06afee" name="errorMsgExists"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid"> <con:configuration> - <path>$.errorMsg</path> - <content>true</content> + <path>$.plans[?(@.validationResult.geometrisch.valid == false)].validationResult.geometrisch.valid</path> + <content>[false]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.status"> <con:configuration> - <path>$.links</path> - <content>true</content> + <path>$.plans[?(@.validationResult.geometrisch.status == 'COMPLETED')].validationResult.geometrisch.status</path> + <content>[COMPLETED]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.rules.findings.gmlIds"> <con:configuration> - <path>$.links[0].href</path> - <content>true</content> + <path>$.plans..validationResult.geometrisch.rules[*].findings[*].gmlIds</path> + <content>[["Gml_C7986975-B702-46BF-9669-E8A2794BCF23"]]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.type"> + <con:configuration> + <path>$.geomfindings.type</path> + <content>FeatureCollection</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.type"> + <con:configuration> + <path>$.geomfindings.features[0].type</path> + <content>Feature</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.geometry.type"> + <con:configuration> + <path>$.geomfindings.features[0].geometry.type</path> + <content>Point</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.geometry.coordinates"> + <con:configuration> + <path>$.geomfindings.features[0].geometry.coordinates</path> + <content>[10.04024134282035,53.581840521708514]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.level"> + <con:configuration> + <path>$.geomfindings.features[0].properties.level</path> + <content>ERROR</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.gmlIds"> + <con:configuration> + <path>$.geomfindings.features[0].properties.gmlIds</path> + <content>Gml_C7986975-B702-46BF-9669-E8A2794BCF23</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.planName"> + <con:configuration> + <path>$.geomfindings.features[0].properties.planName</path> + <content>BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.id"> + <con:configuration> + <path>$.geomfindings.features[0].properties.id</path> + <content>2.2.2.1</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -29385,70 +31816,115 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="bfbc155e-88f4-4f2c-a4cc-7dc431caf5fb"> + <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveReportPdf" id="8a9de111-9d2b-4c7e-b664-e02e336fe55e"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="89c7e1e0-c650-465c-9d3e-9da776d0f125" name="externalReferencesResult.name"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveGeomfindings" id="b95c9898-c9b8-4a47-bcc8-409bad9234c5"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveGeomfindings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}/geomfindings</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].name</path> - <content>[BPlan004_6-0.png]</content> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="type"> + <con:configuration> + <path>$.type</path> + <content>FeatureCollection</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="89c7e1e0-c650-465c-9d3e-9da776d0f125" name="externalReferencesResult.status"> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.type"> <con:configuration> - <path>$.plans..externalReferencesResult[?(@.name == 'BPlan004_6-0.png')].status</path> - <content>[MISSING]</content> + <path>$.features[0].type</path> + <content>Feature</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="ab778302-2b91-4fb9-8cf2-777ab107e057" name="rasterEvaluationResults"> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.geometry.type"> <con:configuration> - <path>$.plans..rasterEvaluationResult[?(@.rasterEvaluationResult == '[]')]</path> - <content>[]</content> + <path>$.features[0].geometry.type</path> + <content>Point</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.geometry.coordinates"> + <con:configuration> + <path>$.features[0].geometry.coordinates</path> + <content>[10.04024134282035,53.581840521708514]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.level"> + <con:configuration> + <path>$.features[0].properties.level</path> + <content>ERROR</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.gmlIds"> + <con:configuration> + <path>$.features[0].properties.gmlIds</path> + <content>Gml_C7986975-B702-46BF-9669-E8A2794BCF23</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.planName"> + <con:configuration> + <path>$.features[0].properties.planName</path> + <content>BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="be3618fd-23d8-4343-ad68-f6d967896fc5"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.id"> <con:configuration> - <codes>200</codes> + <path>$.features[0].properties.id</path> + <content>2.2.2.1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> @@ -29464,7 +31940,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="4806fe96-bf30-4465-8087-0fa0c36949df"> + <con:testStep type="transfer" name="Cleanup Properties" id="78e7db8d-3bf3-4b27-b4e3-2237c17b771f"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> @@ -29480,20 +31956,20 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:properties> <con:property> <con:name>empty</con:name> - <con:value/> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </con:property> <con:property> <con:name>uuid</con:name> - <con:value/> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </con:property> </con:properties> </con:testCase> - <con:testCase id="301145fa-4826-4743-ad59-773d6dd91d36" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Raster evaluation wrong CRS TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für die Validierung von Rasterdaten (CRS und Bildformat), wenn ein falsches CRS in den Rasterdaten gesetzt ist</con:description> + <con:testCase id="26e0d77e-b853-48e9-8365-16aa0a912489" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Validation semantic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für die Validierung eines semantisch invaliden Planwerks.</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" id="d36388d8-ee33-4b7e-81a5-b857d9504b27"> + <con:testStep type="httprequest" name="POST BP 6.0 XX importPlan" id="c1961535-f49d-46e5-91c5-4fb0f9a9f472"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 6.0 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> <con:entry key="Accept" value="application/json"/> @@ -29502,12 +31978,12 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="047b0265-8e8e-45c2-b4d6-1c67ce5c4a7c" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> + <con:assertion type="JsonPath Existence Match" id="a14750a4-b6ee-40eb-b83b-6905d92e26ed" name="uuidExists"> <con:configuration> <path>$.uuid</path> <content>true</content> @@ -29516,7 +31992,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="statusLinkExists"> <con:configuration> <path>$.statusLink</path> <content>true</content> @@ -29525,7 +32001,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="hrefExists"> <con:configuration> <path>$.statusLink.href</path> <content>true</content> @@ -29543,42 +32019,40 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BPlan004_6-0.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BPlan006_6-0_WrongCRSInTIFF4326.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + <con:name>BP_6.0.2_valide.zip</con:name> + <con:contentType>application/gml+xml</con:contentType> + <con:contentId>BP_6.0_semanticErrorRule5_1_5.gml</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-validator-api/plans/BP_6.0_semanticErrorRule5_1_5.gml</con:url> + <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters> <con:parameter> <con:name>skipSemantisch</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipFlaechenschluss</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipGeltungsbereich</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipLaufrichtung</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> - <con:parameter required="false" disableUrlEncoding="false"> + <con:parameter> <con:name>internalId</con:name> <con:value>soapui-test-id</con:value> <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> </con:parameter> <con:parameter> <con:name>planStatus</con:name> @@ -29588,13 +32062,13 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Property Transfer" id="0fef90e9-f502-4b3e-b678-3c3944755085"> + <con:testStep type="transfer" name="POST BP 6.0 XX importPlan Property Transfer" id="cf19ee36-f9b4-462e-8420-31bc6f295d01"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan</con:sourceStep> + <con:sourceStep>POST BP 6.0 XX importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -29604,20 +32078,20 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="4abf7e36-9bb1-4273-bc30-a5d49711e241"> + <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="26b9dec4-c581-418e-8397-bc2d4e8ed7fa"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:assertion type="JsonPath Existence Match" id="9c15ee46-6bc7-4cb2-bca6-6439ca6fdd4f" name="statusExists"> <con:configuration> <path>$.status</path> <content>true</content> @@ -29639,7 +32113,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="e221f8f8-df20-43b9-9463-423096800877"> + <con:testStep type="groovy" name="pollStatus" id="6ddfc1b3-c944-4bd8-a2f1-aa45bf4158ae"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper @@ -29662,20 +32136,20 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="e808c8ba-5d87-47fe-9aaf-bbccdac273c5"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="919ec2bc-1054-47be-ae69-e179795bfa03"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> + <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> <con:configuration> <path>$.status</path> <content>IMPORT_ABORTED</content> @@ -29684,31 +32158,24 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="129ac743-0353-43ba-93a5-97580a06afee" name="errorMsgExists"> - <con:configuration> - <path>$.errorMsg</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> + <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href report json"> <con:configuration> - <path>$.links</path> + <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> + <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href rename pdf"> <con:configuration> - <path>$.links[0].href</path> + <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> <con:credentials> @@ -29724,169 +32191,68 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="92d2f4fa-c141-4300-8211-51dda5cf1cca"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="2f19bbea-bdaf-403e-ba44-eedf2049ee47"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="externalReferencesResult.name"> - <con:configuration> - <path>$.plans..externalReferencesResult[?(@.name == 'BPlan006_6-0.tiff')].name</path> - <content>[BPlan006_6-0.tiff]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="externalReferencesResult.status"> - <con:configuration> - <path>$.plans..externalReferencesResult[?(@.name == 'BPlan006_6-0.tiff')].status</path> - <content>[AVAILABLE]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="rasterEvaluationResult.name"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.name"> <con:configuration> - <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan006_6-0.tiff')].name</path> - <content>[BPlan006_6-0.tiff]</content> + <path>$.plans[?(@.name == 'BP_6.0_semanticError_5_1_5-SoapUI-XPlanValidatorAPI')].name</path> + <content>[BP_6.0_semanticError_5_1_5-SoapUI-XPlanValidatorAPI]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="rasterEvaluationResult.crsStatus"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.valid"> <con:configuration> - <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan006_6-0.tiff')].crsStatus</path> - <content>[UNSUPPORTED]</content> + <path>$.plans[?(@.valid == false)].valid</path> + <content>[false]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="40844e9c-7cc7-4a1c-a0ff-4b21e34dd3f3" name="rasterEvaluationResult.imageFormatStatus"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="status"> <con:configuration> - <path>$.plans..rasterEvaluationResult[?(@.name == 'BPlan006_6-0.tiff')].imageFormatStatus</path> - <content>[SUPPORTED]</content> + <path>$.status</path> + <content>COMPLETED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="838f0872-4fa2-4131-8588-75673197518c"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="b4a783ea-b823-4f80-a052-a2cacf6652f9"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" disabled="false" entitize="false" ignoreEmpty="false" transferChildNodes="false" transferToAll="false" useXQuery="false"> - <con:name>uuid</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:sourcePath xsi:nil="true"/> - <con:targetType>uuid</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:targetPath xsi:nil="true"/> - <con:type>XPATH</con:type> - <con:targetTransferType>XPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:properties> - <con:property> - <con:name>empty</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>uuid</con:name> - <con:value/> - </con:property> - </con:properties> - </con:testCase> - <con:testCase id="184da798-81c7-4677-bdf3-d4ff823c0b21" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Profiles TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:settings/> - <con:testStep type="httprequest" name="GET XX X.X XX showConfig" id="0a19d2a8-8323-4881-8650-b63523e5b373"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="ada729bc-f24a-41d6-bcf5-4dd34948e273" name="GET XX X.X XX showConfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/info</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="860eaa41-d4c0-4b28-9e32-132c7e894b18" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="1beb64fd-81c2-46b9-b690-f88938a487fc" name="hasVersion"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid"> <con:configuration> - <path>$.version</path> - <content>true</content> + <path>$.plans[?(@.validationResult.semantisch.valid == false)].validationResult.semantisch.valid</path> + <content>[false]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> - </con:assertion> - <con:assertion type="GroovyScriptAssertion" id="bf3730ab-4f4d-4167-b404-d09046ef994c" name="versionNotNull"> - <con:configuration> - <scriptText>import groovy.json.JsonSlurper - -json = new JsonSlurper().parseText(messageExchange.response.responseContent) -assert !(json.isEmpty()) - -assert json.version != null</scriptText> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.status"> + <con:configuration> + <path>$.plans[?(@.validationResult.semantisch.status == 'COMPLETED')].validationResult.semantisch.status</path> + <content>[COMPLETED]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="a525ec99-c1ee-4ed3-a1f4-19760fc2d1c0" name="supportedXPlanGmlVersions"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.rules.findings.gmlIds"> <con:configuration> - <path>$.supportedXPlanGmlVersions</path> - <content>["XPLAN_40","XPLAN_41","XPLAN_50","XPLAN_51","XPLAN_52","XPLAN_53","XPLAN_54","XPLAN_60"]</content> + <path>$.plans..validationResult.semantisch.rules[*].findings[*].gmlIds</path> + <content>[["Gml_C0EE7EFD-A811-4E1D-98B4-782540EF8AB7"]]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -29905,39 +32271,76 @@ assert json.version != null</scriptText> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="GET XX X.X XX showConfig Property Transfer" id="5c00b85e-4cdb-4b50-a290-fe440502f3d5"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="b54130e3-c36e-41f0-9328-f155cdff6c9c"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="Cleanup Properties" id="2ebae5b1-b7f5-4f2a-a6ff-e2cfa22e951d"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>profile</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET XX X.X XX showConfig</con:sourceStep> - <con:sourcePath>$.profiles[0]</con:sourcePath> - <con:targetType>profile</con:targetType> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan" id="2d520618-0f96-43e3-8abb-833622c02afa"> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> + <con:property> + <con:name>uuid</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="b6cd1afa-42c6-4c01-9255-07354e3dfbdc" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Validation syntactic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für die Validierung eines syntaktisch invaliden Planwerks.</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 6.0 XX importPlan" id="14afc033-6d43-4ace-a172-0e6847488847"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 6.0 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-profiles-test"/> + <con:entry key="X-Filename" value="soapui-test"/> </xml-fragment></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="047b0265-8e8e-45c2-b4d6-1c67ce5c4a7c" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> + <con:assertion type="JsonPath Existence Match" id="a14750a4-b6ee-40eb-b83b-6905d92e26ed" name="uuidExists"> <con:configuration> <path>$.uuid</path> <content>true</content> @@ -29946,7 +32349,7 @@ assert json.version != null</scriptText> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> + <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="statusLinkExists"> <con:configuration> <path>$.statusLink</path> <content>true</content> @@ -29955,7 +32358,7 @@ assert json.version != null</scriptText> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> + <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="hrefExists"> <con:configuration> <path>$.statusLink.href</path> <content>true</content> @@ -29973,63 +32376,56 @@ assert json.version != null</scriptText> <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/octet-stream</con:contentType> - <con:contentId>BP_6.0.2.zip</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0.2.zip</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + <con:name>BP_6.0.2_valide.zip</con:name> + <con:contentType>application/gml+xml</con:contentType> + <con:contentId>BP_6.0_syntacticErrors.gml</con:contentId> + <con:part xsi:nil="true"/> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0_syntacticErrors.gml</con:url> + <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters> <con:parameter> <con:name>skipSemantisch</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipFlaechenschluss</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipGeltungsbereich</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> <con:parameter> <con:name>skipLaufrichtung</con:name> - <con:value>true</con:value> + <con:value>false</con:value> <con:style>QUERY</con:style> </con:parameter> - <con:parameter required="false" disableUrlEncoding="false"> + <con:parameter> <con:name>internalId</con:name> - <con:value>soapui-profiles-test-id</con:value> + <con:value>soapui-test-id</con:value> <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> </con:parameter> <con:parameter> <con:name>planStatus</con:name> <con:value>FESTGESTELLT</con:value> <con:style>QUERY</con:style> </con:parameter> - <con:parameter> - <con:name>profiles</con:name> - <con:value>${#TestCase#profile}</con:value> - <con:style>QUERY</con:style> - </con:parameter> </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan Property Transfer" id="9b549a9d-2929-4756-8527-7b00357853d5"> + <con:testStep type="transfer" name="POST BP 6.0 XX importPlan Property Transfer" id="d0365d19-df2d-478d-87b0-505420efc545"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0.2 xF,sS,sF,sG,sL,iI,pS,pf importPlan</con:sourceStep> + <con:sourceStep>POST BP 6.0 XX importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -30039,20 +32435,20 @@ assert json.version != null</scriptText> </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX pollStatus" id="7672cc36-9f90-4575-b8db-d44c16e65fff"> + <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="8a147f43-2708-4976-9a72-79a753ce248f"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> + <con:assertion type="JsonPath Existence Match" id="9c15ee46-6bc7-4cb2-bca6-6439ca6fdd4f" name="statusExists"> <con:configuration> <path>$.status</path> <content>true</content> @@ -30074,19 +32470,19 @@ assert json.version != null</scriptText> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="4ebd1bce-c2a9-479f-8bdf-f6747f908e6b"> + <con:testStep type="groovy" name="pollStatus" id="27bed4c3-308d-4bf3-961e-60617437a119"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper -def testStepName = "GET BP 6.0.2 XX pollStatus" +def testStepName = "GET BP 6.0 XX pollStatus" def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") def json = new JsonSlurper().parseText(response) if( context.loopIndex == null ) context.loopIndex = 0 -if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ +if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ sleep(1000) testRunner.gotoStepByName(testStepName) } else if (context.loopIndex == 40) { @@ -30097,158 +32493,46 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveStatus" id="4d4ef268-51a5-47d5-b94b-4caacfe7c0fb"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="8d0a5df8-4b1b-4573-9d5c-ce58838fcf50"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0.2 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> + <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> <con:configuration> <path>$.status</path> - <content>IMPORT_FINISHED</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="320f668b-21ff-4589-a944-cfbd07931e2a" name="importedPlanIdsExists"> - <con:configuration> - <path>$.importedPlanIds</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> - <con:configuration> - <path>$.links</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> - <con:configuration> - <path>$.links[0].href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="transfer" name="GET BP 6.0.2 XX retrieveStatus Property Transfer" id="fb2dfcd0-5278-4961-ba54-f4cc2e112df9"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>planId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET BP 6.0.2 XX retrieveStatus</con:sourceStep> - <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> - <con:targetType>planId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportJson" id="5f6239cb-ffa3-41e2-8bea-53c47786757d"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.id exists"> - <con:configuration> - <path>$.plans[0].validationResult.profile[0].rulesMetadata.id</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.name exists"> - <con:configuration> - <path>$.plans[0].validationResult.profile[0].rulesMetadata.name</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.description exists"> - <con:configuration> - <path>$.plans[0].validationResult.profile[0].rulesMetadata.description</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.version exists"> - <con:configuration> - <path>$.plans[0].validationResult.profile[0].rulesMetadata.version</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.rulesMetadata.source exists"> - <con:configuration> - <path>$.plans[0].validationResult.profile[0].rulesMetadata.source</path> - <content>true</content> + <content>IMPORT_ABORTED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.ergebnis.valid exists"> + <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href report json"> <con:configuration> - <path>$.plans[0].validationResult.profile[0].ergebnis.valid</path> + <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c73799cd-67f9-4111-869e-5c419e2e4445" name="profile.ergebnis.rules exists"> + <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href rename pdf"> <con:configuration> - <path>$.plans[0].validationResult.profile[0].ergebnis.rules</path> + <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> <con:credentials> @@ -30264,19 +32548,55 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0.2 XX retrieveReportPdf" id="df5d365b-022b-4f93-9bd8-d8f713035e70"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="57c3034e-2e2b-44bb-bd6d-11818464258e"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="873abd32-15a2-4f63-a5cf-93aa57bee711" name="GET BP 6.0.2 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2b121572-75dc-4331-8608-63651d9942fe" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans"> + <con:configuration> + <path>$.plans</path> + <content>[]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="status"> + <con:configuration> + <path>$.status</path> + <content>TERMINATED_WITH_ERRORS</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="syntaktisch.valid"> + <con:configuration> + <path>$.syntaktisch.valid</path> + <content>false</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="syntaktisch.status"> + <con:configuration> + <path>$.syntaktisch.status</path> + <content>COMPLETED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> @@ -30290,28 +32610,19 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0.2 XX deletePlan" id="a55332ad-10f5-4238-9d79-a72c29a4344b"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="eca4a3c4-f732-470c-b854-c5335597b25f"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0.2 XX deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> - <con:configuration> - <path>$.message</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> @@ -30325,17 +32636,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="305457bb-5704-4cb3-bf8f-968f825d2642"> + <con:testStep type="transfer" name="Cleanup Properties" id="4ccda974-a38f-4ab8-ad8b-bf78988ce275"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>profile</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>profile</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>empty</con:sourceType> @@ -30344,46 +32647,27 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:targetStep>#TestCase#</con:targetStep> <con:upgraded>true</con:upgraded> </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>planId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>planId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> </con:config> </con:testStep> <con:properties> <con:property> <con:name>empty</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>profile</con:name> - <con:value/> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </con:property> <con:property> <con:name>uuid</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>planId</con:name> - <con:value/> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </con:property> </con:properties> </con:testCase> - <con:testCase id="2b029748-1503-4e80-96f7-016af68421f7" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Validation geometric error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für die Validierung eines geometrisch invaliden Planwerks.</con:description> + <con:testCase id="935b9753-8616-429d-93c2-c479acd3d604" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 5.2 XX importPlan" id="b10d677b-59aa-4b8c-8822-d24b5aec84c3"> + <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="4251d95f-14d6-4fe6-a581-c8c0ef2174fb"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.2 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-test"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> @@ -30430,54 +32714,22 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:attachment> <con:name>BP_6.0.2_valide.zip</con:name> <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_5.2_geometricErrorSelbstueberschneidung.gml</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/plans/BP_5.2_geometricErrorSelbstueberschneidung.gml</con:url> + <con:contentId>BP_5.4_MultiplePlaene.gml</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene.gml</con:url> <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>skipSemantisch</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipFlaechenschluss</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipGeltungsbereich</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipLaufrichtung</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>planStatus</con:name> - <con:value>FESTGESTELLT</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 5.2 XX importPlan Property Transfer" id="4b681a4a-a640-4d3c-beb3-0620af4aba1b"> + <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="ab1655c5-f352-4608-8fda-c57fa895357c"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 5.2 XX importPlan</con:sourceStep> + <con:sourceStep>POST BP 5.4 XX importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -30487,9 +32739,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.2 XX pollStatus" id="ac7b19e3-16d7-43df-8beb-f99ba6965fca"> + <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="423d8d23-791c-41bc-8a3f-431fcc48dbb0"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -30522,19 +32774,19 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="51cca651-dfca-49d5-bcf9-0de0450da0c1"> + <con:testStep type="groovy" name="pollStatus" id="2dba8446-75b8-4127-9212-bf72ed79e81c"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper -def testStepName = "GET BP 5.2 XX pollStatus" +def testStepName = "GET BP 5.4 XX pollStatus" def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") def json = new JsonSlurper().parseText(response) if( context.loopIndex == null ) context.loopIndex = 0 -if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ +if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ sleep(1000) testRunner.gotoStepByName(testStepName) } else if (context.loopIndex == 40) { @@ -30545,9 +32797,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveStatus" id="fd12ecea-5fb2-4c6a-9ce1-5dfe5ef74f3f"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="d4cbd531-5b2b-48f0-9f24-908896db3ffd"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -30561,7 +32813,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> <con:configuration> <path>$.status</path> - <content>IMPORT_ABORTED</content> + <content>IMPORT_FINISHED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -30600,9 +32852,36 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveReportJson" id="9a1f0658-2479-4293-af08-9525cf0e46e7"> + <con:testStep type="transfer" name="GET BP 5.4 XX retrieveStatus Property Transfer" id="feca6672-2522-4374-bf4b-7da3ac5ede6d"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>firstPlanId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> + <con:targetType>firstPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>secondPlanId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[1]</con:sourcePath> + <con:targetType>secondPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="24bf2954-b830-4c84-827e-c54126d0a410"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -30613,127 +32892,82 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.name"> - <con:configuration> - <path>$.plans[?(@.name == 'BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI')].name</path> - <content>[BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.valid"> - <con:configuration> - <path>$.plans[?(@.valid == false)].valid</path> - <content>[false]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="status"> - <con:configuration> - <path>$.status</path> - <content>COMPLETED</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid"> - <con:configuration> - <path>$.plans[?(@.validationResult.geometrisch.valid == false)].validationResult.geometrisch.valid</path> - <content>[false]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.status"> - <con:configuration> - <path>$.plans[?(@.validationResult.geometrisch.status == 'COMPLETED')].validationResult.geometrisch.status</path> - <content>[COMPLETED]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.rules.findings.gmlIds"> + <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> <con:configuration> - <path>$.plans..validationResult.geometrisch.rules[*].findings[*].gmlIds</path> - <content>[["Gml_C7986975-B702-46BF-9669-E8A2794BCF23"]]</content> + <path>$.validationName</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.type"> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> <con:configuration> - <path>$.geomfindings.type</path> - <content>FeatureCollection</content> + <path>$.syntaktisch.valid</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.type"> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> <con:configuration> - <path>$.geomfindings.features[0].type</path> - <content>Feature</content> + <path>$.syntaktisch.status</path> + <content>COMPLETED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.geometry.type"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan1"> <con:configuration> - <path>$.geomfindings.features[0].geometry.type</path> - <content>Point</content> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.geometry.coordinates"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan1"> <con:configuration> - <path>$.geomfindings.features[0].geometry.coordinates</path> - <content>[10.04024134282035,53.581840521708514]</content> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.level"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan1"> <con:configuration> - <path>$.geomfindings.features[0].properties.level</path> - <content>ERROR</content> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.gmlIds"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan2"> <con:configuration> - <path>$.geomfindings.features[0].properties.gmlIds</path> - <content>Gml_C7986975-B702-46BF-9669-E8A2794BCF23</content> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.planName"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan2"> <con:configuration> - <path>$.geomfindings.features[0].properties.planName</path> - <content>BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI</content> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="geomfindings.features.properties.id"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan2"> <con:configuration> - <path>$.geomfindings.features[0].properties.id</path> - <content>2.2.2.1</content> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -30752,9 +32986,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveReportPdf" id="8a9de111-9d2b-4c7e-b664-e02e336fe55e"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="3b784c67-4936-4a2d-9d58-b6ed674cb5af"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -30778,86 +33012,58 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.2 XX retrieveGeomfindings" id="b95c9898-c9b8-4a47-bcc8-409bad9234c5"> + <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteFirstPlan" id="9698e68b-5efe-487b-95db-6b087f800aff"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.2 XX retrieveGeomfindings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteFirstPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/geo+json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}/geomfindings</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#firstPlanId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="type"> - <con:configuration> - <path>$.type</path> - <content>FeatureCollection</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.type"> - <con:configuration> - <path>$.features[0].type</path> - <content>Feature</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.geometry.type"> - <con:configuration> - <path>$.features[0].geometry.type</path> - <content>Point</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.geometry.coordinates"> - <con:configuration> - <path>$.features[0].geometry.coordinates</path> - <content>[10.04024134282035,53.581840521708514]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.level"> - <con:configuration> - <path>$.features[0].properties.level</path> - <content>ERROR</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.gmlIds"> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> <con:configuration> - <path>$.features[0].properties.gmlIds</path> - <content>Gml_C7986975-B702-46BF-9669-E8A2794BCF23</content> + <path>$.message</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.planName"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteSecondPlan" id="2bbb8d7c-5ca6-4c6a-9caf-38c69a721450"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteSecondPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#secondPlanId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.features[0].properties.planName</path> - <content>BP_5.2-geometricErrorSelbstueberschneidung_SoapUI-XPlanValidatorAPI</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="21c11a00-e6f6-48e4-ace1-097d95c9e88a" name="features.properties.id"> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> <con:configuration> - <path>$.features[0].properties.id</path> - <content>2.2.2.1</content> + <path>$.message</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -30876,7 +33082,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="78e7db8d-3bf3-4b27-b4e3-2237c17b771f"> + <con:testStep type="transfer" name="Cleanup Properties" id="3353301c-affe-45bd-951f-35532594db9c"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> @@ -30887,6 +33093,22 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:targetStep>#TestCase#</con:targetStep> <con:upgraded>true</con:upgraded> </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>firstPlanId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>firstPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>secondPlanId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>secondPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> </con:config> </con:testStep> <con:properties> @@ -30898,19 +33120,24 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:name>uuid</con:name> <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </con:property> + <con:property> + <con:name>firstPlanId</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> + <con:property> + <con:name>secondPlanId</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> </con:properties> </con:testCase> - <con:testCase id="26e0d77e-b853-48e9-8365-16aa0a912489" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Validation semantic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für die Validierung eines semantisch invaliden Planwerks.</con:description> + <con:testCase id="5191381e-2d7c-4a63-9a00-e3e8c79c0119" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans syntactic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen mit syntaktischen Fehlern</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 6.0 XX importPlan" id="c1961535-f49d-46e5-91c5-4fb0f9a9f472"> + <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="9c1846b2-97c7-422d-83f3-e1425be742a3"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 6.0 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-test"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> @@ -30957,54 +33184,22 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:attachment> <con:name>BP_6.0.2_valide.zip</con:name> <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_6.0_semanticErrorRule5_1_5.gml</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-validator-api/plans/BP_6.0_semanticErrorRule5_1_5.gml</con:url> + <con:contentId>BP_5.4_MultiplePlaene_syntacticError.gml</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_syntacticError.gml</con:url> <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>skipSemantisch</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipFlaechenschluss</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipGeltungsbereich</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipLaufrichtung</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>planStatus</con:name> - <con:value>FESTGESTELLT</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0 XX importPlan Property Transfer" id="cf19ee36-f9b4-462e-8420-31bc6f295d01"> + <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="807321c3-993d-4b7c-87b4-465cdf0ed729"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0 XX importPlan</con:sourceStep> + <con:sourceStep>POST BP 5.4 XX importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -31014,9 +33209,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="26b9dec4-c581-418e-8397-bc2d4e8ed7fa"> + <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="44643a29-37b8-48d2-8fa4-19c0af06ea88"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -31049,12 +33244,12 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="6ddfc1b3-c944-4bd8-a2f1-aa45bf4158ae"> + <con:testStep type="groovy" name="pollStatus" id="47ff2ba7-5ded-4a65-9917-11fe97b0bf19"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper -def testStepName = "GET BP 6.0 XX pollStatus" +def testStepName = "GET BP 5.4 XX pollStatus" def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") def json = new JsonSlurper().parseText(response) @@ -31072,9 +33267,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="919ec2bc-1054-47be-ae69-e179795bfa03"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="4c093447-d7ea-4282-a7b1-d32fabee78aa"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -31127,68 +33322,59 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="2f19bbea-bdaf-403e-ba44-eedf2049ee47"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="42c3bee2-c4ea-4c61-8391-39f9e82fe017"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.name"> - <con:configuration> - <path>$.plans[?(@.name == 'BP_6.0_semanticError_5_1_5-SoapUI-XPlanValidatorAPI')].name</path> - <content>[BP_6.0_semanticError_5_1_5-SoapUI-XPlanValidatorAPI]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans.valid"> + <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> <con:configuration> - <path>$.plans[?(@.valid == false)].valid</path> - <content>[false]</content> + <path>$.validationName</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="status"> + <con:assertion type="JsonPath Match" id="e400d19f-3dd2-43c4-b2d5-b4620a7b733c" name="status"> <con:configuration> <path>$.status</path> - <content>COMPLETED</content> + <content>TERMINATED_WITH_ERRORS</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid"> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> <con:configuration> - <path>$.plans[?(@.validationResult.semantisch.valid == false)].validationResult.semantisch.valid</path> - <content>[false]</content> + <path>$.syntaktisch.valid</path> + <content>false</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.status"> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> <con:configuration> - <path>$.plans[?(@.validationResult.semantisch.status == 'COMPLETED')].validationResult.semantisch.status</path> - <content>[COMPLETED]</content> + <path>$.syntaktisch.status</path> + <content>COMPLETED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.rules.findings.gmlIds"> + <con:assertion type="JsonPath Match" id="e400d19f-3dd2-43c4-b2d5-b4620a7b733c" name="plans"> <con:configuration> - <path>$.plans..validationResult.semantisch.rules[*].findings[*].gmlIds</path> - <content>[["Gml_C0EE7EFD-A811-4E1D-98B4-782540EF8AB7"]]</content> + <path>$.plans</path> + <content>[]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -31207,9 +33393,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="b54130e3-c36e-41f0-9328-f155cdff6c9c"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="67dbb413-836d-4afe-8931-347fb24fd0be"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -31233,7 +33419,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="2ebae5b1-b7f5-4f2a-a6ff-e2cfa22e951d"> + <con:testStep type="transfer" name="Cleanup Properties" id="93e1aaf2-9f53-4167-9a72-5563521f0d8f"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> @@ -31257,17 +33443,14 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:property> </con:properties> </con:testCase> - <con:testCase id="b6cd1afa-42c6-4c01-9255-07354e3dfbdc" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Validation syntactic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für die Validierung eines syntaktisch invaliden Planwerks.</con:description> + <con:testCase id="c74899ca-956d-44a1-889e-b98853ea9908" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans geometric error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen mit geometrischen Fehlern</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 6.0 XX importPlan" id="14afc033-6d43-4ace-a172-0e6847488847"> + <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="2862b79b-fd89-45ec-8725-e352f0d34aa3"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 6.0 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Accept" value="application/json"/> - <con:entry key="X-Filename" value="soapui-test"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> @@ -31314,54 +33497,22 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:attachment> <con:name>BP_6.0.2_valide.zip</con:name> <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_6.0_syntacticErrors.gml</con:contentId> - <con:part xsi:nil="true"/> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0_syntacticErrors.gml</con:url> + <con:contentId>BP_5.4_MultiplePlaene_geometricError.gml</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_geometricError.gml</con:url> <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>skipSemantisch</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipFlaechenschluss</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipGeltungsbereich</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipLaufrichtung</con:name> - <con:value>false</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>planStatus</con:name> - <con:value>FESTGESTELLT</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0 XX importPlan Property Transfer" id="d0365d19-df2d-478d-87b0-505420efc545"> + <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="aa7ade52-3336-417b-a149-4cb75d12c8c8"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0 XX importPlan</con:sourceStep> + <con:sourceStep>POST BP 5.4 XX importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -31371,9 +33522,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="8a147f43-2708-4976-9a72-79a753ce248f"> + <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="89f30c70-2852-4b12-9fa4-0ad5f05bd4de"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -31406,12 +33557,12 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="27bed4c3-308d-4bf3-961e-60617437a119"> + <con:testStep type="groovy" name="pollStatus" id="b1a48715-4535-4dff-b797-05fea08588dd"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper -def testStepName = "GET BP 6.0 XX pollStatus" +def testStepName = "GET BP 5.4 XX pollStatus" def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") def json = new JsonSlurper().parseText(response) @@ -31429,9 +33580,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="8d0a5df8-4b1b-4573-9d5c-ce58838fcf50"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="836b8974-f26d-4136-81bc-9ed761a8f2e8"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -31484,9 +33635,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportJson" id="57c3034e-2e2b-44bb-bd6d-11818464258e"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="b4cf7956-d4e0-446e-ba25-74a6da90b1d6"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -31497,37 +33648,91 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="plans"> + <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> <con:configuration> - <path>$.plans</path> - <content>[]</content> + <path>$.validationName</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="status"> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> <con:configuration> - <path>$.status</path> - <content>TERMINATED_WITH_ERRORS</content> + <path>$.syntaktisch.valid</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="syntaktisch.valid"> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> <con:configuration> - <path>$.syntaktisch.valid</path> - <content>false</content> + <path>$.syntaktisch.status</path> + <content>COMPLETED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="syntaktisch.status"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan1"> <con:configuration> - <path>$.syntaktisch.status</path> - <content>COMPLETED</content> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].valid</path> + <content>[false]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan1"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> + <content>[true]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan1"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> + <content>[false]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.rules.findings.level plan1"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.rules[?(@.id == '2.2.2.1')].findings..level</path> + <content>[ERROR]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan2"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].valid</path> + <content>[true]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan2"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> + <content>[true]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan2"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -31546,9 +33751,9 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveReportPdf" id="eca4a3c4-f732-470c-b854-c5335597b25f"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="43a42886-7b4b-42de-829f-c3b4a3be1543"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 6.0 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -31572,7 +33777,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="4ccda974-a38f-4ab8-ad8b-bf78988ce275"> + <con:testStep type="transfer" name="Cleanup Properties" id="a1012adb-4dca-4cd9-be77-952516aab180"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> @@ -31596,10 +33801,10 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:property> </con:properties> </con:testCase> - <con:testCase id="935b9753-8616-429d-93c2-c479acd3d604" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen</con:description> + <con:testCase id="8bdf8454-799d-469e-9552-25d1d44cd8ea" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans semantic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen mit semantischen Fehlern</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="4251d95f-14d6-4fe6-a581-c8c0ef2174fb"> + <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="c1f96f80-628a-479e-aaeb-b7db15ac8180"> <con:settings/> <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -31650,8 +33855,8 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:attachment> <con:name>BP_6.0.2_valide.zip</con:name> <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_5.4_MultiplePlaene.gml</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene.gml</con:url> + <con:contentId>BP_5.4_MultiplePlaene_semanticError.gml</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_semanticError.gml</con:url> <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -31659,7 +33864,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="ab1655c5-f352-4608-8fda-c57fa895357c"> + <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="2481e026-8f3e-45ad-b340-9a2122ba5978"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> @@ -31675,7 +33880,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="423d8d23-791c-41bc-8a3f-431fcc48dbb0"> + <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="8101665a-15a4-4f7e-b199-21b5e0fb6904"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -31710,7 +33915,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="2dba8446-75b8-4127-9212-bf72ed79e81c"> + <con:testStep type="groovy" name="pollStatus" id="88110aca-fc05-4008-9e98-f8e6d86037d7"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper @@ -31722,7 +33927,7 @@ def json = new JsonSlurper().parseText(response) if( context.loopIndex == null ) context.loopIndex = 0 -if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ +if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ sleep(1000) testRunner.gotoStepByName(testStepName) } else if (context.loopIndex == 40) { @@ -31733,7 +33938,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="d4cbd531-5b2b-48f0-9f24-908896db3ffd"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="5d02dd4e-a24f-492c-8cdf-33cb1da4a110"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -31749,7 +33954,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> <con:configuration> <path>$.status</path> - <content>IMPORT_FINISHED</content> + <content>IMPORT_ABORTED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -31772,50 +33977,23 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="transfer" name="GET BP 5.4 XX retrieveStatus Property Transfer" id="feca6672-2522-4374-bf4b-7da3ac5ede6d"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>firstPlanId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> - <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> - <con:targetType>firstPlanId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>secondPlanId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> - <con:sourcePath>$.importedPlanIds[1]</con:sourcePath> - <con:targetType>secondPlanId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> + <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="24bf2954-b830-4c84-827e-c54126d0a410"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="1a319d6c-35cb-4da6-ab12-9adfd4fb0f10"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -31858,7 +34036,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan1"> <con:configuration> <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].valid</path> - <content>[true]</content> + <content>[false]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -31867,7 +34045,16 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan1"> <con:configuration> <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> - <content>[true]</content> + <content>[false]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.rules.findings.level plan1"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.rules[?(@.id == '3.2.3.2')].findings..level</path> + <content>[ERROR]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -31922,7 +34109,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="3b784c67-4936-4a2d-9d58-b6ed674cb5af"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="3ec48fa7-7298-4b4f-aa6e-e1168fec977a"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -31948,77 +34135,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteFirstPlan" id="9698e68b-5efe-487b-95db-6b087f800aff"> - <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteFirstPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#firstPlanId}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> - <con:configuration> - <path>$.message</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteSecondPlan" id="2bbb8d7c-5ca6-4c6a-9caf-38c69a721450"> - <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteSecondPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#secondPlanId}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> - <con:configuration> - <path>$.message</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="3353301c-affe-45bd-951f-35532594db9c"> + <con:testStep type="transfer" name="Cleanup Properties" id="7917701b-c567-4d83-a1ac-638121c801b2"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> @@ -32029,22 +34146,6 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:targetStep>#TestCase#</con:targetStep> <con:upgraded>true</con:upgraded> </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>firstPlanId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>firstPlanId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>secondPlanId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>secondPlanId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> </con:config> </con:testStep> <con:properties> @@ -32056,22 +34157,14 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:name>uuid</con:name> <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </con:property> - <con:property> - <con:name>firstPlanId</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - <con:property> - <con:name>secondPlanId</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> </con:properties> </con:testCase> - <con:testCase id="5191381e-2d7c-4a63-9a00-e3e8c79c0119" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans syntactic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen mit syntaktischen Fehlern</con:description> + <con:testCase id="769749e4-24ae-4a98-afc0-5edf756a7bc4" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans skip errors TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen, die geometrische und semantische Fehler beinhalten. Die geometrische und semantische Validierung werden über Query-Parameter übersprungen.</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="9c1846b2-97c7-422d-83f3-e1425be742a3"> + <con:testStep type="httprequest" name="POST BP 5.4 sS,sF,sG,sL importPlan" id="40d50385-caad-4947-8e3f-2b90936ad585"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 sS,sF,sG,sL importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> @@ -32120,22 +34213,46 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:attachment> <con:name>BP_6.0.2_valide.zip</con:name> <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_5.4_MultiplePlaene_syntacticError.gml</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_syntacticError.gml</con:url> + <con:contentId>BP_5.4_MultiplePlaene_semanticError.gml</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_semanticError.gml</con:url> <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="807321c3-993d-4b7c-87b4-465cdf0ed729"> + <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="7c35f20c-22aa-495b-9ba4-34c644d86ad7"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 5.4 XX importPlan</con:sourceStep> + <con:sourceStep>POST BP 5.4 sS,sF,sG,sL importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -32145,7 +34262,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="44643a29-37b8-48d2-8fa4-19c0af06ea88"> + <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="6a211176-9eb0-45ff-abf3-dded3f8f9865"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -32180,7 +34297,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="47ff2ba7-5ded-4a65-9917-11fe97b0bf19"> + <con:testStep type="groovy" name="pollStatus" id="ed0cd1c5-afc7-4e22-ac18-9480e4b2b3c9"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper @@ -32192,7 +34309,7 @@ def json = new JsonSlurper().parseText(response) if( context.loopIndex == null ) context.loopIndex = 0 -if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ +if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ sleep(1000) testRunner.gotoStepByName(testStepName) } else if (context.loopIndex == 40) { @@ -32203,7 +34320,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="4c093447-d7ea-4282-a7b1-d32fabee78aa"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="8d35d5e0-6e9f-4bc2-bd26-46e47a20c315"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -32219,7 +34336,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> <con:configuration> <path>$.status</path> - <content>IMPORT_ABORTED</content> + <content>IMPORT_FINISHED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -32258,7 +34375,34 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="42c3bee2-c4ea-4c61-8391-39f9e82fe017"> + <con:testStep type="transfer" name="GET BP 5.4 XX retrieveStatus Property Transfer" id="4aa18519-7e04-4331-84fd-65d1d455145a"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>firstPlanId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> + <con:targetType>firstPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>secondPlanId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[1]</con:sourcePath> + <con:targetType>secondPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="9b62d330-12af-4025-981e-648d31c1b615"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -32268,49 +34412,121 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:request/> <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> <con:configuration> - <codes>200</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> + <con:configuration> + <path>$.validationName</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> + <con:configuration> + <path>$.syntaktisch.valid</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> + <con:configuration> + <path>$.syntaktisch.status</path> + <content>COMPLETED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan1"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].valid</path> + <content>[true]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan1"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> + <content>[null]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.status plan1"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.status</path> + <content>[SKIPPED]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan1"> <con:configuration> - <path>$.validationName</path> - <content>true</content> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="e400d19f-3dd2-43c4-b2d5-b4620a7b733c" name="status"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.status plan1"> <con:configuration> - <path>$.status</path> - <content>TERMINATED_WITH_ERRORS</content> + <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.status</path> + <content>[COMPLETED]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan2"> <con:configuration> - <path>$.syntaktisch.valid</path> - <content>false</content> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].valid</path> + <content>[true]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan2"> <con:configuration> - <path>$.syntaktisch.status</path> - <content>COMPLETED</content> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> + <content>[null]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="e400d19f-3dd2-43c4-b2d5-b4620a7b733c" name="plans"> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.status plan2"> <con:configuration> - <path>$.plans</path> - <content>[]</content> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.status</path> + <content>[SKIPPED]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan2"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> + <content>[true]</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.status plan2"> + <con:configuration> + <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.status</path> + <content>[COMPLETED]</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -32329,7 +34545,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="67dbb413-836d-4afe-8931-347fb24fd0be"> + <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="30516391-6c1b-4eb7-834a-d8099fc102e2"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> @@ -32355,67 +34571,22 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="93e1aaf2-9f53-4167-9a72-5563521f0d8f"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuid</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>uuid</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:properties> - <con:property> - <con:name>empty</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - <con:property> - <con:name>uuid</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - </con:properties> - </con:testCase> - <con:testCase id="c74899ca-956d-44a1-889e-b98853ea9908" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans geometric error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen mit geometrischen Fehlern</con:description> - <con:settings/> - <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="2862b79b-fd89-45ec-8725-e352f0d34aa3"> + <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteFirstPlan" id="f2c929d2-0657-43d3-8576-bab3433175a9"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteFirstPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#firstPlanId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="047b0265-8e8e-45c2-b4d6-1c67ce5c4a7c" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="a14750a4-b6ee-40eb-b83b-6905d92e26ed" name="uuidExists"> - <con:configuration> - <path>$.uuid</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="statusLinkExists"> - <con:configuration> - <path>$.statusLink</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="hrefExists"> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> <con:configuration> - <path>$.statusLink.href</path> + <path>$.message</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> @@ -32430,50 +34601,27 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>BP_6.0.2_valide.zip</con:name> - <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_5.4_MultiplePlaene_geometricError.gml</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_geometricError.gml</con:url> - <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="aa7ade52-3336-417b-a149-4cb75d12c8c8"> - <con:settings/> - <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuid</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 5.4 XX importPlan</con:sourceStep> - <con:sourcePath>$.uuid</con:sourcePath> - <con:targetType>uuid</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> - <con:upgraded>true</con:upgraded> - </con:transfers> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="89f30c70-2852-4b12-9fa4-0ad5f05bd4de"> + <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteSecondPlan" id="c16547f7-b268-43a2-b5ab-9ca5f4599705"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteSecondPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#secondPlanId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9c15ee46-6bc7-4cb2-bca6-6439ca6fdd4f" name="statusExists"> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> <con:configuration> - <path>$.status</path> + <path>$.message</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> @@ -32493,267 +34641,275 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="b1a48715-4535-4dff-b797-05fea08588dd"> + <con:testStep type="transfer" name="Cleanup Properties" id="993e72c2-9451-4694-8277-33163f7df39b"> <con:settings/> - <con:config> - <script>import groovy.json.JsonSlurper - -def testStepName = "GET BP 5.4 XX pollStatus" -def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") -def json = new JsonSlurper().parseText(response) - -if( context.loopIndex == null ) - context.loopIndex = 0 - -if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ - sleep(1000) - testRunner.gotoStepByName(testStepName) -} else if (context.loopIndex == 40) { - context.loopIndex = null - assert(false) -} else { - context.loopIndex = null -}</script> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>firstPlanId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>firstPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>secondPlanId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>secondPlanId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="836b8974-f26d-4136-81bc-9ed761a8f2e8"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> - <con:configuration> - <path>$.status</path> - <content>IMPORT_ABORTED</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href report json"> - <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href rename pdf"> - <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> + <con:property> + <con:name>uuid</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> + <con:property> + <con:name>firstPlanId</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> + <con:property> + <con:name>secondPlanId</con:name> + <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="3513a1c3-69fb-41be-bb51-7f7fa52d8782" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Security with JWT TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:settings/> + <con:testStep type="groovy" name="checkPreconditions" id="944d7ad1-7315-4b62-b047-30c52ffcafa9"> + <con:settings/> + <con:config> + <script>def jwtUrl = context.testCase.testSuite.project.getPropertyValue("jwtUrl"); +def usernameNotDortmund = context.testCase.testSuite.project.getPropertyValue("usernameNotDortmund"); +def usernameDortmund = context.testCase.testSuite.project.getPropertyValue("usernameDortmund"); +def test_ = null; + +// jwtUrl, usernameNotDortmund and usernameDortmund are required for this TesCase +if (jwtUrl == "" || usernameNotDortmund == "" || usernameDortmund == ""){ + log.info "TestCase is skipped: jwtUrl, usernameNotDortmund and usernameDortmund are required." + testRunner.gotoStepByName("Cleanup Properties"); +}</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="b4cf7956-d4e0-446e-ba25-74a6da90b1d6"> + <con:testStep type="httprequest" name="GET XX X.X XX openAPI" id="99c43ad1-8869-4cee-bd93-f84920c9ccbe"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="4d61face-75e6-4117-8d95-8b1e7dd45d2e" name="GET XX X.X XX openAPI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="2f43fbe9-d109-43b0-beb7-c8ed78bed226" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> + <con:assertion type="JsonPath Match" id="31b6521b-7a41-46be-9040-38c3f4655011" name="openapi"> <con:configuration> - <path>$.validationName</path> - <content>true</content> + <path>$.openapi</path> + <content>3.0.1</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> + <con:assertion type="JsonPath Existence Match" id="dcb84152-4fe9-4776-8673-334ea542c0cc" name="JsonPath Existence Match"> <con:configuration> - <path>$.syntaktisch.valid</path> + <path>$.security[0].Bearer</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> - <con:configuration> - <path>$.syntaktisch.status</path> - <content>COMPLETED</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].valid</path> - <content>[false]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> - <content>[false]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.rules.findings.level plan1"> + <con:assertion type="JsonPath Match" id="44032b4a-affb-40ed-b9ce-dc86c24659bf" name="securitySchemes.Bearer.scheme"> <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.rules[?(@.id == '2.2.2.1')].findings..level</path> - <content>[ERROR]</content> + <path>$.components.securitySchemes.Bearer.scheme</path> + <content>bearer</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan2"> + <con:assertion type="JsonPath Match" id="44032b4a-affb-40ed-b9ce-dc86c24659bf" name="securitySchemes.Bearer.bearerFormat"> <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].valid</path> - <content>[true]</content> + <path>$.components.securitySchemes.Bearer.bearerFormat</path> + <content>JWT</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan2"> + <con:credentials> + <con:authType>No Authorization</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="retrieveToken - userNotDortmund" id="6ca8698e-6b61-4c6a-8308-d075c66605ac"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="951ebbc5-a5ba-418e-a699-aade30608a45" name="retrieveToken - userNotDortmund" postQueryString="true" mediaType="application/x-www-form-urlencoded" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Content-Type" value="application/x-www-form-urlencoded" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#jwtUrl}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="db5ca4f1-f21a-4b5d-b819-c41465665b8d" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan2"> + <con:assertion type="JsonPath Existence Match" id="b7016630-f4e7-44ff-85ef-83ded553be27" name="access_token"> <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> - <content>[true]</content> + <path>$.access_token</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> + <con:authType>No Authorization</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>client_id</con:name> + <con:value>${#Project#jwtClientId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>username</con:name> + <con:value>${#Project#usernameNotDortmund}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>password</con:name> + <con:value>${#Project#passwordNotDortmund}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>grant_type</con:name> + <con:value>password</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="43a42886-7b4b-42de-829f-c3b4a3be1543"> + <con:testStep type="httprequest" name="retrieveToken - userDortmund" id="2a92ea6f-2609-4118-a9bb-403eaeb03ec3"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="951ebbc5-a5ba-418e-a699-aade30608a45" name="retrieveToken - userDortmund" postQueryString="true" mediaType="application/x-www-form-urlencoded" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Content-Type" value="application/x-www-form-urlencoded" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#jwtUrl}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="db5ca4f1-f21a-4b5d-b819-c41465665b8d" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> + <con:assertion type="JsonPath Existence Match" id="f7fffe97-95dc-47a4-9d59-5e71772747a2" name="access_token"> + <con:configuration> + <path>$.access_token</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> + <con:authType>No Authorization</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>client_id</con:name> + <con:value>${#Project#jwtClientId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>username</con:name> + <con:value>${#Project#usernameDortmund}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>password</con:name> + <con:value>${#Project#passwordDortmund}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>grant_type</con:name> + <con:value>password</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="a1012adb-4dca-4cd9-be77-952516aab180"> + <con:testStep type="transfer" name="retrieveToken Property Transfer" id="ff2c6a7b-441f-48a3-b1cc-cfe94792fc48"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuid</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>uuid</con:targetType> + <con:name>accessToken_notDortmund</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>retrieveToken - userNotDortmund</con:sourceStep> + <con:sourcePath>$.access_token</con:sourcePath> + <con:targetType>tokenNotDortmund</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>accessToken_Dortmund</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>retrieveToken - userDortmund</con:sourceStep> + <con:sourcePath>$.access_token</con:sourcePath> + <con:targetType>tokenDortmund</con:targetType> <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> </con:config> </con:testStep> - <con:properties> - <con:property> - <con:name>empty</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - <con:property> - <con:name>uuid</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - </con:properties> - </con:testCase> - <con:testCase id="8bdf8454-799d-469e-9552-25d1d44cd8ea" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans semantic error TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen mit semantischen Fehlern</con:description> - <con:settings/> - <con:testStep type="httprequest" name="POST BP 5.4 XX importPlan" id="c1f96f80-628a-479e-aaeb-b7db15ac8180"> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund" id="096344ea-829f-49cc-b156-90a073a6f69b"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 XX importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> + <con:entry key="X-Filename" value="soapui-test"/> + <con:entry key="Accept" value="application/json"/> +</xml-fragment></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="047b0265-8e8e-45c2-b4d6-1c67ce5c4a7c" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="a14750a4-b6ee-40eb-b83b-6905d92e26ed" name="uuidExists"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> <con:configuration> <path>$.uuid</path> <content>true</content> @@ -32762,7 +34918,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="statusLinkExists"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> <con:configuration> <path>$.statusLink</path> <content>true</content> @@ -32771,7 +34927,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="hrefExists"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> <con:configuration> <path>$.statusLink.href</path> <content>true</content> @@ -32783,30 +34939,63 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> + <con:authType>No Authorization</con:authType> </con:credentials> <con:attachment> - <con:name>BP_6.0.2_valide.zip</con:name> + <con:name>FP_6.0.2.zip</con:name> <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_5.4_MultiplePlaene_semanticError.gml</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_semanticError.gml</con:url> - <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> + <con:contentId>BP_6.0_Dortmund.gml</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0_Dortmund.gml</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>internalId</con:name> + <con:value>soapui-test-id</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>planStatus</con:name> + <con:value>FESTGESTELLT</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="2481e026-8f3e-45ad-b340-9a2122ba5978"> + <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund Property Transfer" id="1260d6ea-30ff-4335-88f4-b18d7f1072e1"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 5.4 XX importPlan</con:sourceStep> + <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -32816,20 +35005,23 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="8101665a-15a4-4f7e-b199-21b5e0fb6904"> + <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="d5be5a89-a60b-4eec-925b-f27211edc058"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> + <con:entry key="Accept" value="application/json"/> +</xml-fragment></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9c15ee46-6bc7-4cb2-bca6-6439ca6fdd4f" name="statusExists"> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> <con:configuration> <path>$.status</path> <content>true</content> @@ -32841,29 +35033,28 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> + <con:authType>No Authorization</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="88110aca-fc05-4008-9e98-f8e6d86037d7"> + <con:testStep type="groovy" name="pollStatus" id="57e7f4b6-2328-44bd-9d31-ce4c4d46603a"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper -def testStepName = "GET BP 5.4 XX pollStatus" +def testStepName = "GET BP 6.0 XX pollStatus" def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") def json = new JsonSlurper().parseText(response) if( context.loopIndex == null ) context.loopIndex = 0 -if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ +if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ sleep(1000) testRunner.gotoStepByName(testStepName) } else if (context.loopIndex == 40) { @@ -32874,186 +35065,196 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="5d02dd4e-a24f-492c-8cdf-33cb1da4a110"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="9bfe235c-59a6-497d-ad95-17ab133d565e"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> + <con:entry key="Accept" value="application/json"/> +</xml-fragment></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> + <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> <con:configuration> <path>$.status</path> - <content>IMPORT_ABORTED</content> + <content>IMPORT_FINISHED</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href report json"> + <con:assertion type="JsonPath Existence Match" id="320f668b-21ff-4589-a944-cfbd07931e2a" name="importedPlanIdsExists"> <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> + <path>$.importedPlanIds</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href rename pdf"> + <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> + <path>$.links</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> + <con:configuration> + <path>$.links[0].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> + <con:authType>No Authorization</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="1a319d6c-35cb-4da6-ab12-9adfd4fb0f10"> + <con:testStep type="transfer" name="GET BP 6.0 XX retrieveStatus Property Transfer" id="8d42c117-258d-4cda-b4a0-e58fcd034701"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 6.0 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan NotDortmund ExpectError403" id="4d50db5e-fbf3-48ff-824b-899f510f608a"> + <con:settings/> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan NotDortmund ExpectError403" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Authorization" value="Bearer ${#TestCase#tokenNotDortmund}"/> + <con:entry key="X-Filename" value="soapui-test"/> + <con:entry key="Accept" value="application/json"/> +</xml-fragment></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> - <con:configuration> - <path>$.validationName</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> - <con:configuration> - <path>$.syntaktisch.valid</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> - <con:configuration> - <path>$.syntaktisch.status</path> - <content>COMPLETED</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].valid</path> - <content>[false]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> - <content>[false]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.rules.findings.level plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.rules[?(@.id == '3.2.3.2')].findings..level</path> - <content>[ERROR]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan2"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan2"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>403</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan2"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:preemptive>true</con:preemptive> + <con:authType>No Authorization</con:authType> + </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/gml+xml</con:contentType> + <con:contentId>BP_6.0_Dortmund.gml</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0_Dortmund.gml</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter required="false" disableUrlEncoding="false"> + <con:name>internalId</con:name> + <con:value>soapui-test-id</con:value> + <con:style>QUERY</con:style> + <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> + <con:default/> + <con:description xsi:nil="true"/> + </con:parameter> + <con:parameter> + <con:name>planStatus</con:name> + <con:value>FESTGESTELLT</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan NotDortmund ExpectError403" id="423c27d1-2b83-42de-ad24-1dc5b3eac232"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan NotDortmund ExpectError403" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Authorization" value="Bearer ${#TestCase#tokenNotDortmund}"/> + <con:entry key="Accept" value="application/json"/> +</xml-fragment></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> + <codes>403</codes> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> + <con:authType>No Authorization</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="3ec48fa7-7298-4b4f-aa6e-e1168fec977a"> + <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan Dortmund" id="e86f4623-54f5-4918-a223-923302bc98b2"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan Dortmund" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> + <con:entry key="Accept" value="application/json"/> +</xml-fragment></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> @@ -33061,19 +35262,34 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> + <con:authType>No Authorization</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="7917701b-c567-4d83-a1ac-638121c801b2"> + <con:testStep type="transfer" name="Cleanup Properties" id="5ff8fe08-a8f9-4a90-8062-d37fd1821891"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>tokenNotDortmund</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>tokenNotDortmund</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>tokenDortmund</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>tokenDortmund</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>empty</con:sourceType> @@ -33082,36 +35298,59 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:targetStep>#TestCase#</con:targetStep> <con:upgraded>true</con:upgraded> </con:transfers> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:upgraded>true</con:upgraded> + </con:transfers> </con:config> </con:testStep> <con:properties> <con:property> <con:name>empty</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + <con:value/> + </con:property> + <con:property> + <con:name>tokenNotDortmund</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>tokenDortmund</con:name> + <con:value/> </con:property> <con:property> <con:name>uuid</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> </con:property> </con:properties> </con:testCase> - <con:testCase id="769749e4-24ae-4a98-afc0-5edf756a7bc4" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="XPlanGML with multiple plans skip errors TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:description>TestCase für den Import von XPlanGML mit mehreren Plänen, die geometrische und semantische Fehler beinhalten. Die geometrische und semantische Validierung werden über Query-Parameter übersprungen.</con:description> + <con:testCase id="6d385587-d48e-4279-8734-a33aacc11b41" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Archive with internalId TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von Archiv mit internalId</con:description> <con:settings/> - <con:testStep type="httprequest" name="POST BP 5.4 sS,sF,sG,sL importPlan" id="40d50385-caad-4947-8e3f-2b90936ad585"> + <con:testStep type="httprequest" name="POST BP 5.3 xF,sS,sF,sG,sL importPlan" id="c86fc4e2-2cab-46f3-aff0-889fdc875185"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="aa5ee7a4-a529-48ac-ad3a-eb3064f75a0f" name="POST BP 5.4 sS,sF,sG,sL importPlan" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 5.3 xF,sS,sF,sG,sL importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="047b0265-8e8e-45c2-b4d6-1c67ce5c4a7c" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="a14750a4-b6ee-40eb-b83b-6905d92e26ed" name="uuidExists"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> <con:configuration> <path>$.uuid</path> <content>true</content> @@ -33120,7 +35359,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="statusLinkExists"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> <con:configuration> <path>$.statusLink</path> <content>true</content> @@ -33129,7 +35368,7 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="cca268ea-ed94-467c-9fee-33c8215bf396" name="hrefExists"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> <con:configuration> <path>$.statusLink.href</path> <content>true</content> @@ -33147,22 +35386,19 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> - <con:name>BP_6.0.2_valide.zip</con:name> - <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_5.4_MultiplePlaene_semanticError.gml</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_5.4_MultiplePlaene_semanticError.gml</con:url> - <con:id>292d515d-99cd-4aac-99f1-c05d1d4a5851</con:id> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan002_5-3_internalId.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters> - <con:parameter required="false" disableUrlEncoding="false"> + <con:parameter> <con:name>skipSemantisch</con:name> <con:value>true</con:value> <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> </con:parameter> <con:parameter> <con:name>skipFlaechenschluss</con:name> @@ -33182,13 +35418,13 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 5.4 XX importPlan Property Transfer" id="7c35f20c-22aa-495b-9ba4-34c644d86ad7"> + <con:testStep type="transfer" name="POST BP 5.3 xF,sS,sF,sG,sL importPlan Property Transfer" id="64aab377-c4d0-4a19-a9d4-219bfe4b5c8f"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 5.4 sS,sF,sG,sL importPlan</con:sourceStep> + <con:sourceStep>POST BP 5.3 xF,sS,sF,sG,sL importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -33198,20 +35434,20 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX pollStatus" id="6a211176-9eb0-45ff-abf3-dded3f8f9865"> + <con:testStep type="httprequest" name="GET BP 5.3 XX pollStatus" id="7c301571-e746-4b70-a3d1-8df3396d316c"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="9c15ee46-6bc7-4cb2-bca6-6439ca6fdd4f" name="statusExists"> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> <con:configuration> <path>$.status</path> <content>true</content> @@ -33233,12 +35469,12 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_ABORTED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="ed0cd1c5-afc7-4e22-ac18-9480e4b2b3c9"> + <con:testStep type="groovy" name="pollStatus" id="ddeadd33-17fb-48c1-8c84-1a38ffcd175b"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper -def testStepName = "GET BP 5.4 XX pollStatus" +def testStepName = "GET BP 5.3 XX pollStatus" def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") def json = new JsonSlurper().parseText(response) @@ -33256,46 +35492,180 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveStatus" id="8d35d5e0-6e9f-4bc2-bd26-46e47a20c315"> + <con:testStep type="httprequest" name="GET BP 5.3 XX retrieveStatus" id="0cb64378-6b07-4090-a557-c5b329fc5c3f"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> + <con:configuration> + <path>$.status</path> + <content>IMPORT_FINISHED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="320f668b-21ff-4589-a944-cfbd07931e2a" name="importedPlanIdsExists"> + <con:configuration> + <path>$.importedPlanIds</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> + <con:configuration> + <path>$.links</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> + <con:configuration> + <path>$.links[0].href</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="transfer" name="GET BP 5.3 XX retrieveStatus Property Transfer" id="f28d99c9-79f1-492f-9b57-6ff511a9831d"> + <con:settings/> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>planId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 5.3 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> + <con:targetType>planId</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 pI retrievePlans" id="07c6883d-c23e-4e94-95eb-16b630972017"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 pI retrievePlans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> + <con:configuration> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="64341637-e8b1-46ad-b0c7-6610bd830219" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>TESTID1</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters> + <con:parameter> + <con:name>planId</con:name> + <con:value>${#TestCase#planId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 retrievePlanById" id="d4fb5890-720e-4d02-b489-f79ada6267d8"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 retrievePlanById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="ae2299b3-55a5-4171-b298-0c0fbf353fbb" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="c47301d5-d89e-4a17-8345-4329bf534b29" name="status"> + <con:assertion type="JsonPath Match" id="d0072b44-46f6-4617-a278-0ba3a106b87c" name="internalId"> <con:configuration> - <path>$.status</path> - <content>IMPORT_FINISHED</content> + <path>$.xplanModelData.internalId</path> + <content>TESTID1</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href report json"> + <con:credentials> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> + </con:credentials> + <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> + <con:jmsPropertyConfig/> + <con:parameters/> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="DEL BP 5.3 pI deletePlan" id="3c587e65-a1f4-4de8-82d9-90adf61aad2b"> + <con:settings/> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.3 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:settings> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + </con:settings> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> + <con:request/> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/json')].href</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> + <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath RegEx Match" id="79d9689a-c545-4733-bf8d-4b8da83f53a3" name="href rename pdf"> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> <con:configuration> - <path>$.links[?(@.rel == 'report' && @.type == 'application/pdf')].href</path> + <path>$.message</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> - <regEx>^.*/api/v2/report\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}.*$</regEx> </con:configuration> </con:assertion> <con:credentials> @@ -33311,158 +35681,83 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="GET BP 5.4 XX retrieveStatus Property Transfer" id="4aa18519-7e04-4331-84fd-65d1d455145a"> + <con:testStep type="transfer" name="Cleanup Properties" id="641b244a-8d1e-4688-a193-d0fd29999257"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>firstPlanId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> - <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> - <con:targetType>firstPlanId</con:targetType> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>secondPlanId</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>GET BP 5.4 XX retrieveStatus</con:sourceStep> - <con:sourcePath>$.importedPlanIds[1]</con:sourcePath> - <con:targetType>secondPlanId</con:targetType> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportJson" id="9b62d330-12af-4025-981e-648d31c1b615"> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>uuid</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="0778da5a-6f6c-4290-93ff-3d5fa109d317" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Archive with internalId and QueryParam internalId TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von Archiv mit internalId und Query-Parameter internalId</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan" id="60cb92e0-eee1-40a8-97b3-4833dbc41bd8"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportJson" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> + <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> +</xml-fragment></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="c3639f00-ced7-4918-9988-b1e61f27bb58" name="validationName exists"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="uuidExists"> <con:configuration> - <path>$.validationName</path> + <path>$.uuid</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.valid"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="statusLinkExists"> <con:configuration> - <path>$.syntaktisch.valid</path> + <path>$.statusLink</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="5c8e2019-5922-428a-956e-0664abe38de3" name="syntaktisch.status"> - <con:configuration> - <path>$.syntaktisch.status</path> - <content>COMPLETED</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> - <content>[null]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.status plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.semantisch.status</path> - <content>[SKIPPED]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.status plan1"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity11_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.status</path> - <content>[COMPLETED]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="valid plan2"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.valid plan2"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.valid</path> - <content>[null]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.semantisch.status plan2"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.semantisch.status</path> - <content>[SKIPPED]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.valid plan2"> - <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.valid</path> - <content>[true]</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="bb3f25f6-4470-4a47-909c-3aa0ca14a40c" name="validationResult.geometrisch.status plan2"> + <con:assertion type="JsonPath Existence Match" id="8b1c937c-2310-49dc-8b48-114ced3fabf3" name="hrefExists"> <con:configuration> - <path>$.plans[?(@.name == 'HafenCity14_SoapUI-XPlanManagerAPI')].validationResult.geometrisch.status</path> - <content>[COMPLETED]</content> + <path>$.statusLink.href</path> + <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> @@ -33476,53 +35771,76 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:preemptive>true</con:preemptive> <con:authType>Preemptive</con:authType> </con:credentials> + <con:attachment> + <con:name>FP_6.0.2.zip</con:name> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan002_5-3_internalId.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan002_5-3_internalId.zip</con:url> + <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> + </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET BP 5.4 XX retrieveReportPdf" id="30516391-6c1b-4eb7-834a-d8099fc102e2"> - <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="80a79ed8-fcfd-4604-9220-f7c650063d0c" name="GET BP 5.4 XX retrieveReportPdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/pdf" xmlns="http://eviware.com/soapui/config"/></con:setting> - </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/report/${#TestCase#uuid}</con:endpoint> - <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="84472359-c38c-468b-b28a-f03bbd016181" name="Valid HTTP Status Codes"> - <con:configuration> - <codes>200</codes> - </con:configuration> - </con:assertion> - <con:credentials> - <con:username>${#Project#username}</con:username> - <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>Basic</con:selectedAuthProfile> - <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> - <con:preemptive>true</con:preemptive> - <con:authType>Preemptive</con:authType> - </con:credentials> - <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> - <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>skipSemantisch</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipFlaechenschluss</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipGeltungsbereich</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>skipLaufrichtung</con:name> + <con:value>true</con:value> + <con:style>QUERY</con:style> + </con:parameter> + <con:parameter> + <con:name>internalId</con:name> + <con:value>Test-overwrite-internalId</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteFirstPlan" id="f2c929d2-0657-43d3-8576-bab3433175a9"> + <con:testStep type="transfer" name="POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan Property Transfer" id="cb638c55-336b-4c0c-b3db-8a4ea8c549e6"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteFirstPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> + <con:name>uuid</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>POST BP 5.3 xF,sS,sF,sG,sL,iI importPlan</con:sourceStep> + <con:sourcePath>$.uuid</con:sourcePath> + <con:targetType>uuid</con:targetType> + <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> + <con:upgraded>true</con:upgraded> + </con:transfers> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 XX pollStatus" id="e11330a5-84bc-4109-8eeb-7a790ec214d3"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#firstPlanId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:assertion type="JsonPath Existence Match" id="8c1a42b6-d7c1-4c77-91c6-b7d4c3fc4530" name="statusExists"> <con:configuration> - <path>$.message</path> + <path>$.status</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> @@ -33542,22 +35860,72 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 5.4 XX deleteSecondPlan" id="c16547f7-b268-43a2-b5ab-9ca5f4599705"> + <con:testStep type="groovy" name="pollStatus" id="76f4e696-149e-4637-afc9-c55dcb26f61e"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.4 XX deleteSecondPlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config> + <script>import groovy.json.JsonSlurper + +def testStepName = "GET BP 5.3 XX pollStatus" +def response = testRunner.testCase.getTestStepByName(testStepName).getPropertyValue("Response") +def json = new JsonSlurper().parseText(response) + +if( context.loopIndex == null ) + context.loopIndex = 0 + +if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ + sleep(1000) + testRunner.gotoStepByName(testStepName) +} else if (context.loopIndex == 40) { + context.loopIndex = null + assert(false) +} else { + context.loopIndex = null +}</script> + </con:config> + </con:testStep> + <con:testStep type="httprequest" name="GET BP 5.3 XX retrieveStatus" id="cf02b496-6f6e-43b9-ba7e-7a580825a2bb"> + <con:settings/> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#secondPlanId}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:assertion type="JsonPath Match" id="d27fd88e-b78e-4e28-acfc-dc25276fc1a1" name="status"> <con:configuration> - <path>$.message</path> + <path>$.status</path> + <content>IMPORT_FINISHED</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="320f668b-21ff-4589-a944-cfbd07931e2a" name="importedPlanIdsExists"> + <con:configuration> + <path>$.importedPlanIds</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="493b851d-f4cf-4289-90b8-3cb49d482b72" name="linksExists"> + <con:configuration> + <path>$.links</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Existence Match" id="a9ed262c-75d6-4a67-ad13-5b40ce1eb9ac" name="hrefExists"> + <con:configuration> + <path>$.links[0].href</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> @@ -33577,195 +35945,114 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="993e72c2-9451-4694-8277-33163f7df39b"> + <con:testStep type="transfer" name="GET BP 5.3 XX retrieveStatus Property Transfer" id="ddb37866-914b-4b39-9029-555b357b7184"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>uuid</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>uuid</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>firstPlanId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>firstPlanId</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>secondPlanId</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>secondPlanId</con:targetType> + <con:name>planId</con:name> + <con:sourceType>Response</con:sourceType> + <con:sourceStep>GET BP 5.3 XX retrieveStatus</con:sourceStep> + <con:sourcePath>$.importedPlanIds[0]</con:sourcePath> + <con:targetType>planId</con:targetType> <con:targetStep>#TestCase#</con:targetStep> + <con:type>JSONPATH</con:type> + <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> </con:config> </con:testStep> - <con:properties> - <con:property> - <con:name>empty</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - <con:property> - <con:name>uuid</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - <con:property> - <con:name>firstPlanId</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - <con:property> - <con:name>secondPlanId</con:name> - <con:value xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> - </con:property> - </con:properties> - </con:testCase> - <con:testCase id="3513a1c3-69fb-41be-bb51-7f7fa52d8782" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Security with JWT TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> - <con:settings/> - <con:testStep type="groovy" name="checkPreconditions" id="944d7ad1-7315-4b62-b047-30c52ffcafa9"> - <con:settings/> - <con:config> - <script>def jwtUrl = context.testCase.testSuite.project.getPropertyValue("jwtUrl"); -def usernameNotDortmund = context.testCase.testSuite.project.getPropertyValue("usernameNotDortmund"); -def usernameDortmund = context.testCase.testSuite.project.getPropertyValue("usernameDortmund"); -def test_ = null; - -// jwtUrl, usernameNotDortmund and usernameDortmund are required for this TesCase -if (jwtUrl == "" || usernameNotDortmund == "" || usernameDortmund == ""){ - log.info "TestCase is skipped: jwtUrl, usernameNotDortmund and usernameDortmund are required." - testRunner.gotoStepByName("Cleanup Properties"); -}</script> - </con:config> - </con:testStep> - <con:testStep type="httprequest" name="GET XX X.X XX openAPI" id="99c43ad1-8869-4cee-bd93-f84920c9ccbe"> + <con:testStep type="httprequest" name="GET BP 5.3 pI retrievePlans" id="f7ce008e-b6d9-466a-8736-66b223b46c48"> <con:settings/> - <con:config method="GET" xsi:type="con:HttpRequest" id="4d61face-75e6-4117-8d95-8b1e7dd45d2e" name="GET XX X.X XX openAPI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 pI retrievePlans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="2f43fbe9-d109-43b0-beb7-c8ed78bed226" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Match" id="31b6521b-7a41-46be-9040-38c3f4655011" name="openapi"> - <con:configuration> - <path>$.openapi</path> - <content>3.0.1</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Existence Match" id="dcb84152-4fe9-4776-8673-334ea542c0cc" name="JsonPath Existence Match"> - <con:configuration> - <path>$.security[0].Bearer</path> - <content>true</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="44032b4a-affb-40ed-b9ce-dc86c24659bf" name="securitySchemes.Bearer.scheme"> - <con:configuration> - <path>$.components.securitySchemes.Bearer.scheme</path> - <content>bearer</content> - <allowWildcards>false</allowWildcards> - <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> - <ignoreComments>false</ignoreComments> - </con:configuration> - </con:assertion> - <con:assertion type="JsonPath Match" id="44032b4a-affb-40ed-b9ce-dc86c24659bf" name="securitySchemes.Bearer.bearerFormat"> + <con:assertion type="JsonPath Match" id="64341637-e8b1-46ad-b0c7-6610bd830219" name="internalId"> <con:configuration> - <path>$.components.securitySchemes.Bearer.bearerFormat</path> - <content>JWT</content> + <path>$[0].xplanModelData.internalId</path> + <content>Test-overwrite-internalId</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> - <con:authType>No Authorization</con:authType> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters/> + <con:parameters> + <con:parameter> + <con:name>planId</con:name> + <con:value>${#TestCase#planId}</con:value> + <con:style>QUERY</con:style> + </con:parameter> + </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="retrieveToken - userNotDortmund" id="6ca8698e-6b61-4c6a-8308-d075c66605ac"> + <con:testStep type="httprequest" name="GET BP 5.3 retrievePlanById" id="2659024e-ce21-44bb-89d8-83780d7c5aeb"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="951ebbc5-a5ba-418e-a699-aade30608a45" name="retrieveToken - userNotDortmund" postQueryString="true" mediaType="application/x-www-form-urlencoded" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 5.3 retrievePlanById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Content-Type" value="application/x-www-form-urlencoded" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#jwtUrl}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="db5ca4f1-f21a-4b5d-b819-c41465665b8d" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="b7016630-f4e7-44ff-85ef-83ded553be27" name="access_token"> + <con:assertion type="JsonPath Match" id="d0072b44-46f6-4617-a278-0ba3a106b87c" name="internalId"> <con:configuration> - <path>$.access_token</path> - <content>true</content> + <path>$.xplanModelData.internalId</path> + <content>Test-overwrite-internalId</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> - <con:authType>No Authorization</con:authType> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>client_id</con:name> - <con:value>${#Project#jwtClientId}</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>username</con:name> - <con:value>${#Project#usernameNotDortmund}</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>password</con:name> - <con:value>${#Project#passwordNotDortmund}</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>grant_type</con:name> - <con:value>password</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="retrieveToken - userDortmund" id="2a92ea6f-2609-4118-a9bb-403eaeb03ec3"> + <con:testStep type="httprequest" name="DEL BP 5.3 pI deletePlan" id="4cc04e6d-0aa1-4b1b-95f5-b15742b65319"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="951ebbc5-a5ba-418e-a699-aade30608a45" name="retrieveToken - userDortmund" postQueryString="true" mediaType="application/x-www-form-urlencoded" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 5.3 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Content-Type" value="application/x-www-form-urlencoded" xmlns="http://eviware.com/soapui/config"/></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#jwtUrl}</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="db5ca4f1-f21a-4b5d-b819-c41465665b8d" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> <con:configuration> <codes>200</codes> </con:configuration> </con:assertion> - <con:assertion type="JsonPath Existence Match" id="f7fffe97-95dc-47a4-9d59-5e71772747a2" name="access_token"> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> <con:configuration> - <path>$.access_token</path> + <path>$.message</path> <content>true</content> <allowWildcards>false</allowWildcards> <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> @@ -33773,69 +36060,64 @@ if (jwtUrl == "" || usernameNotDortmund == "" || usernameDortmund == ""){ </con:configuration> </con:assertion> <con:credentials> - <con:authType>No Authorization</con:authType> + <con:username>${#Project#username}</con:username> + <con:password>${#Project#password}</con:password> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> + <con:preemptive>true</con:preemptive> + <con:authType>Preemptive</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> - <con:parameters> - <con:parameter> - <con:name>client_id</con:name> - <con:value>${#Project#jwtClientId}</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>username</con:name> - <con:value>${#Project#usernameDortmund}</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>password</con:name> - <con:value>${#Project#passwordDortmund}</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>grant_type</con:name> - <con:value>password</con:value> - <con:style>QUERY</con:style> - </con:parameter> - </con:parameters> + <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="retrieveToken Property Transfer" id="ff2c6a7b-441f-48a3-b1cc-cfe94792fc48"> + <con:testStep type="transfer" name="Cleanup Properties" id="960f56be-a41b-40f1-9a3a-db2cbdf7b77e"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>accessToken_notDortmund</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>retrieveToken - userNotDortmund</con:sourceStep> - <con:sourcePath>$.access_token</con:sourcePath> - <con:targetType>tokenNotDortmund</con:targetType> + <con:name>uuid</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>accessToken_Dortmund</con:name> - <con:sourceType>Response</con:sourceType> - <con:sourceStep>retrieveToken - userDortmund</con:sourceStep> - <con:sourcePath>$.access_token</con:sourcePath> - <con:targetType>tokenDortmund</con:targetType> + <con:name>planId</con:name> + <con:sourceType>empty</con:sourceType> + <con:sourceStep>#TestCase#</con:sourceStep> + <con:targetType>planId</con:targetType> <con:targetStep>#TestCase#</con:targetStep> - <con:type>JSONPATH</con:type> - <con:targetTransferType>JSONPATH</con:targetTransferType> <con:upgraded>true</con:upgraded> </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund" id="096344ea-829f-49cc-b156-90a073a6f69b"> + <con:properties> + <con:property> + <con:name>empty</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>uuid</con:name> + <con:value/> + </con:property> + <con:property> + <con:name>planId</con:name> + <con:value/> + </con:property> + </con:properties> + </con:testCase> + <con:testCase id="078b5587-cef9-4b18-9a7f-c04bf31f334b" failOnError="false" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Archive without internalId TestCase" searchProperties="true" timeout="0" wsrmEnabled="false" wsrmVersion="1.0" wsrmAckTo="" amfAuthorisation="false" amfEndpoint="" amfLogin="" amfPassword=""> + <con:description>TestCase für den Import von Archiv ohne internalId</con:description> + <con:settings/> + <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL importPlan" id="71d9741a-d032-48ff-a2a7-5a22c096ede4"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL importPlan" postQueryString="false" mediaType="application/octet-stream" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> - <con:entry key="X-Filename" value="soapui-test"/> <con:entry key="Accept" value="application/json"/> + <con:entry key="X-Filename" value="soapui-test"/> </xml-fragment></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> @@ -33875,15 +36157,16 @@ if (jwtUrl == "" || usernameNotDortmund == "" || usernameDortmund == ""){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> - <con:authType>No Authorization</con:authType> + <con:authType>Preemptive</con:authType> </con:credentials> <con:attachment> <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_6.0_Dortmund.gml</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0_Dortmund.gml</con:url> + <con:contentType>application/octet-stream</con:contentType> + <con:contentId>BPlan002_5-3_internalId.zip</con:contentId> + <con:url>${projectDir}/xplan-manager-api/plans/BPlan004_6-0.zip</con:url> <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> @@ -33909,29 +36192,16 @@ if (jwtUrl == "" || usernameNotDortmund == "" || usernameDortmund == ""){ <con:value>true</con:value> <con:style>QUERY</con:style> </con:parameter> - <con:parameter required="false" disableUrlEncoding="false"> - <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> - <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> - </con:parameter> - <con:parameter> - <con:name>planStatus</con:name> - <con:value>FESTGESTELLT</con:value> - <con:style>QUERY</con:style> - </con:parameter> </con:parameters> </con:config> </con:testStep> - <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund Property Transfer" id="1260d6ea-30ff-4335-88f4-b18d7f1072e1"> + <con:testStep type="transfer" name="POST BP 6.0 xF,sS,sF,sG,sL importPlan Property Transfer" id="ce880057-be60-4941-be79-924e7659e696"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>Response</con:sourceType> - <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan Dortmund</con:sourceStep> + <con:sourceStep>POST BP 6.0 xF,sS,sF,sG,sL importPlan</con:sourceStep> <con:sourcePath>$.uuid</con:sourcePath> <con:targetType>uuid</con:targetType> <con:targetStep>#TestCase#</con:targetStep> @@ -33941,14 +36211,11 @@ if (jwtUrl == "" || usernameNotDortmund == "" || usernameDortmund == ""){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="d5be5a89-a60b-4eec-925b-f27211edc058"> + <con:testStep type="httprequest" name="GET BP 6.0 XX pollStatus" id="ee189b21-be57-4760-ab8f-23dc31455268"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX pollStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> - <con:entry key="Accept" value="application/json"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> @@ -33969,16 +36236,17 @@ if (jwtUrl == "" || usernameNotDortmund == "" || usernameDortmund == ""){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> - <con:authType>No Authorization</con:authType> + <con:authType>Preemptive</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="groovy" name="pollStatus" id="57e7f4b6-2328-44bd-9d31-ce4c4d46603a"> + <con:testStep type="groovy" name="pollStatus" id="3c5e8858-741b-4981-b341-93f12cf0160d"> <con:settings/> <con:config> <script>import groovy.json.JsonSlurper @@ -34001,14 +36269,11 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ }</script> </con:config> </con:testStep> - <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="9bfe235c-59a6-497d-ad95-17ab133d565e"> + <con:testStep type="httprequest" name="GET BP 6.0 XX retrieveStatus" id="7e7feea5-3823-4fe4-8abf-d15b181d6785"> <con:settings/> <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 XX retrieveStatus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> - <con:entry key="Accept" value="application/json"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/status/${#TestCase#uuid}</con:endpoint> <con:request/> @@ -34056,16 +36321,17 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> - <con:authType>No Authorization</con:authType> + <con:authType>Preemptive</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="GET BP 6.0 XX retrieveStatus Property Transfer" id="8d42c117-258d-4cda-b4a0-e58fcd034701"> + <con:testStep type="transfer" name="GET BP 6.0 XX retrieveStatus Property Transfer" id="519e139a-e164-4c64-ad32-8d9c85a0500a"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> @@ -34081,112 +36347,87 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ </con:transfers> </con:config> </con:testStep> - <con:testStep type="httprequest" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan NotDortmund ExpectError403" id="4d50db5e-fbf3-48ff-824b-899f510f608a"> + <con:testStep type="httprequest" name="GET BP 6.0 pI retrievePlans" id="70ac2106-7395-48db-adc5-207aee96caf4"> <con:settings/> - <con:config method="POST" xsi:type="con:HttpRequest" id="fb82fa77-b86e-45f2-8c0f-866cb490b0d1" name="POST BP 6.0 xF,sS,sF,sG,sL,iI,pS importPlan NotDortmund ExpectError403" postQueryString="false" mediaType="application/gml+xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 pI retrievePlans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Authorization" value="Bearer ${#TestCase#tokenNotDortmund}"/> - <con:entry key="X-Filename" value="soapui-test"/> - <con:entry key="Accept" value="application/json"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> - <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan</con:endpoint> + <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plans</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="de44e7cd-c4f2-4f55-90d8-367bea84ef1e" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <codes>403</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="64341637-e8b1-46ad-b0c7-6610bd830219" name="internalId"> + <con:configuration> + <path>$[0].xplanModelData.internalId</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> - <con:authType>No Authorization</con:authType> + <con:authType>Preemptive</con:authType> </con:credentials> - <con:attachment> - <con:name>FP_6.0.2.zip</con:name> - <con:contentType>application/gml+xml</con:contentType> - <con:contentId>BP_6.0_Dortmund.gml</con:contentId> - <con:url>${projectDir}/xplan-manager-api/plans/BP_6.0_Dortmund.gml</con:url> - <con:id>e65ee7a4-20dd-461e-a899-ae69d9a90731</con:id> - </con:attachment> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters> <con:parameter> - <con:name>skipSemantisch</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipFlaechenschluss</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipGeltungsbereich</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter> - <con:name>skipLaufrichtung</con:name> - <con:value>true</con:value> - <con:style>QUERY</con:style> - </con:parameter> - <con:parameter required="false" disableUrlEncoding="false"> - <con:name>internalId</con:name> - <con:value>soapui-test-id</con:value> - <con:style>QUERY</con:style> - <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type> - <con:default/> - <con:description xsi:nil="true"/> - </con:parameter> - <con:parameter> - <con:name>planStatus</con:name> - <con:value>FESTGESTELLT</con:value> + <con:name>planId</con:name> + <con:value>${#TestCase#planId}</con:value> <con:style>QUERY</con:style> </con:parameter> </con:parameters> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan NotDortmund ExpectError403" id="423c27d1-2b83-42de-ad24-1dc5b3eac232"> + <con:testStep type="httprequest" name="GET BP 6.0 retrievePlanById" id="6ac4bc49-38f8-4fa7-b943-a878735a956b"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan NotDortmund ExpectError403" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="GET" xsi:type="con:HttpRequest" id="d219264b-19a2-4e32-bda8-d1d431e563e9" name="GET BP 6.0 retrievePlanById" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Authorization" value="Bearer ${#TestCase#tokenNotDortmund}"/> - <con:entry key="Accept" value="application/json"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> <con:request/> - <con:assertion type="Valid HTTP Status Codes" id="a8bfebc1-8840-4207-86e3-e063ec337347" name="Valid HTTP Status Codes"> + <con:assertion type="Valid HTTP Status Codes" id="706a255f-d031-4dfe-b078-d7098c7d2b4a" name="Valid HTTP Status Codes"> <con:configuration> - <codes>403</codes> + <codes>200</codes> + </con:configuration> + </con:assertion> + <con:assertion type="JsonPath Match" id="d0072b44-46f6-4617-a278-0ba3a106b87c" name="internalId"> + <con:configuration> + <path>$.xplanModelData.internalId</path> + <content>null</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> </con:configuration> </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> - <con:authType>No Authorization</con:authType> + <con:authType>Preemptive</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan Dortmund" id="e86f4623-54f5-4918-a223-923302bc98b2"> + <con:testStep type="httprequest" name="DEL BP 6.0 pI deletePlan" id="be280a7d-c7e2-4ad0-bdad-a4a419c3387d"> <con:settings/> - <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan Dortmund" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <con:config method="DELETE" xsi:type="con:HttpRequest" id="bb47d485-53e8-420a-b18d-620a3ba2b7e3" name="DEL BP 6.0 pI deletePlan" postQueryString="false" mediaType="application/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <con:settings> - <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Authorization" value="Bearer ${#TestCase#tokenDortmund}"/> - <con:entry key="Accept" value="application/json"/> -</xml-fragment></con:setting> + <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/json" xmlns="http://eviware.com/soapui/config"/></con:setting> </con:settings> <con:endpoint>${#Project#baseUrlManagerApi}/xplan-manager-api/api/v2/plan/${#TestCase#planId}</con:endpoint> <con:request/> @@ -34195,37 +36436,31 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <codes>200</codes> </con:configuration> </con:assertion> + <con:assertion type="JsonPath Existence Match" id="e3b7ac04-76d4-4ed3-babc-4ab10275695d" name="messageExists"> + <con:configuration> + <path>$.message</path> + <content>true</content> + <allowWildcards>false</allowWildcards> + <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences> + <ignoreComments>false</ignoreComments> + </con:configuration> + </con:assertion> <con:credentials> <con:username>${#Project#username}</con:username> <con:password>${#Project#password}</con:password> - <con:selectedAuthProfile>No Authorization</con:selectedAuthProfile> + <con:selectedAuthProfile>Basic</con:selectedAuthProfile> + <con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes> <con:preemptive>true</con:preemptive> - <con:authType>No Authorization</con:authType> + <con:authType>Preemptive</con:authType> </con:credentials> <con:jmsConfig JMSDeliveryMode="PERSISTENT"/> <con:jmsPropertyConfig/> <con:parameters/> </con:config> </con:testStep> - <con:testStep type="transfer" name="Cleanup Properties" id="5ff8fe08-a8f9-4a90-8062-d37fd1821891"> + <con:testStep type="transfer" name="Cleanup Properties" id="f6eb1cac-1f00-4f81-93db-951c853ea3da"> <con:settings/> <con:config xsi:type="con:PropertyTransfersStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>tokenNotDortmund</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>tokenNotDortmund</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> - <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> - <con:name>tokenDortmund</con:name> - <con:sourceType>empty</con:sourceType> - <con:sourceStep>#TestCase#</con:sourceStep> - <con:targetType>tokenDortmund</con:targetType> - <con:targetStep>#TestCase#</con:targetStep> - <con:upgraded>true</con:upgraded> - </con:transfers> <con:transfers setNullOnMissingSource="true" transferTextContent="true" failOnError="true" ignoreEmpty="false" transferToAll="false" entitize="false" transferChildNodes="false"> <con:name>uuid</con:name> <con:sourceType>empty</con:sourceType> @@ -34249,14 +36484,6 @@ if( ++context.loopIndex < 40 && json.status != "IMPORT_FINISHED" ){ <con:name>empty</con:name> <con:value/> </con:property> - <con:property> - <con:name>tokenNotDortmund</con:name> - <con:value/> - </con:property> - <con:property> - <con:name>tokenDortmund</con:name> - <con:value/> - </con:property> <con:property> <con:name>uuid</con:name> <con:value/> diff --git a/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api/plans/BPlan002_5-3_internalId.zip b/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api/plans/BPlan002_5-3_internalId.zip new file mode 100644 index 0000000000000000000000000000000000000000..29417dd318924d9789c20a150be47776c0260ef7 GIT binary patch literal 60636 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%0DNRed>aJY!a3#01VoE3qpqT(Z?Ky2k(QGXU<Y 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 af0MB_Q<Q;(`p=2r-*fzXeLMTl?tcI<!uiku literal 0 HcmV?d00001 diff --git a/xplan-validator/pom.xml b/xplan-validator/pom.xml index 9145fc12d..ac24a160a 100644 --- a/xplan-validator/pom.xml +++ b/xplan-validator/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-validator/xplan-validator-api/pom.xml b/xplan-validator/xplan-validator-api/pom.xml index 7886feebf..5b92db7ad 100755 --- a/xplan-validator/xplan-validator-api/pom.xml +++ b/xplan-validator/xplan-validator-api/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-validator</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-validator/xplan-validator-api/src/main/resources/application.properties b/xplan-validator/xplan-validator-api/src/main/resources/application.properties index 8d571c0c9..77247bfbd 100644 --- a/xplan-validator/xplan-validator-api/src/main/resources/application.properties +++ b/xplan-validator/xplan-validator-api/src/main/resources/application.properties @@ -34,6 +34,7 @@ spring.rabbitmq.host=${XPLAN_RABBIT_HOST:localhost} spring.rabbitmq.password=${XPLAN_RABBIT_PASSWORD:guest} spring.rabbitmq.port=${XPLAN_RABBIT_PORT:5672} spring.rabbitmq.username=${XPLAN_RABBIT_USER:guest} +spring.rabbitmq.virtual-host=${XPLAN_RABBIT_VIRTUALHOST:} xplanbox.rabbitmq.public.topic.name=${XPLAN_RABBIT_PUBLIC_TOPIC:} @@ -47,6 +48,7 @@ xplanbox.s3.accessKeyId=${XPLAN_S3_ACCESS_KEY} xplanbox.s3.endpoint.url=${XPLAN_S3_ENDPOINT} xplanbox.s3.region=${XPLAN_S3_REGION} xplanbox.s3.secretKey=${XPLAN_S3_SECRET_ACCESS_KEY} +xplanbox.s3.pathStyleAccessEnabled=${XPLAN_S3_PATHSTYLEACCESS_ENABLED:false} xplanbox.validation.profiles=${XPLAN_VALIDATION_PROFILES:} xplanbox.s3.bucket.validation=${XPLAN_S3_BUCKET_VALIDATION:validation} diff --git a/xplan-validator/xplan-validator-config/pom.xml b/xplan-validator/xplan-validator-config/pom.xml index 19eac21ca..4520be7dc 100644 --- a/xplan-validator/xplan-validator-config/pom.xml +++ b/xplan-validator/xplan-validator-config/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-validator</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-validator/xplan-validator-executor/pom.xml b/xplan-validator/xplan-validator-executor/pom.xml index ceab4b716..6e4146c06 100644 --- a/xplan-validator/xplan-validator-executor/pom.xml +++ b/xplan-validator/xplan-validator-executor/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-validator</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-validator/xplan-validator-executor/src/main/resources/application.properties b/xplan-validator/xplan-validator-executor/src/main/resources/application.properties index 768094edc..364471117 100644 --- a/xplan-validator/xplan-validator-executor/src/main/resources/application.properties +++ b/xplan-validator/xplan-validator-executor/src/main/resources/application.properties @@ -31,6 +31,7 @@ spring.rabbitmq.host=${XPLAN_RABBIT_HOST:localhost} spring.rabbitmq.password=${XPLAN_RABBIT_PASSWORD:guest} spring.rabbitmq.port=${XPLAN_RABBIT_PORT:5672} spring.rabbitmq.username=${XPLAN_RABBIT_USER:guest} +spring.rabbitmq.virtual-host=${XPLAN_RABBIT_VIRTUALHOST:} spring.rabbitmq.listener.prefetch=1 xplanbox.rabbitmq.public.topic.name=${XPLAN_RABBIT_PUBLIC_TOPIC:} @@ -46,6 +47,7 @@ xplanbox.s3.accessKeyId=${XPLAN_S3_ACCESS_KEY} xplanbox.s3.endpoint.url=${XPLAN_S3_ENDPOINT} xplanbox.s3.region=${XPLAN_S3_REGION} xplanbox.s3.secretKey=${XPLAN_S3_SECRET_ACCESS_KEY} +xplanbox.s3.pathStyleAccessEnabled=${XPLAN_S3_PATHSTYLEACCESS_ENABLED:false} xplanbox.validation.profiles=${XPLAN_VALIDATION_PROFILES:} xplanbox.s3.bucket.validation=${XPLAN_S3_BUCKET_VALIDATION:validation} diff --git a/xplan-validator/xplan-validator-storage/pom.xml b/xplan-validator/xplan-validator-storage/pom.xml index 0e6a746bc..7da24c8c7 100644 --- a/xplan-validator/xplan-validator-storage/pom.xml +++ b/xplan-validator/xplan-validator-storage/pom.xml @@ -6,7 +6,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-validator</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-validator/xplan-validator-web/pom.xml b/xplan-validator/xplan-validator-web/pom.xml index f5ae26e88..7eed7fb0e 100644 --- a/xplan-validator/xplan-validator-web/pom.xml +++ b/xplan-validator/xplan-validator-web/pom.xml @@ -9,7 +9,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-validator</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-webservices/pom.xml b/xplan-webservices/pom.xml index b9c3d5a62..52d1f8248 100644 --- a/xplan-webservices/pom.xml +++ b/xplan-webservices/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplanbox</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-webservices/xplan-webservices-core/pom.xml b/xplan-webservices/xplan-webservices-core/pom.xml index 327c10279..32df7da77 100644 --- a/xplan-webservices/xplan-webservices-core/pom.xml +++ b/xplan-webservices/xplan-webservices-core/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-webservices/xplan-webservices-inspireplu/pom.xml b/xplan-webservices/xplan-webservices-inspireplu/pom.xml index d498ad476..9c2468449 100644 --- a/xplan-webservices/xplan-webservices-inspireplu/pom.xml +++ b/xplan-webservices/xplan-webservices-inspireplu/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <dependencies> diff --git a/xplan-webservices/xplan-webservices-mapproxy/pom.xml b/xplan-webservices/xplan-webservices-mapproxy/pom.xml index 40dba1a78..55679f288 100644 --- a/xplan-webservices/xplan-webservices-mapproxy/pom.xml +++ b/xplan-webservices/xplan-webservices-mapproxy/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/pom.xml b/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/pom.xml index d93678079..3e0d61385 100644 --- a/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/pom.xml +++ b/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-mapproxy</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/src/main/resources/mapproxy.yaml b/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/src/main/resources/mapproxy.yaml index 64b2d3ef8..133cb8753 100644 --- a/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/src/main/resources/mapproxy.yaml +++ b/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-config/src/main/resources/mapproxy.yaml @@ -385,7 +385,7 @@ globals: lock_dir: "./cache_data/locks" tile_lock_dir: "./cache_data/tile_locks" s3: - endpoint_url: https://${XPLAN_S3_ENDPOINT} + endpoint_url: ${XPLAN_S3_ENDPOINT} bucket_name: ${XPLAN_S3_BUCKET_MAPPROXYCACHE} region_name: ${XPLAN_S3_REGION} image: diff --git a/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-docker/pom.xml b/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-docker/pom.xml index 95201778b..e1c0bd1ec 100644 --- a/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-docker/pom.xml +++ b/xplan-webservices/xplan-webservices-mapproxy/xplan-mapproxy-docker/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-mapproxy</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-webservices/xplan-webservices-mapserver/pom.xml b/xplan-webservices/xplan-webservices-mapserver/pom.xml index 5828a4997..5e1790dce 100644 --- a/xplan-webservices/xplan-webservices-mapserver/pom.xml +++ b/xplan-webservices/xplan-webservices-mapserver/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/pom.xml b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/pom.xml index 61a914e28..6a967687b 100644 --- a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/pom.xml +++ b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-mapserver</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/src/main/resources/common.txt b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/src/main/resources/common.txt index 0a060d3fc..0e7a6f31c 100644 --- a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/src/main/resources/common.txt +++ b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-config/src/main/resources/common.txt @@ -30,7 +30,9 @@ IMAGETYPE png CONFIG "AWS_ACCESS_KEY_ID" "$AWS_ACCESS_KEY_ID" CONFIG "AWS_SECRET_ACCESS_KEY" "$AWS_SECRET_ACCESS_KEY" CONFIG "AWS_REGION" "$AWS_REGION" -CONFIG "AWS_S3_ENDPOINT" "$AWS_S3_ENDPOINT" +CONFIG "AWS_S3_ENDPOINT" "$AWS_S3_ENDPOINT_WITHOUT_PROTOCOL" +CONFIG "AWS_HTTPS" "$AWS_HTTPS" +CONFIG "AWS_VIRTUAL_HOSTING" "$AWS_VIRTUAL_HOSTING" SHAPEPATH "/vsis3/$XPLAN_S3_BUCKET_ATTACHMENTS" OUTPUTFORMAT diff --git a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/pom.xml b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/pom.xml index 43467b8e3..59211c99b 100644 --- a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/pom.xml +++ b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-mapserver</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/startupWithConfiguredMapserver.sh b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/startupWithConfiguredMapserver.sh index ce6c47bf7..8030ca3ea 100755 --- a/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/startupWithConfiguredMapserver.sh +++ b/xplan-webservices/xplan-webservices-mapserver/xplan-mapserver-docker/startupWithConfiguredMapserver.sh @@ -16,8 +16,25 @@ fi echo "[$(date -Iseconds)] Initializing mapserver config ..." echo "[$(date -Iseconds)] MapProxy config initialization..." +defined_envs="$(printf '${%s} ' $(env | cut -d'=' -f1)) \${AWS_S3_ENDPOINT_WITHOUT_PROTOCOL} \${AWS_HTTPS} \${AWS_VIRTUAL_HOSTING}" +export AWS_S3_ENDPOINT_WITHOUT_PROTOCOL="$(echo $AWS_S3_ENDPOINT | sed s/'http[s]\?:\/\/'//)" -defined_envs="$(printf '${%s} ' $(env | cut -d'=' -f1))" +# set AWS_HTTPS=YES|NO +if [[ $AWS_S3_ENDPOINT == https:* ]]; then + export AWS_HTTPS="YES" +else + export AWS_HTTPS="NO" +fi + +# set AWS_VIRTUAL_HOSTING=true|false +XPLAN_S3_PATHSTYLEACCESS_ENABLED="${XPLAN_S3_PATHSTYLEACCESS_ENABLED:-false}" +if [ $XPLAN_S3_PATHSTYLEACCESS_ENABLED = "true" ] +then + echo "[$(date -Iseconds)] XPLAN_S3_PATHSTYLEACCESS_ENABLED is enabled" + export AWS_VIRTUAL_HOSTING="false" +else + export AWS_VIRTUAL_HOSTING="true" +fi TARGET_DIR="$(dirname "${MS_MAPFILE}")" for FILE in /xplan-mapserver-docker/xplan-mapserver-config/*; do diff --git a/xplan-webservices/xplan-webservices-services/pom.xml b/xplan-webservices/xplan-webservices-services/pom.xml index cc43087a7..17d465adb 100644 --- a/xplan-webservices/xplan-webservices-services/pom.xml +++ b/xplan-webservices/xplan-webservices-services/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <modules> diff --git a/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml b/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml index f14ae95fa..98c68a0b8 100644 --- a/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml +++ b/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-services</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <properties> diff --git a/xplan-webservices/xplan-webservices-services/xplan-services-wfs-syn/pom.xml b/xplan-webservices/xplan-webservices-services/xplan-services-wfs-syn/pom.xml index defe9891f..f74fdda94 100644 --- a/xplan-webservices/xplan-webservices-services/xplan-services-wfs-syn/pom.xml +++ b/xplan-webservices/xplan-webservices-services/xplan-services-wfs-syn/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-services</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-webservices/xplan-webservices-services/xplan-services-wfs/pom.xml b/xplan-webservices/xplan-webservices-services/xplan-services-wfs/pom.xml index 93a1ab7be..44461b0ca 100644 --- a/xplan-webservices/xplan-webservices-services/xplan-services-wfs/pom.xml +++ b/xplan-webservices/xplan-webservices-services/xplan-services-wfs/pom.xml @@ -7,7 +7,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-services</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-webservices/xplan-webservices-services/xplan-services-wms/pom.xml b/xplan-webservices/xplan-webservices-services/xplan-services-wms/pom.xml index 8b8828586..7ca1d43fc 100644 --- a/xplan-webservices/xplan-webservices-services/xplan-services-wms/pom.xml +++ b/xplan-webservices/xplan-webservices-services/xplan-services-wms/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices-services</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-webservices/xplan-webservices-validator-wms/pom.xml b/xplan-webservices/xplan-webservices-validator-wms/pom.xml index 2c9d24106..5cf441c59 100644 --- a/xplan-webservices/xplan-webservices-validator-wms/pom.xml +++ b/xplan-webservices/xplan-webservices-validator-wms/pom.xml @@ -9,7 +9,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> diff --git a/xplan-webservices/xplan-webservices-workspaces/pom.xml b/xplan-webservices/xplan-webservices-workspaces/pom.xml index a123d7c59..9d6299440 100644 --- a/xplan-webservices/xplan-webservices-workspaces/pom.xml +++ b/xplan-webservices/xplan-webservices-workspaces/pom.xml @@ -8,7 +8,7 @@ <parent> <groupId>de.latlon.product.xplanbox</groupId> <artifactId>xplan-webservices</artifactId> - <version>8.0</version> + <version>8.0.1</version> </parent> <build> -- GitLab