From ba8216be46ad240d57f8d12eec83395b3485770e Mon Sep 17 00:00:00 2001 From: ThanKarab <tkarabatsis@hotmail.com> Date: Fri, 13 May 2022 02:55:35 -0700 Subject: [PATCH] New updated DOCKERFILE. The DOCKERFILE uses new mvn and jdk images and has no dependencies on HBPMedical repos. Removed many unused old files. Removed docker specific folder. --- .atomist.yml | 15 -- .bumpversion.cfg | 14 -- .circleci/config.yml | 38 ----- .dockerignore | 6 - .gitattributes | 1 - .scalafmt.conf | 9 -- Dockerfile | 95 +++++------ LICENSE | 2 +- README.md | 53 +++---- after-git-clone.sh | 3 - after-update.sh | 3 - {docker/config => config}/application.tmpl | 0 docker/README.md | 41 ----- docker/run.sh | 31 ---- hbp.yml | 94 ----------- slack.json | 1 - .../java/eu/hbp/mip/MIPApplicationTests.java | 23 --- tests/Portal-Backend-soapui-project.xml | 149 ------------------ tests/docker-compose.yml | 118 -------------- tests/integration/README.md | 22 --- tests/integration/algorithmsFactory/test.sh | 17 -- tests/test-run.sh | 100 ------------ tests/test.sh | 76 --------- 23 files changed, 76 insertions(+), 835 deletions(-) delete mode 100644 .atomist.yml delete mode 100644 .bumpversion.cfg delete mode 100644 .circleci/config.yml delete mode 100644 .dockerignore delete mode 100644 .gitattributes delete mode 100644 .scalafmt.conf delete mode 100755 after-git-clone.sh delete mode 100755 after-update.sh rename {docker/config => config}/application.tmpl (100%) delete mode 100644 docker/README.md delete mode 100755 docker/run.sh delete mode 100644 hbp.yml delete mode 100644 slack.json delete mode 100644 src/test/java/eu/hbp/mip/MIPApplicationTests.java delete mode 100644 tests/Portal-Backend-soapui-project.xml delete mode 100644 tests/docker-compose.yml delete mode 100644 tests/integration/README.md delete mode 100755 tests/integration/algorithmsFactory/test.sh delete mode 100755 tests/test-run.sh delete mode 100755 tests/test.sh diff --git a/.atomist.yml b/.atomist.yml deleted file mode 100644 index d21cfad6c..000000000 --- a/.atomist.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -kind: "operation" -client: "com.atomist:rug" -version: "1.0.0-20170816122823" -editor: - name: "AddCircleWebhookEditor" - group: "atomist" - artifact: "enrollment-rugs" - version: "0.3.52" - origin: - repo: "git@github.com:atomisthq/enrollment-rugs.git" - branch: "7a6d5332592a7fa24e9cb5d4080747889e295d1f" - sha: "7a6d533" - parameters: - - "atomistWebhookUrl": "https://webhook.atomist.com/atomist/circle" diff --git a/.bumpversion.cfg b/.bumpversion.cfg deleted file mode 100644 index db493cf1f..000000000 --- a/.bumpversion.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[bumpversion] -current_version = 4.0.0 -commit = True -tag = True -tag_name = {new_version} -parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+) -serialize = {major}.{minor}.{patch} - -[bumpversion:file:pom.xml] -search = <version>{current_version}</version><!-- BUMP_VERSION --> -replace = <version>{new_version}</version><!-- BUMP_VERSION --> - -[bumpversion:file:hbp.yml] - diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index d0f562173..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- - -# Sample advanced CircleCI configuration: https://github.com/transcom/mymove/blob/master/.circleci/config.yml - -version: 2.1 -jobs: - build: - working_directory: ~/src - docker: - - image: hbpmip/docker-compose-for-ci:18.09-5 - environment: - - CIRCLECI: true - steps: - - setup_remote_docker: - version: 18.06.0-ce - - checkout - - restore_cache: - keys: - - pre-commit-dot-cache-{{ checksum ".pre-commit-config.yaml" }} - - run: - name: "Install requirements" - command: | - docker --version - pre-commit install - - run: - name: "Validate code quality" - command: | - pre-commit run --all-files - - save_cache: - key: pre-commit-dot-cache-{{ checksum ".pre-commit-config.yaml" }} - paths: - - ~/.cache/pre-commit - - run: - name: "Build project" - command: ./build.sh - - run: - name: "Test project" - command: ./tests/test.sh diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index d4ed5894e..000000000 --- a/.dockerignore +++ /dev/null @@ -1,6 +0,0 @@ -.bloop/ -.idea/ -.settings/ -project/project/ -project/target/ -target/ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 4d9e597fc..000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -.atomist.yml linguist-generated=true diff --git a/.scalafmt.conf b/.scalafmt.conf deleted file mode 100644 index 1004936b4..000000000 --- a/.scalafmt.conf +++ /dev/null @@ -1,9 +0,0 @@ -style = defaultWithAlign - -danglingParentheses = true -indentOperator = spray -maxColumn = 100 -project.excludeFilters = [".*\\.sbt"] -rewrite.rules = [AsciiSortImports, RedundantBraces, RedundantParens] -spaces.inImportCurlyBraces = true -unindentTopLevelOperators = false diff --git a/Dockerfile b/Dockerfile index de7bf4c86..78a234728 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,62 +1,65 @@ -# Build stage for Java classes -FROM hbpmip/java-base-build:3.6.0-jdk-11-0 as java-build-env +####################################################### +# Build the spring boot maven project +####################################################### +FROM maven:3.8.5-openjdk-11 as mvn-build-env -COPY pom.xml /project/ +ENV CODE_PATH="/opt/code" +WORKDIR $CODE_PATH -RUN cp /usr/share/maven/ref/settings-docker.xml /root/.m2/settings.xml \ - && mvn clean compile test +COPY pom.xml $CODE_PATH -COPY src/ /project/src/ +RUN mvn clean compile test -# Repeating the file copy works better. I dunno why. -RUN cp /usr/share/maven/ref/settings-docker.xml /root/.m2/settings.xml \ - && mvn clean package +COPY src/ $CODE_PATH/src -FROM hbpmip/java-base:11.0.1-1 +RUN mvn clean package -RUN apt-get update && apt-get install -y --no-install-recommends curl jq -RUN rm -rf /var/lib/apt/lists/* /tmp/* +####################################################### +# Setup the running container +####################################################### +FROM openjdk:11.0.15-jdk +MAINTAINER Thanasis Karampatsis <tkarabatsis@athenarc.gr> -COPY docker/config/application.tmpl /opt/portal/config/application.tmpl -COPY docker/README.md docker/run.sh /opt/portal/ +####################################################### +# Setting up timezone +####################################################### +ENV TZ=Etc/GMT +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -RUN addgroup portal \ - && adduser --system --disabled-password --uid 1000 --ingroup portal portal \ - && chmod +x /opt/portal/run.sh \ - && ln -s /opt/portal/run.sh /run.sh \ - && chown -R portal:portal /opt/portal +####################################################### +# Setting up env variables and workdir +####################################################### +ENV APP_CONFIG_TEMPLATE="/opt/config/application.tmpl" \ + APP_CONFIG_LOCATION="/opt/config/application.yml" \ + SPRING_CONFIG_LOCATION="file:/opt/config/application.yml" -COPY --from=java-build-env /project/target/portal-backend.jar /usr/share/jars/ +WORKDIR /opt -ARG BUILD_DATE -ARG VCS_REF -ARG VERSION -USER portal -ENV APP_NAME="Portal backend" \ - APP_TYPE="Spring" \ - VERSION=$VERSION \ - BUILD_DATE=$BUILD_DATE \ - CONTEXT_PATH="/services" \ - BUGSNAG_KEY="dff301aa15eb795a6d8b22b600586f77" +####################################################### +# Install dockerize +####################################################### +ENV DOCKERIZE_VERSION v0.6.1 +RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ + && tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ + && rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz -WORKDIR /home/portal -ENTRYPOINT ["/run.sh"] -EXPOSE 8080 +####################################################### +# Prepare the spring boot application files +####################################################### +COPY /config/application.tmpl $APP_CONFIG_TEMPLATE +COPY --from=mvn-build-env /opt/code/target/portal-backend.jar /usr/share/jars/ + + +####################################################### +# Volume for the backend config files +####################################################### +VOLUME /opt/portal/api + +ENTRYPOINT ["sh", "-c", "dockerize -template $APP_CONFIG_TEMPLATE:$APP_CONFIG_LOCATION java -Daeron.term.buffer.length -jar /usr/share/jars/portal-backend.jar"] +EXPOSE 8080 HEALTHCHECK --start-period=60s CMD curl -v --silent http://localhost:8080/services/actuator/health 2>&1 | grep UP -LABEL org.label-schema.build-date=$BUILD_DATE \ - org.label-schema.name="hbpmip/portal-backend" \ - org.label-schema.description="Spring backend for the MIP portal" \ - org.label-schema.url="https://mip.humanbrainproject.eu" \ - org.label-schema.vcs-type="git" \ - org.label-schema.vcs-url="https://github.com/HBPMedical/portal-backend" \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.version="$VERSION" \ - org.label-schema.vendor="LREN CHUV" \ - org.label-schema.license="AGPLv3" \ - org.label-schema.docker.dockerfile="Dockerfile" \ - org.label-schema.memory-hint="2048" \ - org.label-schema.schema-version="1.0" + diff --git a/LICENSE b/LICENSE index e7feb4171..7b909b7ae 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ Original developer’s Attribution Information ____________________________________________ -Attribution Copyright Notice: © 2016-2017 LREN CHUV. +Attribution Copyright Notice: © 2016-2022 LREN CHUV. Attribution Phrase: Powered by the Medical Informatics Platform of the Human Brain Project Attribution URL: https://mip.humanbrainproject.eu diff --git a/README.md b/README.md index dab02bd62..3beedba81 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,44 @@ [](https://www.unil.ch/lren/en/home.html) [](https://www.gnu.org/licenses/agpl-3.0.html) [](https://hub.docker.com/r/hbpmip/portal-backend/) -[](https://www.codacy.com/app/hbp-mip/portal-backend?utm_source=github.com&utm_medium=referral&utm_content=LREN-CHUV/portal-backend&utm_campaign=Badge_Grade) -[](https://circleci.com/gh/LREN-CHUV/portal-backend/tree/master) # Backend for the MIP portal -## Usage - -* Build a versioned image: `./build.sh` -* Build and test an image: `./test.sh` +## DEV Deployment +To run the backend using an IDE for development, such as IntelliJ, you need a running instance of PostgreSQL. ## Deployment (using a Docker image) +Build the image: ` docker build -t hbpmip/portal-backend:latest .` -* See the [documentation for hbpmip/portal-backend Docker image](./docker/README.md) - -## Build - -Run: `./build.sh` - -## Publish on Docker Hub - -Run: `./publish.sh` +To use this image, you need a running instance of PostgreSQL and to configure the software using the following environment variables. -## License +#### LOG LEVELS ### +* LOG_LEVEL: log level for the developer added logs. Default is "ERROR". +* LOG_LEVEL_FRAMEWORK: log level for all the framework logs. Default is "ERROR". -Copyright © 2016-2017 LREN CHUV +#### AUTHENTICATION ### +* AUTHENTICATION: true for production, false for development. -Licensed under the GNU Affero General Public License, Version 3.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at +#### DATABASE CONFIGURATION ### +* PORTAL_DB_URL: JDBC URL to connect to the portal database, default value is "jdbc:postgresql://127.0.0.1:5432/portal". +* PORTAL_DB_SCHEMA: Database schema, default value is "public". +* PORTAL_DB_USER: User to use when connecting to the portal database, default value is "postgres". +* PORTAL_DB_PASSWORD: Password to use when connecting to the portal database. - [https://www.gnu.org/licenses/agpl-3.0.html](https://www.gnu.org/licenses/agpl-3.0.html) +#### EXTERNAL SERVICES ### +* MIPENGINE_URL: URL to MIPENGINE server. Default is "http://localhost:5000" . +* EXAREME_URL: URL to Exareme server. Default is "http://localhost:9090" . +* GALAXY_URL: URL to Workflow server. Default is "http://localhost:8090/" . +* GALAXY_API_KEY: The api key to authorize galaxy requests. +* GALAXY_USERNAME: The username of galaxy user to be able to embed the frame. +* GALAXY_PASSWORD: The password of galaxy user. -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. +#### KEYCLOAK ### +* KEYCLOAK_AUTH_URL: Keycloak authentication URL. +* KEYCLOAK_REALM: Keycloak realm user for authentication. +* KEYCLOAK_CLIENT_ID: The keycloak client id. +* KEYCLOAK_CLIENT_SECRET: The keycloak secret to be able to authenticate. # Acknowledgements This work has been funded by the European Union Seventh Framework Program (FP7/2007Â2013) under grant agreement no. 604102 (HBP) -This work is part of SP8 of the Human Brain Project (SGA1). diff --git a/after-git-clone.sh b/after-git-clone.sh deleted file mode 100755 index 9495dadda..000000000 --- a/after-git-clone.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -[ -x /usr/local/bin/pre-commit ] && pre-commit install diff --git a/after-update.sh b/after-update.sh deleted file mode 100755 index 9495dadda..000000000 --- a/after-update.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -[ -x /usr/local/bin/pre-commit ] && pre-commit install diff --git a/docker/config/application.tmpl b/config/application.tmpl similarity index 100% rename from docker/config/application.tmpl rename to config/application.tmpl diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index 8693aad09..000000000 --- a/docker/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# hbpmip/portal-backend - -[](https://www.gnu.org/licenses/agpl-3.0.html) [](https://hub.docker.com/r/hbpmip/portal-backend/tags/ "hbpmip/portal-backend image tags") [](https://microbadger.com/#/images/hbpmip/portal-backend "hbpmip/portal-backend on microbadger") - -## Docker image for the MIP portal backend. - -To use this image, you need a running instance of PostgreSQL and to configure the software using the following environment variables. - - -### LOG LEVELS ### -* LOG_LEVEL: log level for the developer added logs. Default is "ERROR". -* LOG_LEVEL_FRAMEWORK: log level for all the framework logs. Default is "ERROR". - - -### AUTHENTICATION ### -* AUTHENTICATION: true for production, false for development. - - -### DATABASE CONFIGURATION ### -* PORTAL_DB_URL: JDBC URL to connect to the portal database, default value is "jdbc:postgresql://127.0.0.1:5432/portal". -* PORTAL_DB_SCHEMA: Database schema, default value is "public". -* PORTAL_DB_USER: User to use when connecting to the portal database, default value is "postgres". -* PORTAL_DB_PASSWORD: Password to use when connecting to the portal database. - - -### EXTERNAL SERVICES ### -* MIPENGINE_URL: URL to MIPENGINE server. Default is "http://localhost:5000" . - -* EXAREME_URL: URL to Exareme server. Default is "http://localhost:9090" . - -* GALAXY_URL: URL to Workflow server. Default is "http://localhost:8090/" . -* GALAXY_API_KEY: The api key to authorize galaxy requests. -* GALAXY_USERNAME: The username of galaxy user to be able to embed the frame. -* GALAXY_PASSWORD: The password of galaxy user. - - -### KEYCLOAK ### -* KEYCLOAK_AUTH_URL: Keycloak authentication URL. -* KEYCLOAK_REALM: Keycloak realm user for authentication. -* KEYCLOAK_CLIENT_ID: The keycloak client id. -* KEYCLOAK_CLIENT_SECRET: The keycloak secret to be able to authenticate. \ No newline at end of file diff --git a/docker/run.sh b/docker/run.sh deleted file mode 100755 index 496f485e6..000000000 --- a/docker/run.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -OPTS="-template /opt/portal/config/application.tmpl:/opt/portal/config/application.yml" -if [ ! -z "$PORTAL_DB_SERVER" ]; then - OPTS="$OPTS -wait tcp://$PORTAL_DB_SERVER -timeout 60s" -fi -if [ ! -z "$META_DB_SERVER" ]; then - OPTS="$OPTS -wait tcp://$META_DB_SERVER -timeout 60s" -fi -if [ ! -z "$FEATURES_DB_SERVER" ]; then - OPTS="$OPTS -wait tcp://$FEATURES_DB_SERVER -timeout 60s" -fi -if [ ! -z "$HTTP_PROXY_HOST" ]; then - JAVA_OPTIONS="$JAVA_OPTIONS -Dhttp.proxyHost=$HTTP_PROXY_HOST" -fi -if [ ! -z "$HTTP_PROXY_PORT" ]; then - JAVA_OPTIONS="$JAVA_OPTIONS -Dhttp.proxyPort=$HTTP_PROXY_PORT" -fi -if [ ! -z "$HTTPS_PROXY_HOST" ]; then - JAVA_OPTIONS="$JAVA_OPTIONS -Dhttps.proxyHost=$HTTPS_PROXY_HOST" -fi -if [ ! -z "$HTTPS_PROXY_PORT" ]; then - JAVA_OPTIONS="$JAVA_OPTIONS -Dhttps.proxyPort=$HTTPS_PROXY_PORT" -fi -JAVA_OPTIONS="$JAVA_OPTIONS -Daeron.term.buffer.length=100m" - -export SPRING_CONFIG_LOCATION=file:/opt/portal/config/application.yml - -cd /opt/portal - -dockerize $OPTS java ${JAVA_OPTIONS} -jar /usr/share/jars/portal-backend.jar diff --git a/hbp.yml b/hbp.yml deleted file mode 100644 index 652137b8e..000000000 --- a/hbp.yml +++ /dev/null @@ -1,94 +0,0 @@ -description: "Backend for the MIP portal" - -long_description: | - Backend for the MIP portal - -authors: - - author: Mirco Nasuti - author_email: - - mirco.nasuti@chuv.ch - organisation: LREN-CHUV - organisation_badge: https://img.shields.io/badge/CHUV-LREN-AF4C64.svg - - author: Ludovic Claude - author_email: - - ludovic.claude@chuv.ch - - ludovic.claude54@gmail.com - - ludovic.claude54@googlemail.com - - ludovic.claude@laposte.net - organisation: LREN-CHUV - organisation_badge: https://img.shields.io/badge/CHUV-LREN-AF4C64.svg - - author: Than Luu-tho - author_email: - - Thanh.Luu-Tho@chuv.ch - organisation: LREN-CHUV - organisation_badge: https://img.shields.io/badge/CHUV-LREN-AF4C64.svg - -platform: MIP -component: - mip_building_block: web-analytics - nature: server - -license: - name: GNU Affero General Public License, Version 3.0 - badge: https://img.shields.io/badge/license-AGPL--3.0-blue.svg - url: https://github.com/LREN-CHUV/portal-backend/blob/master/LICENSE - -code_repositories: - - name: chuv-gitlab - visibility: private - url: https://___.chuv.ch/web-analytics/portal-backend/ - git_clone: https://___.chuv.ch/web-analytics/portal-backend.git - - name: github/LREN-CHUV - visibility: public - url: https://github.io/LREN-CHUV/portal-backend/ - git_clone: https://github.io/LREN-CHUV/portal-backend.git - - name: github/HBPMedical - visibility: public - url: https://github.io/HBPMedical/portal-backend/ - git_clone: https://github.io/HBPMedical/portal-backend.git - -code_quality_checks: - codacy: - badge: https://api.codacy.com/project/badge/Grade/05ba08087da24b3980475f88e1a591b7 - url: "https://www.codacy.com/app/hbp-mip/portal-backend?utm_source=github.com&utm_medium=referral&utm_content=LREN-CHUV/portal-backend&utm_campaign=Badge_Grade" - -testing: - unit_testing: - source: src/test/java - command: ./test.sh - -release_management: - current_version: 4.0.0 - current_code_release: https://github.com/HBPMedical/portal-backend/archive/4.0.0.zip - current_binary_release: https://pypi.python.org/pypi/portal-backend/4.0.0 - release_script: 'publish.sh' - -continuous_integration: - - name: CircleCI - description: "Check style and execute unit tests" - url: https://circleci.com/gh/LREN-CHUV/portal-backend/tree/master - badge: https://circleci.com/gh/LREN-CHUV/portal-backend/tree/master.svg?style=svg - actions: - - build - - unit_tests - -distribution: - docker_hub: - name: hbpmip/portal-backend - current_tag: 4.0.0 - url: https://hub.docker.com/r/hbpmip/portal-backend/ - badge: https://img.shields.io/badge/docker-hbpmip%2Fportal--backend-008bb8.svg - command: docker pull hbpmip/portal-backend:4.0.0 - -planning: - github: - name: Issues on Github - url: https://github.com/LREN-CHUV/portal-backend/issues - trello: - name: "[plans] Web front end" - url: https://trello.com/b/lr3NS4W6/plans-web-front-end - -related_projects: - - name: portal-frontend - mip_building_block: web-analytics - relationship: other-depends-on diff --git a/slack.json b/slack.json deleted file mode 100644 index 8f25bd423..000000000 --- a/slack.json +++ /dev/null @@ -1 +0,0 @@ -{"channel": "#dev-activity", "username": "webhookbot", "text": "USER pushed a new version of hbpmip/portal-backend:VERSION to Docker hub", "icon_emoji": ":whale:"} diff --git a/src/test/java/eu/hbp/mip/MIPApplicationTests.java b/src/test/java/eu/hbp/mip/MIPApplicationTests.java deleted file mode 100644 index be4ef7d96..000000000 --- a/src/test/java/eu/hbp/mip/MIPApplicationTests.java +++ /dev/null @@ -1,23 +0,0 @@ -package eu.hbp.mip; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.GenericXmlContextLoader; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader = GenericXmlContextLoader.class) -public class MIPApplicationTests { - - @Test - public void testHello() - { - /* - * NO UNIT TEST NEEDED FOR THIS COMPONENT - */ - - Assert.assertNotNull("test"); - } -} diff --git a/tests/Portal-Backend-soapui-project.xml b/tests/Portal-Backend-soapui-project.xml deleted file mode 100644 index dc7f7145d..000000000 --- a/tests/Portal-Backend-soapui-project.xml +++ /dev/null @@ -1,149 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<con:soapui-project id="346a0e38-3821-4f4f-85b1-9334f79bc2ad" activeEnvironment="Default" name="Portal Backend" resourceRoot="" soapui-version="5.2.1" abortOnError="false" runType="SEQUENTIAL" xmlns:con="http://eviware.com/soapui/config"><con:description>MIP Portal backend Tests</con:description><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.actions.iface.tools.soapui.TestRunnerAction@values-local"><![CDATA[<xml-fragment xmlns:con="http://eviware.com/soapui/config"> - <con:entry key="Environment" value="Default"/> - <con:entry key="Global Properties" value=""/> - <con:entry key="TestSuite" value="http://localhost:65440/services TestSuite"/> - <con:entry key="Password" value=""/> - <con:entry key="TestRunner Path" value=""/> - <con:entry key="Tool Args" value=""/> - <con:entry key="Ignore Errors" value="false"/> - <con:entry key="Host:Port" value=""/> - <con:entry key="user-settings.xml Password" value=""/> - <con:entry key="WSS Password Type" value=""/> - <con:entry key="Save Project" value="false"/> - <con:entry key="Enable UI" value="false"/> - <con:entry key="System Properties" value=""/> - <con:entry key="Domain" value=""/> - <con:entry key="Coverage Report" value="false"/> - <con:entry key="Export JUnit Results" value="false"/> - <con:entry key="Export JUnit Results with test properties" value="false"/> - <con:entry key="Open Report" value="false"/> - <con:entry key="Project Properties" value=""/> - <con:entry key="Export All" value="false"/> - <con:entry key="Project Password" value=""/> - <con:entry key="Report Format(s)" value=""/> - <con:entry key="TestCase" value="Services TestCase"/> - <con:entry key="Print Report" value="false"/> - <con:entry key="Username" value=""/> - <con:entry key="Root Folder" value=""/> - <con:entry key="Select Report Type" value=""/> - <con:entry key="Save After" value="false"/> - <con:entry key="Add Settings" value="false"/> - <con:entry key="Endpoint" value=""/> -</xml-fragment>]]></con:setting></con:settings><con:interface xsi:type="con:RestService" id="0f9c1f77-d46f-4296-a7ac-6313de20e79c" wadlVersion="http://wadl.dev.java.net/2009/02" name="http://localhost:65440/services" type="rest" basePath="/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart=""/><con:endpoints><con:endpoint>http://localhost:65440</con:endpoint></con:endpoints><con:resource name="Services" path="/groups" id="9c244ad4-7ea5-419c-b113-2844b0c2d9f2"><con:settings/><con:parameters/><con:method name="GET Groups" id="69301736-64fd-4367-af05-713f2310ac9e" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE"><con:mediaType xsi:nil="true"/><con:status>0</con:status><con:params/><con:element>data</con:element></con:representation><con:representation type="RESPONSE"><con:mediaType>application/json;charset=UTF-8</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:gro="http://localhost/services/groups">gro:Response</con:element></con:representation><con:request name="GET Groups" id="b83c0631-8c59-4e01-b10f-f7f273ada95a" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/groups</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="variables" path="variables" id="ede43090-7108-4909-859b-1eac3cea607e"><con:settings/><con:parameters/><con:resource name="hierarchy" path="hierarchy" id="634676d4-7938-4f7d-acdf-9b540f49b86b"><con:settings/><con:parameters/><con:method name="Variables Hierarchy" id="f4c87a21-4664-4b3d-8cff-f2afce496b08" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE"><con:mediaType>application/json;charset=UTF-8</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:hier="http://localhost/services/variables/hierarchy">hier:Response</con:element></con:representation><con:request name="GET Variables Hierarchy" id="1bc51a21-1529-4574-b760-4ac46353af9a" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/variables/hierarchy</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:method name="GET Variables" id="43095ea1-ec72-4d6a-9845-f713e9cdf31d" method="GET"><con:settings/><con:parameters/><con:request name="GET Variables" id="0de4abb8-a25b-4556-9577-fad18c579242" mediaType="application/json"><con:settings/><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="stats" path="stats" id="ebb46b5a-ed33-4e5b-92a3-662e624b434d"><con:settings/><con:parameters/><con:method name="GET Stats" id="9367c943-5e1f-467d-9bfc-fae18fd660d3" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE"><con:mediaType>application/json;charset=UTF-8</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:stat="http://localhost/services/stats">stat:Response</con:element></con:representation><con:request name="GET Stats" id="3cabf6a5-1f65-46cf-afef-37d1d9f33356" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/stats</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="requests" path="queries/requests" id="86f21403-5236-4e78-ac1a-a3fcabbe5372"><con:settings/><con:parameters/><con:method name="POST Requests" id="37523efd-c188-4eff-b3ce-59c8013a5037" method="POST"><con:settings/><con:parameters/><con:representation type="REQUEST"><con:mediaType>application/json</con:mediaType><con:params/></con:representation><con:representation type="RESPONSE"><con:mediaType>application/json;charset=UTF-8</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:req="http://localhost/services/queries/requests">req:Response</con:element></con:representation><con:request name="POST Requests" id="a2c0a5bb-16cc-4679-aba1-ece38fc752e4" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request>{ - "variables": [{ - "code": "tv1" - }], - "groupings": [], - "coVariables": [{ - "code": "tv2" - }, { - "code": "tv3" - }], - "filters": [] -}</con:request><con:originalUri>http://localhost/services/queries/requests</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="articles" path="articles" id="2a3d6b15-3a36-4fe2-af53-f357e51b6706"><con:settings/><con:parameters/><con:method name="GET Articles" id="2bb213be-acc6-47fa-8fdf-5c37238dd2b6" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE"><con:mediaType>application/json;charset=UTF-8</con:mediaType><con:status>200</con:status><con:params/><con:element>Response</con:element></con:representation><con:representation type="RESPONSE"><con:mediaType xsi:nil="true"/><con:status>201</con:status><con:params/><con:element>data</con:element></con:representation><con:representation type="REQUEST"><con:mediaType>application/json</con:mediaType><con:params/></con:representation><con:representation type="RESPONSE"><con:mediaType xsi:nil="true"/><con:status>201</con:status><con:params/><con:element>data</con:element></con:representation><con:request name="GET Articles" id="3b7e2978-2a05-4256-8c17-be4d4ac7c8ed" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/articles</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method><con:method name="POST Articles" id="1de518c3-8427-4e9f-9b1a-322a9620f4dc" method="POST"><con:settings/><con:parameters/><con:representation type="RESPONSE"><con:mediaType xsi:nil="true"/><con:status>201</con:status><con:params/><con:element>data</con:element></con:representation><con:representation type="REQUEST"><con:mediaType>application/json</con:mediaType><con:params/></con:representation><con:request name="POST Articles" id="de805279-423b-4a5f-a87d-8637991097f3" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request>{ - "status": "closed", - "content": "test", - "title": "Test", - "abstract": "test" -}</con:request><con:originalUri>http://localhost/services/articles</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="models" path="models" id="e21204f6-3a39-447a-9d79-8945e076cf71"><con:settings/><con:parameters/><con:method name="GET Models" id="c5ffc3e9-d8df-473d-8d35-4769edaed22a" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE"><con:mediaType>application/json;charset=UTF-8</con:mediaType><con:status>200</con:status><con:params/><con:element>Response</con:element></con:representation><con:representation type="REQUEST"><con:mediaType>application/json</con:mediaType><con:params/></con:representation><con:request name="GET Models" id="61d3e2b1-9464-405d-ace2-7219dfc25bfa" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/models</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method><con:method name="POST Models" id="93869b1e-0bed-4f02-861b-b37584f7ff73" method="POST"><con:settings/><con:parameters/><con:representation type="RESPONSE"><con:mediaType>application/json;charset=UTF-8</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:mod="http://localhost/services/models">mod:Response</con:element></con:representation><con:representation type="REQUEST"><con:mediaType>application/json</con:mediaType><con:params/></con:representation><con:request name="POST Models" id="815c84e8-7579-4c8a-adc2-879a413c3a2e" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request>{ - "slug": "test", - "title": "Test", - "valid": false, - "createdAt": 1474362803284, - "query": { - "variables": [{ - "code": "tv1" - }], - "filters": [], - "coVariables": [{ - "code": "tv2" - }, { - "code": "tv3" - }], - "groupings": [] - }, - "dataset": { - "code": "XXXX", - "date": 1234567, - "header": ["tv2", "tv3"], - "grouping": [], - "variable": ["tv1"] - }, - "config": { - "type": "line", - "height": 480, - "yAxisVariables": ["tv2", "tv3"], - "xAxisVariable": null, - "hasXAxis": true, - "title": { - "text": "Test" - } - }, - "createdBy": { - "username": "Anonymous", - "fullname": "Anonymous", - "languages": [], - "roles": [], - "agreeNDA": true, - "votedApps": [] - } -}</con:request><con:originalUri>http://localhost/services/models</con:originalUri><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource></con:interface><con:testSuite id="089d4caf-10f2-4001-b282-21dab4cb8910" name="http://localhost:65440/services TestSuite"><con:description>TestSuite generated for REST Service [http://localhost:65440/services]</con:description><con:settings/><con:runType>SEQUENTIAL</con:runType><con:testCase id="48850601-2531-4245-86f3-8ca7dc21560c" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Services TestCase" searchProperties="true"><con:description>TestCase generated for REST Resource [Services] located at [/groups]</con:description><con:settings/><con:testStep type="restrequest" name="GET Groups" id="cf84e939-d28a-4022-90b6-72144f4b814c"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/groups" methodName="GET Groups" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="GET Groups" id="b83c0631-8c59-4e01-b10f-f7f273ada95a" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/groups</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="6893bd56-5c6d-4f34-b306-4011e00a6868" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="7798436f-d62c-480d-818f-90365c0b8e64" name="JsonPath Match"><con:configuration><path>$</path><content>{"code":"root","groups":[{"code":"tg1","label":"Test Group 1","groups":[{"code":"tg3","label":"Test Group 3","groups":[]}]},{"code":"tg2","label":"Test Group 2","groups":[{"code":"tg4","label":"Test Group 4","groups":[]}]}]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:restRequest></con:config></con:testStep><con:properties/></con:testCase><con:testCase id="fe17aec0-13b2-40df-8770-c676b059fe8a" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="variables TestCase" searchProperties="true"><con:description>TestCase generated for REST Resource [variables] located at [/variables]</con:description><con:settings/><con:testStep type="restrequest" name="GET Variables" id="a8c6886b-140f-49e2-b02b-5f0d295fbaff"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/variables" methodName="GET Variables" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="GET Variables" id="0de4abb8-a25b-4556-9577-fad18c579242" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/variables</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="ce7c49da-1391-4473-a037-483edd8a9556" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="d5ddf208-1f80-4c5c-b65a-05e71cc935fa" name="JsonPath Match"><con:configuration><path>$</path><content>[{"code":"tv1","label":"Test Variable 1","type":"text","group":{"code":"tg3","label":"Test Group 3"},"isVariable":true},{"code":"tv2","label":"Test Variable 2","type":"integer","group":{"code":"tg4","label":"Test Group 4"},"isVariable":true},{"code":"tv3","label":"Test Variable 3","type":"real","group":{"code":"tg4","label":"Test Group 4"},"isVariable":true}]</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:restRequest></con:config></con:testStep><con:properties/></con:testCase><con:testCase id="0cc3239b-4b56-4aaa-badb-adf1ce319ea8" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="hierarchy TestCase" searchProperties="true"><con:description>TestCase generated for REST Resource [hierarchy] located at [/variables/hierarchy]</con:description><con:settings/><con:testStep type="restrequest" name="GET Variables Hierarchy" id="607108aa-0e00-42f3-bd96-4e08fe4aaa17"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/variables/hierarchy" methodName="Variables Hierarchy" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="GET Variables Hierarchy" id="1bc51a21-1529-4574-b760-4ac46353af9a" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/variables/hierarchy</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="f9c13d03-951c-48ed-9177-551bab6f9cfe" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="f59c455a-4227-466d-9b72-89b361ab2d72" name="JsonPath Match"><con:configuration><path>$</path><content>{"code":"root","groups":[{"code":"tg1","label":"Test Group 1","groups":[{"code":"tg3","label":"Test Group 3","variables":[{"code":"tv1","label":"Test Variable 1","type":"text"}]}]},{"code":"tg2","label":"Test Group 2","groups":[{"code":"tg4","label":"Test Group 4","variables":[{"code":"tv2","label":"Test Variable 2","type":"integer"},{"code":"tv3","label":"Test Variable 3","type":"real"}]}]}]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:restRequest></con:config></con:testStep><con:properties/></con:testCase><con:testCase id="c4015c47-e968-48c2-adaf-4ff3ec92d960" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="stats TestCase" searchProperties="true"><con:settings/><con:testStep type="restrequest" name="GET Stats - GET Stats" id="f7cfd058-3850-4090-822b-66713afbe20c"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/stats" methodName="GET Stats" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="GET Stats - GET Stats" id="3cabf6a5-1f65-46cf-afef-37d1d9f33356" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/stats</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="b290cbb2-79a2-4205-8526-31710e9cbdb5" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="857cec88-eaae-4eb2-bf0c-eb93a3defa1f" name="JsonPath Match"><con:configuration><path>$.variables</path><content>3</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:restRequest></con:config></con:testStep><con:properties/></con:testCase><con:testCase id="a04024d4-a9ad-4a37-89a0-14c319e20529" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="requests TestCase" searchProperties="true"><con:settings/><con:testStep type="restrequest" name="POST Requests - POST Requests" id="7a6a900b-b323-499c-a23e-0ac89df77053"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/queries/requests" methodName="POST Requests" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="POST Requests - POST Requests" id="a2c0a5bb-16cc-4679-aba1-ece38fc752e4" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request>{ - "variables": [{ - "code": "tv1" - }], - "groupings": [], - "coVariables": [{ - "code": "tv2" - }, { - "code": "tv3" - }], - "filters": [] -}</con:request><con:originalUri>http://localhost/services/queries/requests</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="ba261d1d-ad63-40d3-9a23-d3e9357eefe2" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="ebcaa44d-69c6-4835-8319-2127362de861" name="JsonPath Match - variable"><con:configuration><path>$.variable</path><content>["tv1"]</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="ebcaa44d-69c6-4835-8319-2127362de861" name="JsonPath Match - grouping"><con:configuration><path>$.grouping</path><content>[]</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="ebcaa44d-69c6-4835-8319-2127362de861" name="JsonPath Match - header"><con:configuration><path>$.header</path><content>["tv2","tv3"]</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="ebcaa44d-69c6-4835-8319-2127362de861" name="JsonPath Match - data"><con:configuration><path>$.data</path><content>{"tv1":["val676 ","val677 ","val678 ","val679 ","val680 ","val681 ","val682 ","val683 ","val684 ","val685 ","val686 ","val687 ","val688 ","val689 ","val690 ","val691 ","val692 ","val693 ","val694 ","val695 ","val696 ","val697 ","val698 ","val699 ","val700 ","val701 ","val702 ","val784 ","val785 ","val786 ","val787 ","val788 ","val789 ","val790 ","val791 ","val792 ","val793 ","val794 ","val795 ","val796 ","val797 ","val798 ","val799 ","val800 ","val801 ","val802 ","val803 ","val804 ","val805 ","val806 ","val807 ","val808 ","val809 ","val810 ","val1081 ","val1082 ","val1083 ","val1084 ","val1085 ","val1086 ","val1087 ","val1088 ","val1089 ","val1090 ","val1091 ","val1092 ","val1093 ","val1094 ","val1095 ","val1096 ","val1097 ","val1098 ","val1099 ","val1100 ","val1101 ","val1102 ","val1103 ","val1104 ","val1105 ","val1106 ","val1107 ","val1162 ","val1163 ","val1164 ","val1165 ","val1166 ","val1167 ","val1168 ","val1169 ","val1170 ","val1171 ","val1172 ","val1173 ","val1174 ","val1175 ","val1176 ","val1177 ","val1178 ","val1179 ","val1180 ","val1181 ","val1182 ","val1183 ","val1184 ","val1185 ","val1186 ","val1187 ","val1188 ","val1189 ","val1190 ","val1191 ","val1192 ","val1193 ","val1194 ","val1195 ","val1196 ","val1197 ","val1198 ","val1199 ","val1200 ","val1201 ","val1202 ","val1203 ","val1204 ","val1205 ","val1206 ","val1207 ","val1208 ","val1209 ","val1210 ","val1211 ","val1212 ","val1213 ","val1214 ","val1215 ","val1567 ","val1568 ","val1569 ","val1570 ","val1571 ","val1572 ","val1573 ","val1574 ","val1575 ","val1576 ","val1577 ","val1578 ","val1579 ","val1580 ","val1581 ","val1582 ","val1583 ","val1584 ","val1585 ","val1586 ","val1587 ","val1588 ","val1589 ","val1590 ","val1591 ","val1592 ","val1593 ","val1702 ","val1703 ","val1704 ","val1705 ","val1706 ","val1707 ","val1708 ","val1709 ","val1710 ","val1711 ","val1712 ","val1713 ","val1714 ","val1715 ","val1716 ","val1717 ","val1718 ","val1719 ","val1720 ","val1721 ","val1722 ","val1723 ","val1724 ","val1725 ","val1726 ","val1727 ","val1728 ","val1837 ","val1838 ","val1839 ","val1840 ","val1841 ","val1842 ","val1843 ","val1844 ","val1845 ","val1846 ","val1847 ","val1848 ","val1849 ","val1850 ","val1851 ","val1852 ","val1853 ","val1854 ","val1855 ","val1856 ","val1857 ","val1858 ","val1859 ","val1860 ","val1861 ","val1862 ","val1863 "],"tv2":[676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863],"tv3":[67.6,67.7,67.8,67.9,68,68.1,68.2,68.3,68.4,68.5,68.6,68.7,68.8,68.9,69,69.1,69.2,69.3,69.4,69.5,69.6,69.7,69.8,69.9,70,70.1,70.2,78.4,78.5,78.6,78.7,78.8,78.9,79,79.1,79.2,79.3,79.4,79.5,79.6,79.7,79.8,79.9,80,80.1,80.2,80.3,80.4,80.5,80.6,80.7,80.8,80.9,81,108.1,108.2,108.3,108.4,108.5,108.6,108.7,108.8,108.9,109,109.1,109.2,109.3,109.4,109.5,109.6,109.7,109.8,109.9,110,110.1,110.2,110.3,110.4,110.5,110.6,110.7,116.2,116.3,116.4,116.5,116.6,116.7,116.8,116.9,117,117.1,117.2,117.3,117.4,117.5,117.6,117.7,117.8,117.9,118,118.1,118.2,118.3,118.4,118.5,118.6,118.7,118.8,118.9,119,119.1,119.2,119.3,119.4,119.5,119.6,119.7,119.8,119.9,120,120.1,120.2,120.3,120.4,120.5,120.6,120.7,120.8,120.9,121,121.1,121.2,121.3,121.4,121.5,156.7,156.8,156.9,157,157.1,157.2,157.3,157.4,157.5,157.6,157.7,157.8,157.9,158,158.1,158.2,158.3,158.4,158.5,158.6,158.7,158.8,158.9,159,159.1,159.2,159.3,170.2,170.3,170.4,170.5,170.6,170.7,170.8,170.9,171,171.1,171.2,171.3,171.4,171.5,171.6,171.7,171.8,171.9,172,172.1,172.2,172.3,172.4,172.5,172.6,172.7,172.8,183.7,183.8,183.9,184,184.1,184.2,184.3,184.4,184.5,184.6,184.7,184.8,184.9,185,185.1,185.2,185.3,185.4,185.5,185.6,185.7,185.8,185.9,186,186.1,186.2,186.3]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:restRequest></con:config></con:testStep><con:properties/></con:testCase><con:testCase id="24044d0d-ac99-418a-a729-317c7ae6893a" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="articles TestCase" searchProperties="true"><con:settings/><con:testStep type="restrequest" name="Articles - POST Articles" id="b10c87aa-b51d-4dec-a069-82cbe55074c2"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/articles" methodName="POST Articles" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="Articles - POST Articles" id="de805279-423b-4a5f-a87d-8637991097f3" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request>{ - "status": "closed", - "content": "test", - "title": "Test", - "abstract": "test" -}</con:request><con:originalUri>http://localhost/services/articles</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="e6b6da38-f109-4c70-ae32-7589a134e6f8" name="Valid HTTP Status Codes"><con:configuration><codes>201</codes></con:configuration></con:assertion><con:credentials><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="restrequest" name="Articles - GET Articles" id="b350a22a-9a7b-4f20-a9f1-5a8f48a376a0"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/articles" methodName="GET Articles" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="Articles - GET Articles" id="3b7e2978-2a05-4256-8c17-be4d4ac7c8ed" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/articles</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="8b0c6113-e31b-4551-ab07-0e905b8d9e33" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="0c1d6c89-9fcc-4a80-a79a-3e51091a1335" name="JsonPath Match - slug"><con:configuration><path>$[0].slug</path><content>test</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="0c1d6c89-9fcc-4a80-a79a-3e51091a1335" name="JsonPath Match - title"><con:configuration><path>$[0].title</path><content>Test</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="0c1d6c89-9fcc-4a80-a79a-3e51091a1335" name="JsonPath Match - status"><con:configuration><path>$[0].status</path><content>closed</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="0c1d6c89-9fcc-4a80-a79a-3e51091a1335" name="JsonPath Match - content"><con:configuration><path>$[0].content</path><content>test</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="0c1d6c89-9fcc-4a80-a79a-3e51091a1335" name="JsonPath Match - createdBy"><con:configuration><path>$[0].createdBy</path><content>{"username":"Anonymous","fullname":"Anonymous","languages":[],"roles":[],"agreeNDA":true,"votedApps":[]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="0c1d6c89-9fcc-4a80-a79a-3e51091a1335" name="JsonPath Match - tags"><con:configuration><path>$[0].tags</path><content>[]</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="0c1d6c89-9fcc-4a80-a79a-3e51091a1335" name="JsonPath Match - abstract"><con:configuration><path>$[0].abstract</path><content>test</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:restRequest></con:config></con:testStep><con:properties/></con:testCase><con:testCase id="1b3c305d-e074-4459-8949-f18dd5f745cc" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="models TestCase" searchProperties="true"><con:settings/><con:testStep type="restrequest" name="Models - POST Models" id="c28d5289-ad9a-4767-94fa-98c18eafba04"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/models" methodName="POST Models" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="Models - POST Models" id="815c84e8-7579-4c8a-adc2-879a413c3a2e" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request>{ - "slug": "test", - "title": "Test", - "valid": false, - "createdAt": 1474362803284, - "query": { - "variables": [{ - "code": "tv1" - }], - "filters": [], - "coVariables": [{ - "code": "tv2" - }, { - "code": "tv3" - }], - "groupings": [] - }, - "dataset": { - "code": "XXXX", - "date": 1234567, - "header": ["tv2", "tv3"], - "grouping": [], - "variable": ["tv1"] - }, - "config": { - "type": "line", - "height": 480, - "yAxisVariables": ["tv2", "tv3"], - "xAxisVariable": null, - "hasXAxis": true, - "title": { - "text": "Test" - } - }, - "createdBy": { - "username": "Anonymous", - "fullname": "Anonymous", - "languages": [], - "roles": [], - "agreeNDA": true, - "votedApps": [] - } -}</con:request><con:originalUri>http://localhost/services/models</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="06412c39-9813-4c51-81b5-314821077afc" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="bea49cac-eb54-4e50-bf02-53182fd8cb81" name="JsonPath Match - valid"><con:configuration><path>$.valid</path><content>false</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="bea49cac-eb54-4e50-bf02-53182fd8cb81" name="JsonPath Match - query"><con:configuration><path>$.query</path><content>{"variables":[{"code":"tv1"}],"coVariables":[{"code":"tv2"},{"code":"tv3"}],"groupings":[],"filter":[]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="bea49cac-eb54-4e50-bf02-53182fd8cb81" name="JsonPath Match - dataset"><con:configuration><path>$.dataset</path><content>{"code":"XXXX","date":1234567,"header":["tv2","tv3"],"grouping":[],"variable":["tv1"]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="bea49cac-eb54-4e50-bf02-53182fd8cb81" name="JsonPath Match - createdBy"><con:configuration><path>$.createdBy</path><content>{"username":"Anonymous","fullname":"Anonymous","languages":[],"roles":[],"agreeNDA":true,"votedApps":[]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><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="restrequest" name="Models - GET Models" id="6269030f-99ed-4d34-ad15-9282305bd987"><con:settings/><con:config service="http://localhost:65440/services" resourcePath="/services/models" methodName="GET Models" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="Models - GET Models" id="61d3e2b1-9464-405d-ace2-7219dfc25bfa" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:65440</con:endpoint><con:request/><con:originalUri>http://localhost/services/models</con:originalUri><con:assertion type="Valid HTTP Status Codes" id="aa591750-13ab-416c-8a51-d82cd7599a00" name="Valid HTTP Status Codes"><con:configuration><codes>200</codes></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="851e6dad-ed94-46ab-951a-0e5912b8f67c" name="JsonPath Match - slug"><con:configuration><path>$[0].slug</path><content>test</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="851e6dad-ed94-46ab-951a-0e5912b8f67c" name="JsonPath Match - title"><con:configuration><path>$[0].title</path><content>Test</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="851e6dad-ed94-46ab-951a-0e5912b8f67c" name="JsonPath Match - valid"><con:configuration><path>$[0].valid</path><content>false</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="851e6dad-ed94-46ab-951a-0e5912b8f67c" name="JsonPath Match - query"><con:configuration><path>$[0].query</path><content>{"variables":[{"code":"tv1"}],"coVariables":[{"code":"tv2"},{"code":"tv3"}],"groupings":[],"filter":[]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="851e6dad-ed94-46ab-951a-0e5912b8f67c" name="JsonPath Match - dataset"><con:configuration><path>$[0].dataset</path><content>{"code":"XXXX","date":1234000,"header":["tv2","tv3"],"grouping":[],"variable":["tv1"],"data":{"tv1":["val676 ","val677 ","val678 ","val679 ","val680 ","val681 ","val682 ","val683 ","val684 ","val685 ","val686 ","val687 ","val688 ","val689 ","val690 ","val691 ","val692 ","val693 ","val694 ","val695 ","val696 ","val697 ","val698 ","val699 ","val700 ","val701 ","val702 ","val784 ","val785 ","val786 ","val787 ","val788 ","val789 ","val790 ","val791 ","val792 ","val793 ","val794 ","val795 ","val796 ","val797 ","val798 ","val799 ","val800 ","val801 ","val802 ","val803 ","val804 ","val805 ","val806 ","val807 ","val808 ","val809 ","val810 ","val1081 ","val1082 ","val1083 ","val1084 ","val1085 ","val1086 ","val1087 ","val1088 ","val1089 ","val1090 ","val1091 ","val1092 ","val1093 ","val1094 ","val1095 ","val1096 ","val1097 ","val1098 ","val1099 ","val1100 ","val1101 ","val1102 ","val1103 ","val1104 ","val1105 ","val1106 ","val1107 ","val1162 ","val1163 ","val1164 ","val1165 ","val1166 ","val1167 ","val1168 ","val1169 ","val1170 ","val1171 ","val1172 ","val1173 ","val1174 ","val1175 ","val1176 ","val1177 ","val1178 ","val1179 ","val1180 ","val1181 ","val1182 ","val1183 ","val1184 ","val1185 ","val1186 ","val1187 ","val1188 ","val1189 ","val1190 ","val1191 ","val1192 ","val1193 ","val1194 ","val1195 ","val1196 ","val1197 ","val1198 ","val1199 ","val1200 ","val1201 ","val1202 ","val1203 ","val1204 ","val1205 ","val1206 ","val1207 ","val1208 ","val1209 ","val1210 ","val1211 ","val1212 ","val1213 ","val1214 ","val1215 ","val1567 ","val1568 ","val1569 ","val1570 ","val1571 ","val1572 ","val1573 ","val1574 ","val1575 ","val1576 ","val1577 ","val1578 ","val1579 ","val1580 ","val1581 ","val1582 ","val1583 ","val1584 ","val1585 ","val1586 ","val1587 ","val1588 ","val1589 ","val1590 ","val1591 ","val1592 ","val1593 ","val1702 ","val1703 ","val1704 ","val1705 ","val1706 ","val1707 ","val1708 ","val1709 ","val1710 ","val1711 ","val1712 ","val1713 ","val1714 ","val1715 ","val1716 ","val1717 ","val1718 ","val1719 ","val1720 ","val1721 ","val1722 ","val1723 ","val1724 ","val1725 ","val1726 ","val1727 ","val1728 ","val1837 ","val1838 ","val1839 ","val1840 ","val1841 ","val1842 ","val1843 ","val1844 ","val1845 ","val1846 ","val1847 ","val1848 ","val1849 ","val1850 ","val1851 ","val1852 ","val1853 ","val1854 ","val1855 ","val1856 ","val1857 ","val1858 ","val1859 ","val1860 ","val1861 ","val1862 ","val1863 "],"tv2":[676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863],"tv3":[67.6,67.7,67.8,67.9,68,68.1,68.2,68.3,68.4,68.5,68.6,68.7,68.8,68.9,69,69.1,69.2,69.3,69.4,69.5,69.6,69.7,69.8,69.9,70,70.1,70.2,78.4,78.5,78.6,78.7,78.8,78.9,79,79.1,79.2,79.3,79.4,79.5,79.6,79.7,79.8,79.9,80,80.1,80.2,80.3,80.4,80.5,80.6,80.7,80.8,80.9,81,108.1,108.2,108.3,108.4,108.5,108.6,108.7,108.8,108.9,109,109.1,109.2,109.3,109.4,109.5,109.6,109.7,109.8,109.9,110,110.1,110.2,110.3,110.4,110.5,110.6,110.7,116.2,116.3,116.4,116.5,116.6,116.7,116.8,116.9,117,117.1,117.2,117.3,117.4,117.5,117.6,117.7,117.8,117.9,118,118.1,118.2,118.3,118.4,118.5,118.6,118.7,118.8,118.9,119,119.1,119.2,119.3,119.4,119.5,119.6,119.7,119.8,119.9,120,120.1,120.2,120.3,120.4,120.5,120.6,120.7,120.8,120.9,121,121.1,121.2,121.3,121.4,121.5,156.7,156.8,156.9,157,157.1,157.2,157.3,157.4,157.5,157.6,157.7,157.8,157.9,158,158.1,158.2,158.3,158.4,158.5,158.6,158.7,158.8,158.9,159,159.1,159.2,159.3,170.2,170.3,170.4,170.5,170.6,170.7,170.8,170.9,171,171.1,171.2,171.3,171.4,171.5,171.6,171.7,171.8,171.9,172,172.1,172.2,172.3,172.4,172.5,172.6,172.7,172.8,183.7,183.8,183.9,184,184.1,184.2,184.3,184.4,184.5,184.6,184.7,184.8,184.9,185,185.1,185.2,185.3,185.4,185.5,185.6,185.7,185.8,185.9,186,186.1,186.2,186.3]}}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="851e6dad-ed94-46ab-951a-0e5912b8f67c" name="JsonPath Match - config"><con:configuration><path>$[0].config</path><content>{"type":"line","height":480,"yAxisVariables":["tv2","tv3"],"xAxisVariable":null,"hasXAxis":true,"title":{"text":"Test"}}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:assertion type="JsonPath Match" id="851e6dad-ed94-46ab-951a-0e5912b8f67c" name="JsonPath Match - createdBy"><con:configuration><path>$[0].createdBy</path><content>{"username":"Anonymous","fullname":"Anonymous","languages":[],"roles":[],"agreeNDA":true,"votedApps":[]}</content><allowWildcards>false</allowWildcards><ignoreNamspaceDifferences>false</ignoreNamspaceDifferences><ignoreComments>false</ignoreComments></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:restRequest></con:config></con:testStep><con:properties/></con:testCase><con:properties/></con:testSuite><con:properties/><con:wssContainer/><con:oAuth2ProfileContainer/><con:sensitiveInformation/></con:soapui-project> diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml deleted file mode 100644 index 478d6e48d..000000000 --- a/tests/docker-compose.yml +++ /dev/null @@ -1,118 +0,0 @@ -version: '2' -services: - - # Expose the database to the host - db: - image: postgres:11.3-alpine - ports: - - "5432:5432" - hostname: db - networks: - - portal-bridge - environment: - POSTGRES_PASSWORD: test - - wait_dbs: - image: "waisbrot/wait" - restart: "no" - networks: - - portal-bridge - environment: - - TARGETS=db:5432 - - create_dbs: - image: "hbpmip/create-databases:1.1.0" - restart: "no" - networks: - - portal-bridge - environment: - DB_HOST: db - DB_PORT: 5432 - DB_ADMIN_USER: postgres - DB_ADMIN_PASSWORD: test - DB1: meta - USER1: meta - PASSWORD1: metapwd - DB2: features - USER2: features - PASSWORD2: featurespwd - DB3: portal - USER3: portal - PASSWORD3: portalpwd - depends_on: - - db - - meta_db_setup: - image: "hbpmip/sample-meta-db-setup:0.7.1" - container_name: "meta-db-setup" - restart: "no" - networks: - - portal-bridge - environment: - FLYWAY_DBMS: postgresql - FLYWAY_HOST: db - FLYWAY_PORT: 5432 - FLYWAY_DATABASE_NAME: meta - FLYWAY_USER: postgres - FLYWAY_PASSWORD: test - depends_on: - - db - - sample_db_setup: - image: "hbpmip/sample-data-db-setup:0.7.1" - container_name: "data-db-setup" - restart: "no" - networks: - - portal-bridge - environment: - FLYWAY_DBMS: postgresql - FLYWAY_HOST: db - FLYWAY_PORT: 5432 - FLYWAY_DATABASE_NAME: features - FLYWAY_USER: postgres - FLYWAY_PASSWORD: test - depends_on: - - db - - # Use latest version as this is the image under test - portal_backend: - image: "hbpmip/portal-backend" - container_name: "backend-test" - restart: "no" - ports: - - "65440:8080" - networks: - - portal-bridge - environment: - PORTAL_DB_URL: jdbc:postgresql://db:5432/portal - PORTAL_DB_SERVER: db:5432 - PORTAL_DB_USER: portal - PORTAL_DB_PASSWORD: portalpwd - META_DB_URL: jdbc:postgresql://db:5432/meta - META_DB_SERVER: db:5432 - META_DB_USER: meta - META_DB_PASSWORD: metapwd - FEATURES_DB_URL: jdbc:postgresql://db:5432/features - FEATURES_DB_SERVER: db:5432 - FEATURES_DB_USER: features - FEATURES_DB_PASSWORD: featurespwd - FEATURES_DB_MAIN_TABLE: sample_data - CONTEXT_PATH: /services - AUTHENTICATION: 0 - depends_on: - - db - - wait_portal_backend: - image: "waisbrot/wait" - restart: "no" - networks: - - portal-bridge - environment: - - TARGETS=portal_backend:8080 - depends_on: - - portal_backend - -networks: - portal-bridge: - external: - name: portal-bridge diff --git a/tests/integration/README.md b/tests/integration/README.md deleted file mode 100644 index c4d15f0d7..000000000 --- a/tests/integration/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Integration Tests - -## Algorithms factory - -### Introduction - -This test creates a model and runs an experiment on it. - -### Prerequisites - -* An instance of the algorithms factory has to be running and using the right database -* An instance of the portal-backend has to be running and using the right database -* The authentication has to be disabled on the backend - -### Launch tests - -* Run `./test.sh` - -### Notes - -* This test cannot be run multiple time without updating the model and experiment -* This test has to be improved diff --git a/tests/integration/algorithmsFactory/test.sh b/tests/integration/algorithmsFactory/test.sh deleted file mode 100755 index b8d0c939b..000000000 --- a/tests/integration/algorithmsFactory/test.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -# Create some test models -echo "" -echo "Creating some models..." -curl http://backend:8080/services/models -X POST -H "Content-Type: application/json" -d @model1.json -curl http://backend:8080/services/models -X POST -H "Content-Type: application/json" -d @model2.json - -# Run some experiments -echo "" -echo "Run some experiments..." -response=$(curl -s http://backend:8080/services/experiments -X POST -H "Content-Type: application/json" -d @expQuery1.json) -echo "exp1: $response" -response=$(curl -s http://backend:8080/services/experiments -X POST -H "Content-Type: application/json" -d @expQuery2.json) -echo "exp2: $response" -response=$(curl -s http://backend:8080/services/experiments -X POST -H "Content-Type: application/json" -d @expQuery3.json) -echo "exp3: $response" diff --git a/tests/test-run.sh b/tests/test-run.sh deleted file mode 100755 index 53a65866c..000000000 --- a/tests/test-run.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bash - - -# Define reference data - -GROUPS_REF='{"code":"root","groups":[{"code":"tg1","label":"Test Group 1","groups":[{"code":"tg3","label":"Test Group 3","groups":[]}]},{"code":"tg2","label":"Test Group 2","groups":[{"code":"tg4","label":"Test Group 4","groups":[]}]}]}' - -VARIABLES_REF='[{"code":"tv1","label":"Test Variable 1","type":"text","group":{"code":"tg3","label":"Test Group 3"},"isVariable":true},{"code":"tv2","label":"Test Variable 2","type":"integer","group":{"code":"tg4","label":"Test Group 4"},"isVariable":true},{"code":"tv3","label":"Test Variable 3","type":"real","group":{"code":"tg4","label":"Test Group 4"},"isVariable":true}]' - -STATS_REF='{"users":1,"articles":0,"variables":3}' - -VARIABLES_HIERARCHY_REF='{"code":"root","groups":[{"code":"tg1","label":"Test Group 1","groups":[{"code":"tg3","label":"Test Group 3","variables":[{"code":"tv1","label":"Test Variable 1","type":"text"}]}]},{"code":"tg2","label":"Test Group 2","groups":[{"code":"tg4","label":"Test Group 4","variables":[{"code":"tv2","label":"Test Variable 2","type":"integer"},{"code":"tv3","label":"Test Variable 3","type":"real"}]}]}]}' - -REQUEST_BODY='{"variables":[{"code":"tv1"}],"groupings":[],"coVariables":[{"code":"tv2"},{"code":"tv3"}],"filters":""}' -REQUEST_REF='{"code":"DS1507582826852","date":1.507582826852E12,"variable":["tv1"],"grouping":[],"header":["tv2","tv3"],"data":{"tv1":["val1268","val459","val749","val1191","val394","val1980","val1446","val506","val1814","val358","val481","val1775","val621","val1610","val403","val1882","val379","val1979","val1521","val1894","val1053","val825","val14","val1395","val672","val952","val1508","val988","val237","val1950","val716","val1344","val418","val1916","val1367","val1381","val165","val871","val1488","val841","val142","val1725","val1604","val1013","val1796","val873","val1333","val126","val1185","val1254","val1074","val1747","val526","val533","val1436","val1400","val875","val1291","val974","val1398","val243","val869","val1540","val221","val1778","val1900","val442","val516","val532","val1252","val160","val1057","val1419","val1213","val1236","val301","val1260","val1189","val302","val1420","val1970","val831","val313","val1275","val648","val735","val901","val1823","val1082","val1996","val687","val1816","val556","val1345","val1693","val972","val1627","val141","val774","val1286","val806","val767","val772","val1837","val290","val1461","val860","val132","val872","val934","val576","val1411","val1302","val642","val350","val15","val1296","val1299","val1475","val1978","val1474","val1901","val554","val1182","val1025","val1779","val262","val916","val257","val566","val1477","val102","val1216","val426","val984","val1162","val315","val1547","val496","val22","val573","val130","val1437","val1479","val904","val815","val1056","val54","val1772","val925","val1466","val824","val1981","val1940","val487","val490","val1063","val1541","val417","val1415","val723","val1877","val1598","val623","val1875","val1472","val55","val1780","val1184","val1802","val663","val103","val228","val1822","val498","val557","val312","val1425","val1848","val1337","val1591","val1207","val330","val968","val1359","val1341","val36","val18","val1548","val80","val163","val1899","val27","val530","val1716","val398","val361","val253","val1821","val483"],"tv2":[1268.0,459.0,749.0,1191.0,394.0,1980.0,1446.0,506.0,1814.0,358.0,481.0,1775.0,621.0,1610.0,403.0,1882.0,379.0,1979.0,1521.0,1894.0,1053.0,825.0,14.0,1395.0,672.0,952.0,1508.0,988.0,237.0,1950.0,716.0,1344.0,418.0,1916.0,1367.0,1381.0,165.0,871.0,1488.0,841.0,142.0,1725.0,1604.0,1013.0,1796.0,873.0,1333.0,126.0,1185.0,1254.0,1074.0,1747.0,526.0,533.0,1436.0,1400.0,875.0,1291.0,974.0,1398.0,243.0,869.0,1540.0,221.0,1778.0,1900.0,442.0,516.0,532.0,1252.0,160.0,1057.0,1419.0,1213.0,1236.0,301.0,1260.0,1189.0,302.0,1420.0,1970.0,831.0,313.0,1275.0,648.0,735.0,901.0,1823.0,1082.0,1996.0,687.0,1816.0,556.0,1345.0,1693.0,972.0,1627.0,141.0,774.0,1286.0,806.0,767.0,772.0,1837.0,290.0,1461.0,860.0,132.0,872.0,934.0,576.0,1411.0,1302.0,642.0,350.0,15.0,1296.0,1299.0,1475.0,1978.0,1474.0,1901.0,554.0,1182.0,1025.0,1779.0,262.0,916.0,257.0,566.0,1477.0,102.0,1216.0,426.0,984.0,1162.0,315.0,1547.0,496.0,22.0,573.0,130.0,1437.0,1479.0,904.0,815.0,1056.0,54.0,1772.0,925.0,1466.0,824.0,1981.0,1940.0,487.0,490.0,1063.0,1541.0,417.0,1415.0,723.0,1877.0,1598.0,623.0,1875.0,1472.0,55.0,1780.0,1184.0,1802.0,663.0,103.0,228.0,1822.0,498.0,557.0,312.0,1425.0,1848.0,1337.0,1591.0,1207.0,330.0,968.0,1359.0,1341.0,36.0,18.0,1548.0,80.0,163.0,1899.0,27.0,530.0,1716.0,398.0,361.0,253.0,1821.0,483.0],"tv3":[126.8,45.9,74.9,119.1,39.4,198.0,144.6,50.6,181.4,35.8,48.1,177.5,62.1,161.0,40.3,188.2,37.9,197.9,152.1,189.4,105.3,82.5,1.4,139.5,67.2,95.2,150.8,98.8,23.7,195.0,71.6,134.4,41.8,191.6,136.7,138.1,16.5,87.1,148.8,84.1,14.2,172.5,160.4,101.3,179.6,87.3,133.3,12.6,118.5,125.4,107.4,174.7,52.6,53.3,143.6,140.0,87.5,129.1,97.4,139.8,24.3,86.9,154.0,22.1,177.8,190.0,44.2,51.6,53.2,125.2,16.0,105.7,141.9,121.3,123.6,30.1,126.0,118.9,30.2,142.0,197.0,83.1,31.3,127.5,64.8,73.5,90.1,182.3,108.2,199.6,68.7,181.6,55.6,134.5,169.3,97.2,162.7,14.1,77.4,128.6,80.6,76.7,77.2,183.7,29.0,146.1,86.0,13.2,87.2,93.4,57.6,141.1,130.2,64.2,35.0,1.5,129.6,129.9,147.5,197.8,147.4,190.1,55.4,118.2,102.5,177.9,26.2,91.6,25.7,56.6,147.7,10.2,121.6,42.6,98.4,116.2,31.5,154.7,49.6,2.2,57.3,13.0,143.7,147.9,90.4,81.5,105.6,5.4,177.2,92.5,146.6,82.4,198.1,194.0,48.7,49.0,106.3,154.1,41.7,141.5,72.3,187.7,159.8,62.3,187.5,147.2,5.5,178.0,118.4,180.2,66.3,10.3,22.8,182.2,49.8,55.7,31.2,142.5,184.8,133.7,159.1,120.7,33.0,96.8,135.9,134.1,3.6,1.8,154.8,8.0,16.3,189.9,2.7,53.0,171.6,39.8,36.1,25.3,182.1,48.3]}}' - -ARTICLE_BODY='{"status":"closed","content":"test","title":"Test","abstract":"test"}' -ARTICLE_REF='[{"slug":"test","title":"Test","status":"closed","content":"test","createdAt":1474035349482,"createdBy":{"username":"anonymous","fullname":"anonymous","picture":"images/users/default_user.png","languages":[],"roles":[],"votedApps":[]},"tags":[],"abstract":"test"}]' - -MODEL_BODY='{"slug":"test","title":"Test","valid":false,"createdAt":1474362803284,"query":{"variables":[{"code":"tv1"}],"filters":"","coVariables":[{"code":"tv2"},{"code":"tv3"}],"groupings":[]},"dataset":{"code":"XXXX","date":1234567,"header":["tv2","tv3"],"grouping":[],"variable":["tv1"]},"config":{"type":"line","height":480,"yAxisVariables":["tv2","tv3"],"xAxisVariable":null,"hasXAxis":true,"title":{"text":"Test"}},"createdBy":{"username":"anonymous","fullname":"anonymous","picture":"images/users/default_user.png","languages":[],"roles":[],"votedApps":[]}}' -MODEL_REF='[{"slug":"test","title":"Test","valid":false,"createdAt":1507583225000,"query":{"variables":[{"code":"tv1"}],"filters":"","coVariables":[{"code":"tv2"},{"code":"tv3"}],"groupings":[]},"dataset":{"code":"XXXX","date":1234000,"header":["tv2","tv3"],"grouping":[],"variable":["tv1"],"data":{"tv1":["val1268","val459","val749","val1191","val394","val1980","val1446","val506","val1814","val358","val481","val1775","val621","val1610","val403","val1882","val379","val1979","val1521","val1894","val1053","val825","val14","val1395","val672","val952","val1508","val988","val237","val1950","val716","val1344","val418","val1916","val1367","val1381","val165","val871","val1488","val841","val142","val1725","val1604","val1013","val1796","val873","val1333","val126","val1185","val1254","val1074","val1747","val526","val533","val1436","val1400","val875","val1291","val974","val1398","val243","val869","val1540","val221","val1778","val1900","val442","val516","val532","val1252","val160","val1057","val1419","val1213","val1236","val301","val1260","val1189","val302","val1420","val1970","val831","val313","val1275","val648","val735","val901","val1823","val1082","val1996","val687","val1816","val556","val1345","val1693","val972","val1627","val141","val774","val1286","val806","val767","val772","val1837","val290","val1461","val860","val132","val872","val934","val576","val1411","val1302","val642","val350","val15","val1296","val1299","val1475","val1978","val1474","val1901","val554","val1182","val1025","val1779","val262","val916","val257","val566","val1477","val102","val1216","val426","val984","val1162","val315","val1547","val496","val22","val573","val130","val1437","val1479","val904","val815","val1056","val54","val1772","val925","val1466","val824","val1981","val1940","val487","val490","val1063","val1541","val417","val1415","val723","val1877","val1598","val623","val1875","val1472","val55","val1780","val1184","val1802","val663","val103","val228","val1822","val498","val557","val312","val1425","val1848","val1337","val1591","val1207","val330","val968","val1359","val1341","val36","val18","val1548","val80","val163","val1899","val27","val530","val1716","val398","val361","val253","val1821","val483"],"tv2":[1268.0,459.0,749.0,1191.0,394.0,1980.0,1446.0,506.0,1814.0,358.0,481.0,1775.0,621.0,1610.0,403.0,1882.0,379.0,1979.0,1521.0,1894.0,1053.0,825.0,14.0,1395.0,672.0,952.0,1508.0,988.0,237.0,1950.0,716.0,1344.0,418.0,1916.0,1367.0,1381.0,165.0,871.0,1488.0,841.0,142.0,1725.0,1604.0,1013.0,1796.0,873.0,1333.0,126.0,1185.0,1254.0,1074.0,1747.0,526.0,533.0,1436.0,1400.0,875.0,1291.0,974.0,1398.0,243.0,869.0,1540.0,221.0,1778.0,1900.0,442.0,516.0,532.0,1252.0,160.0,1057.0,1419.0,1213.0,1236.0,301.0,1260.0,1189.0,302.0,1420.0,1970.0,831.0,313.0,1275.0,648.0,735.0,901.0,1823.0,1082.0,1996.0,687.0,1816.0,556.0,1345.0,1693.0,972.0,1627.0,141.0,774.0,1286.0,806.0,767.0,772.0,1837.0,290.0,1461.0,860.0,132.0,872.0,934.0,576.0,1411.0,1302.0,642.0,350.0,15.0,1296.0,1299.0,1475.0,1978.0,1474.0,1901.0,554.0,1182.0,1025.0,1779.0,262.0,916.0,257.0,566.0,1477.0,102.0,1216.0,426.0,984.0,1162.0,315.0,1547.0,496.0,22.0,573.0,130.0,1437.0,1479.0,904.0,815.0,1056.0,54.0,1772.0,925.0,1466.0,824.0,1981.0,1940.0,487.0,490.0,1063.0,1541.0,417.0,1415.0,723.0,1877.0,1598.0,623.0,1875.0,1472.0,55.0,1780.0,1184.0,1802.0,663.0,103.0,228.0,1822.0,498.0,557.0,312.0,1425.0,1848.0,1337.0,1591.0,1207.0,330.0,968.0,1359.0,1341.0,36.0,18.0,1548.0,80.0,163.0,1899.0,27.0,530.0,1716.0,398.0,361.0,253.0,1821.0,483.0],"tv3":[126.8,45.9,74.9,119.1,39.4,198.0,144.6,50.6,181.4,35.8,48.1,177.5,62.1,161.0,40.3,188.2,37.9,197.9,152.1,189.4,105.3,82.5,1.4,139.5,67.2,95.2,150.8,98.8,23.7,195.0,71.6,134.4,41.8,191.6,136.7,138.1,16.5,87.1,148.8,84.1,14.2,172.5,160.4,101.3,179.6,87.3,133.3,12.6,118.5,125.4,107.4,174.7,52.6,53.3,143.6,140.0,87.5,129.1,97.4,139.8,24.3,86.9,154.0,22.1,177.8,190.0,44.2,51.6,53.2,125.2,16.0,105.7,141.9,121.3,123.6,30.1,126.0,118.9,30.2,142.0,197.0,83.1,31.3,127.5,64.8,73.5,90.1,182.3,108.2,199.6,68.7,181.6,55.6,134.5,169.3,97.2,162.7,14.1,77.4,128.6,80.6,76.7,77.2,183.7,29.0,146.1,86.0,13.2,87.2,93.4,57.6,141.1,130.2,64.2,35.0,1.5,129.6,129.9,147.5,197.8,147.4,190.1,55.4,118.2,102.5,177.9,26.2,91.6,25.7,56.6,147.7,10.2,121.6,42.6,98.4,116.2,31.5,154.7,49.6,2.2,57.3,13.0,143.7,147.9,90.4,81.5,105.6,5.4,177.2,92.5,146.6,82.4,198.1,194.0,48.7,49.0,106.3,154.1,41.7,141.5,72.3,187.7,159.8,62.3,187.5,147.2,5.5,178.0,118.4,180.2,66.3,10.3,22.8,182.2,49.8,55.7,31.2,142.5,184.8,133.7,159.1,120.7,33.0,96.8,135.9,134.1,3.6,1.8,154.8,8.0,16.3,189.9,2.7,53.0,171.6,39.8,36.1,25.3,182.1,48.3]}},"config":{"type":"line","height":480,"yAxisVariables":["tv2","tv3"],"xAxisVariable":null,"hasXAxis":true,"title":{"text":"Test"}},"createdBy":{"username":"anonymous","fullname":"anonymous","picture":"images/users/default_user.png","languages":[],"roles":[],"votedApps":[]}}]' - - -# Get gateway IP - -GATEWAY_IP=$(docker inspect backend-test | grep \"Gateway\":\ \" | sed 's/.*Gateway\":\ \"\([^-]*\)\",/\1/' | head -n 1) - - -# Test - GET groups - -echo "Testing groups API..." -if [ "$(curl -s ${GATEWAY_IP}:65440/services/groups)" != "$GROUPS_REF" ]; then - echo "Tests failed - failed to load groups" - exit 1 -fi - - -# Test - GET variables - -echo "Testing variables API..." -if [ "$(curl -s ${GATEWAY_IP}:65440/services/variables)" != "$VARIABLES_REF" ]; then - echo "Tests failed - failed to load variables" - exit 1 -fi - - -# Test - GET variables hierarchy - -if [ "$(curl -s ${GATEWAY_IP}:65440/services/variables/hierarchy)" != "$VARIABLES_HIERARCHY_REF" ]; then - echo "Tests failed - failed to load variables hierarchy" - exit 1 -fi - - -# Test - GET stats - -echo "Testing stats API..." -if [ "$(curl -s ${GATEWAY_IP}:65440/services/stats)" != "$STATS_REF" ]; then - echo "Tests failed - failed to load stats" - exit 1 -fi - - -# Test - POST requests - -echo "Testing requests API..." -response=$(curl -s -H "Content-Type: application/json" -X POST -d ${REQUEST_BODY} ${GATEWAY_IP}:65440/services/queries/requests | sed "s/ \+//g") -if [ "${response:52}" != "${REQUEST_REF:52}" ]; then - echo "Tests failed - failed to post requests" - exit 1 -fi - - -# Test - POST and GET an article - -echo "Testing articles API..." -curl -s -H "Content-Type: application/json" -X POST -d ${ARTICLE_BODY} ${GATEWAY_IP}:65440/services/articles > /dev/null -response=$(curl -s ${GATEWAY_IP}:65440/services/articles | sed "s/\"createdAt\":[0-9]*,//g") -response_ref=$(echo "${ARTICLE_REF//\"createdAt\":*[0-9],/}") -if [ "${response}" != "${response_ref}" ]; then - echo "Tests failed - failed to save/load article" - exit 1 -fi - - -# Test - POST and GET a model - -echo "Testing models API..." -curl -s -H "Content-Type: application/json" -X POST -d ${MODEL_BODY} ${GATEWAY_IP}:65440/services/models > /dev/null -response=$(curl -s ${GATEWAY_IP}:65440/services/models | sed "s/\"createdAt\":[0-9]*,//g" | sed "s/\"date\":[0-9]*,//g" | sed "s/ \+//g") -response_ref=$(echo "${MODEL_REF}" | sed "s/\"createdAt\":[0-9]*,//g" | sed "s/\"date\":[0-9]*,//g") -if [ "${response}" != "${response_ref}" ]; then - echo "Tests failed - failed to save/load model" - exit 1 -fi - - -echo "All tests successfully passed" - -exit 0 diff --git a/tests/test.sh b/tests/test.sh deleted file mode 100755 index 0306a6168..000000000 --- a/tests/test.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env bash - -set -e - -get_script_dir () { - SOURCE="${BASH_SOURCE[0]}" - - while [ -h "$SOURCE" ]; do - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - SOURCE="$( readlink "$SOURCE" )" - [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" - done - cd -P "$( dirname "$SOURCE" )" - pwd -} - -cd "$(get_script_dir)" - -if pgrep -lf sshuttle > /dev/null ; then - echo "sshuttle detected. Please close this program as it messes with networking and prevents builds inside Docker to work" - exit 1 -fi - -if [[ $NO_SUDO || -n "$CIRCLECI" ]]; then - DOCKER="docker" - DOCKER_COMPOSE="docker-compose" -elif groups $USER | grep &>/dev/null '\bdocker\b'; then - DOCKER="docker" - DOCKER_COMPOSE="docker-compose" -else - DOCKER="sudo docker" - DOCKER_COMPOSE="sudo docker-compose" -fi - -function _cleanup() { - local error_code="$?" - echo "Stopping the containers..." - $DOCKER_COMPOSE stop | true - $DOCKER_COMPOSE down | true - $DOCKER_COMPOSE rm -f > /dev/null 2> /dev/null | true - exit $error_code -} -trap _cleanup EXIT INT TERM - -if [ $($DOCKER network ls | grep -c 'portal-bridge') -lt 1 ]; then - echo "Create portal-bridge network..." - $DOCKER network create portal-bridge -else - echo "Found portal-bridge network !" -fi - -$DOCKER_COMPOSE up -d --remove-orphans db -$DOCKER_COMPOSE run wait_dbs -$DOCKER_COMPOSE run create_dbs - -echo "Migrate metadata database..." -$DOCKER_COMPOSE run meta_db_setup - -echo "Migrate features database..." -$DOCKER_COMPOSE run sample_db_setup - -echo -echo "Start Portal Backend" -$DOCKER_COMPOSE up -d portal_backend - -echo -echo "Wait for Portal Backend to start..." -$DOCKER_COMPOSE run wait_portal_backend - -echo -echo "Test idempotence" -#$DOCKER_COMPOSE run data_db_setup -#$DOCKER_COMPOSE run data_db_check - -# Cleanup -#_cleanup -- GitLab