diff --git a/.atomist.yml b/.atomist.yml deleted file mode 100644 index d21cfad6ce551aa973ca9226cc6a1bfd995cbed5..0000000000000000000000000000000000000000 --- 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 db493cf1f2f4ec4e01f2694e9379633c886625e1..0000000000000000000000000000000000000000 --- 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 d0f5621731f10875701d11eba9b8cf9e68f711ef..0000000000000000000000000000000000000000 --- 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 d4ed5894e9b759f546e411d4ca8748f4c46715a5..0000000000000000000000000000000000000000 --- 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 4d9e597fc0d0d8568cc358f8851c130c0e6a7da7..0000000000000000000000000000000000000000 --- 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 1004936b4172590e670c160b8a4881754974417c..0000000000000000000000000000000000000000 --- 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 de7bf4c86c857cb6d739b8036c3be39a7aa9f35f..78a2347289970a1455cc797856d79ed485ce2efc 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 e7feb41710f16bb1a4635d25da2c339488e9c9d7..7b909b7aeba584862e4be6bd2ede51d3da4bf559 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 dab02bd62748e4579d910a415042e4d68e3a1e27..3beedba81257f97e5ba097b7d255e3213e62a992 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 9495dadda1b43d0517160df51bfd985d306c6828..0000000000000000000000000000000000000000 --- 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 9495dadda1b43d0517160df51bfd985d306c6828..0000000000000000000000000000000000000000 --- 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 8693aad09f765b12de66b77c37f700563fa4eec7..0000000000000000000000000000000000000000 --- 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 496f485e6041a0931d1753d93427a3513873ea8e..0000000000000000000000000000000000000000 --- 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 652137b8e1a84aaaaec9d15a2768537f7c58cc1d..0000000000000000000000000000000000000000 --- 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 8f25bd423dc94ce6532fb9dd34af768f006ba50d..0000000000000000000000000000000000000000 --- 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 be4ef7d964d76633806dcabe2cbe5f9ba32d9158..0000000000000000000000000000000000000000 --- 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 dc7f7145d72e40df27904e675e755d651d59223a..0000000000000000000000000000000000000000 --- 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 478d6e48de9c05af191a810284d5ba9b99fd4043..0000000000000000000000000000000000000000 --- 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 c4d15f0d7285304cf292860360e6d7e70d6356df..0000000000000000000000000000000000000000 --- 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 b8d0c939b836714de3b4371e72038452858a8551..0000000000000000000000000000000000000000 --- 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 53a65866c5ba8e650836971620e1e4c9daf3244f..0000000000000000000000000000000000000000 --- 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 0306a6168f3321a2482828b7f8d2d2b332b74202..0000000000000000000000000000000000000000 --- 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