From 231420b83511f8417e9dcf7a65f43a523fb548e1 Mon Sep 17 00:00:00 2001 From: tpluscode Date: Mon, 5 Aug 2019 11:24:10 +0200 Subject: [PATCH 1/9] test: add hypertest scenario --- .gitignore | 3 + movies/package-lock.json | 600 ++++++++++++++++++++++++++++++++++- movies/package.json | 14 +- movies/readme.md | 14 +- movies/src/app.js | 6 +- movies/src/tests/tests.hydra | 34 ++ 6 files changed, 664 insertions(+), 7 deletions(-) create mode 100644 movies/src/tests/tests.hydra diff --git a/.gitignore b/.gitignore index 403addf..d857d7c 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,6 @@ testem.log # System Files .DS_Store Thumbs.db + +# Project files +*.hydra.json diff --git a/movies/package-lock.json b/movies/package-lock.json index 98ee563..7d3d876 100644 --- a/movies/package-lock.json +++ b/movies/package-lock.json @@ -196,6 +196,15 @@ "minimist": "^1.2.0" } }, + "@hydrofoil/hypertest": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@hydrofoil/hypertest/-/hypertest-0.4.0.tgz", + "integrity": "sha512-nwZbIzQajK0JQC3njK1UnSmYE5FdB8PdYzB6/7rfNiJXDPFbCkVRmPVev6IW2/5LDP6OOvxZnGgKOEE8SB65sQ==", + "dev": true, + "requires": { + "shelljs": "^0.7.5" + } + }, "@jest/console": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", @@ -350,6 +359,125 @@ "@types/yargs": "^12.0.9" } }, + "@rdfjs/data-model": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.1.2.tgz", + "integrity": "sha512-pk/G/JLYGaXesoBLvEmoC/ic0H3B79fTyS0Ujjh5YQB2DZW+mn05ZowFFv88rjB9jf7c1XE5XSmf8jzn6U0HHA==", + "dev": true, + "requires": { + "@types/rdf-js": "^2.0.1" + } + }, + "@rdfjs/fetch-lite": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/fetch-lite/-/fetch-lite-2.0.1.tgz", + "integrity": "sha512-Ch7+7MNTFpjhWiaT/axokOLULsTMZlLGgJJ2GlPIgrdU2Pwiszm3/T898WrzOxJenJimtub0+jhlbO7hQ0dVcQ==", + "dev": true, + "requires": { + "isstream": "^0.1.2", + "nodeify-fetch": "^2.0.0", + "readable-stream": "^3.3.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "@rdfjs/formats-common": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/formats-common/-/formats-common-2.0.1.tgz", + "integrity": "sha512-XeC+j/+DDBZpSfQNg+Spae+tXxPGwkAoeqG04BBxb7WvPr0vhDbhuRoo95At6btabZWvBIX2S7PCsRle1PlvXg==", + "dev": true, + "requires": { + "@rdfjs/parser-jsonld": "^1.1.1", + "@rdfjs/parser-n3": "^1.1.2", + "@rdfjs/serializer-jsonld": "^1.2.0", + "@rdfjs/serializer-ntriples": "^1.0.1", + "@rdfjs/sink-map": "^1.0.0" + } + }, + "@rdfjs/namespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/namespace/-/namespace-1.1.0.tgz", + "integrity": "sha512-utO5rtaOKxk8B90qzaQ0N+J5WrCI28DtfAY/zExCmXE7cOfC5uRI/oMKbLaVEPj2P7uArekt/T4IPATtj7Tjug==", + "dev": true, + "requires": { + "@rdfjs/data-model": "^1.1.0" + } + }, + "@rdfjs/parser-jsonld": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-jsonld/-/parser-jsonld-1.1.2.tgz", + "integrity": "sha512-ejh2ckwZd5zXjyUzFfzpC1fAMIJH0Tfxy8yAbNgQMp93l33mJx0kKH/jhVKDdWHyQzaCwurPFU84MTL3fYKKng==", + "dev": true, + "requires": { + "@rdfjs/data-model": "^1.0.1", + "@rdfjs/sink": "^1.0.2", + "concat-stream": "^1.6.2", + "jsonld": "^1.0.2", + "readable-stream": "^2.3.6" + } + }, + "@rdfjs/parser-n3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-1.1.3.tgz", + "integrity": "sha512-TRvAA2QfrIdIfhDB9RVU91dhZ/ITDiJ1prTHahEgEVKNH+Zu+iFfEgLDKbv/ZNvEoLaDyoG92p9xqToH7mdh0w==", + "dev": true, + "requires": { + "@rdfjs/data-model": "^1.0.1", + "@rdfjs/sink": "^1.0.2", + "n3": "^1.0.0-beta.1", + "readable-stream": "^2.3.6" + } + }, + "@rdfjs/serializer-jsonld": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld/-/serializer-jsonld-1.2.1.tgz", + "integrity": "sha512-QGNpSEGNF+MzCqK6nCCfLgdaTFGIZceLPPg5dodJuDK4NeO0N6rpC8YGrrq0j1xR55A4+5IrEbHEu5LMdF5ZWQ==", + "dev": true, + "requires": { + "@rdfjs/sink": "^1.0.2", + "readable-stream": "^2.3.6" + } + }, + "@rdfjs/serializer-ntriples": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-ntriples/-/serializer-ntriples-1.0.2.tgz", + "integrity": "sha512-5pIYhbkz5SIy7B2fkXHGAsC92VP8GPsf7aJ6UNA7OdabggVbOibPWJ9zTetxvxM7bQRez6FsvC7lPnTbZt4I4A==", + "dev": true, + "requires": { + "@rdfjs/sink": "^1.0.2", + "@rdfjs/to-ntriples": "^1.0.0", + "readable-stream": "^2.3.6" + } + }, + "@rdfjs/sink": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-1.0.3.tgz", + "integrity": "sha512-2KfYa8mAnptRNeogxhQqkWNXqfYVWO04jQThtXKepySrIwYmz83+WlevQtA4VDLFe+kFd2TwgL29ekPe5XVUfA==", + "dev": true + }, + "@rdfjs/sink-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink-map/-/sink-map-1.0.1.tgz", + "integrity": "sha512-PRp5TjULHe2oRcupR80SClZ/l50wnSuX2Pl+TlkcRazt1w7AT86kLmQYFbDfjqGM7uDwSyD6evLJxXBDf5UuvQ==", + "dev": true + }, + "@rdfjs/to-ntriples": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-1.0.2.tgz", + "integrity": "sha512-ngw5XAaGHjgGiwWWBPGlfdCclHftonmbje5lMys4G2j4NvfExraPIuRZgjSnd5lg4dnulRVUll8tRbgKO+7EDA==", + "dev": true + }, "@types/babel__core": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", @@ -392,6 +520,21 @@ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", "integrity": "sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg==" }, + "@types/node": { + "version": "12.6.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", + "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", + "dev": true + }, + "@types/rdf-js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/rdf-js/-/rdf-js-2.0.2.tgz", + "integrity": "sha512-rHtC0mtRmMc9JzITesWhzmAXqfyJZhY8MygmmWZc3oWS5DPsGsKs+t3RXxGYlM4UKOqlD9Ki4owS1Cx/GPMeqw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -402,6 +545,17 @@ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==" }, + "@zazuko/rdf-vocabularies": { + "version": "2019.7.9-2", + "resolved": "https://registry.npmjs.org/@zazuko/rdf-vocabularies/-/rdf-vocabularies-2019.7.9-2.tgz", + "integrity": "sha512-hSbGpyB5pg3reISR7Ykj1V1i2BCNEZi1qclJlow6l7Nn6cHr/9kcQ3yfrU6t+/6pcuyPhhBI6gDNod466T3Xng==", + "dev": true, + "requires": { + "@rdfjs/parser-n3": "^1.1.2", + "rdf-ext": "^1.3.0", + "string-to-stream": "^1.1.1" + } + }, "abab": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", @@ -453,6 +607,24 @@ "uri-js": "^4.2.2" } }, + "alcaeus": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/alcaeus/-/alcaeus-0.7.1.tgz", + "integrity": "sha512-VunyNqI3v44ihaXR5ncHdCgXaOfm+qgiVnjd1x+kUYLkQw+QotNf5/NA7reSAfm36pIBZxuaZfJa0+y4UzRfSw==", + "dev": true, + "requires": { + "@rdfjs/parser-jsonld": "^1.1.1", + "@rdfjs/serializer-jsonld": "^1.2.0", + "core-decorators": "^0.20.0", + "es6-url-template": "^1.0.3", + "isomorphic-fetch": "^2.2.1", + "jsonld": "^1.4.0", + "parse-link-header": "^1.0.1", + "rdf-ext": "^1.0.0", + "string-to-stream": "^1.1.0", + "tsmonad": "^0.8.0" + } + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -877,6 +1049,15 @@ } } }, + "clownface": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/clownface/-/clownface-0.10.0.tgz", + "integrity": "sha512-zQtNGpYJt4loB9UO+X8B2xpK3ddGGPZ4QwovysRFs+J95f5O3gpcBOTD4V/CXjNvEDujiz8Pc2MkS9Dup2/jQQ==", + "dev": true, + "requires": { + "@rdfjs/data-model": "^1.1.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -920,8 +1101,7 @@ "commander": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "optional": true + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" }, "compare-versions": { "version": "3.4.0", @@ -938,6 +1118,18 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", @@ -976,6 +1168,12 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "core-decorators": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/core-decorators/-/core-decorators-0.20.0.tgz", + "integrity": "sha1-YFiWYkBTr4wo775zXCWjAaYcZcU=", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1127,6 +1325,12 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -1164,6 +1368,15 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -1203,6 +1416,12 @@ "is-symbol": "^1.0.2" } }, + "es6-url-template": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/es6-url-template/-/es6-url-template-1.0.3.tgz", + "integrity": "sha512-rODroLuBQoEM5mrfku5lOVNUg6fqG+qKyB/+hiam6wBopmXwONQ4t92TIHEwscCvxWb3SV04yNC0yyx2jC/bVA==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1308,6 +1527,15 @@ } } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "expect": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/expect/-/expect-24.7.1.tgz", @@ -1521,6 +1749,18 @@ "locate-path": "^3.0.0" } }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2094,6 +2334,30 @@ "path-is-absolute": "^1.0.0" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "globals": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", @@ -2181,6 +2445,15 @@ } } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -2215,6 +2488,78 @@ "sshpk": "^1.7.0" } }, + "hydra-validator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hydra-validator/-/hydra-validator-1.0.4.tgz", + "integrity": "sha512-RWqCwKYpMJ2VCw7O0h1KSuP2+URqvc6++gK6GsItjqHFFHCpqGscTX4TBvrUIxM1BY3rj4oD47mJAsOgsTksxw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "debug": "^4.1.1", + "hydra-validator-core": "^0.3.1", + "matchdep": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "hydra-validator-analyse": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/hydra-validator-analyse/-/hydra-validator-analyse-0.1.3.tgz", + "integrity": "sha512-FaavxTMTkN+s0F4SUsrtEfu5lc2LSJqifg7EXY0+ky+EKK+LWh/IKALBANCmZ4nc8l5/KTWtQPocOKG45pQ+5Q==", + "dev": true, + "requires": { + "@rdfjs/fetch-lite": "^2.0.0", + "@rdfjs/formats-common": "^2.0.0", + "clownface": "^0.10.0", + "hydra-validator-core": "^0.3.1", + "parse-link-header": "^1.0.1", + "rdf-ext": "^1.3.0" + } + }, + "hydra-validator-core": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/hydra-validator-core/-/hydra-validator-core-0.3.1.tgz", + "integrity": "sha512-vkcJkYazqJEES8WRiPtkbOSRWVFSJEtJXdMIDd6FR0q43pxQt3zSc0v2gVf3eug2N3xUaysFOhUiHsQrNR4paA==", + "dev": true, + "requires": { + "@rdfjs/namespace": "^1.0.0" + } + }, + "hydra-validator-e2e": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/hydra-validator-e2e/-/hydra-validator-e2e-0.3.2.tgz", + "integrity": "sha512-nDYUr2UGTPNT3sgRI1GwScx2VDL3P+2jRARsdgeNBRwpoB1JKzuHHbLmYJzBhu7jAah0a7pz0RBMsLqyQoERQA==", + "dev": true, + "requires": { + "@zazuko/rdf-vocabularies": "^2019.7.9-2", + "alcaeus": "^0.7.1", + "escape-string-regexp": "^2.0.0", + "hydra-validator-core": "^0.3.1" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -2251,6 +2596,18 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -2355,6 +2712,12 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -2365,6 +2728,15 @@ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -2442,6 +2814,16 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -3028,6 +3410,18 @@ "minimist": "^1.2.0" } }, + "jsonld": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.6.2.tgz", + "integrity": "sha512-eMzFHqhF2kPMrMUjw8+Lz9IF1QkrxTOIfVndkP/OpuoZs31VdDtfDs8mLa5EOC/ROdemFTQGLdYPZbRtmMe2Yw==", + "dev": true, + "requires": { + "rdf-canonize": "^1.0.2", + "request": "^2.88.0", + "semver": "^5.6.0", + "xmldom": "0.1.19" + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -3159,6 +3553,18 @@ "object-visit": "^1.0.0" } }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3287,6 +3693,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "n3": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.1.1.tgz", + "integrity": "sha512-GEJXn+wc0f4l2noP1N/rMUH9Gei1DQ8IDN03eBsH+uQKkNQUOLgL7ZJVaDjY+pP3LmbLxL1LpUg/AvZ7Kc7KVw==", + "dev": true + }, "nan": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", @@ -3331,6 +3743,22 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-forge": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", + "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", + "dev": true + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -3353,6 +3781,18 @@ "which": "^1.3.0" } }, + "nodeify-fetch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nodeify-fetch/-/nodeify-fetch-2.0.0.tgz", + "integrity": "sha512-0hA8trU59bKsIjmSYfHdRnO9Ro4EgpKR+I8Akubv84uEW6NOjTbH1CWLEbis3e+u1M0fbCbAIImMlf92Bj67wQ==", + "dev": true, + "requires": { + "concat-stream": "^1.6.0", + "isomorphic-fetch": "^2.2.1", + "readable-error": "^1.0.0", + "readable-stream": "^2.2.6" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -3573,6 +4013,21 @@ "json-parse-better-errors": "^1.0.1" } }, + "parse-link-header": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", + "integrity": "sha1-vt/g0hGK64S+deewJUGeyKYRQKc=", + "dev": true, + "requires": { + "xtend": "~4.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -3736,6 +4191,57 @@ "unpipe": "1.0.0" } }, + "rdf-canonize": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-1.0.3.tgz", + "integrity": "sha512-piLMOB5Q6LJSVx2XzmdpHktYVb8TmVTy8coXJBFtdkcMC96DknZOuzpAYqCWx2ERZX7xEW+mMi8/wDuMJS/95w==", + "dev": true, + "requires": { + "node-forge": "^0.8.1", + "semver": "^5.6.0" + } + }, + "rdf-dataset-indexed": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/rdf-dataset-indexed/-/rdf-dataset-indexed-0.4.0.tgz", + "integrity": "sha512-xIZ3PGwBHh1DVax9FTq/zhJcrdJTkCgRT2xolF5ZhKj0EOFoT6wdITyfxKSmnD6YNyGyng5F5o2SR62TYask3Q==", + "dev": true, + "requires": { + "@rdfjs/data-model": "^1.1.1", + "readable-stream": "^3.3.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "rdf-ext": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rdf-ext/-/rdf-ext-1.3.0.tgz", + "integrity": "sha512-bzkJpINH1uZgAeSIlE7K1nLF6Y82vGi9U9sBRuiz864pNk/31ba3dw+yLoIkcvQsPcVwnKBVLvGCR3dvD9xM+Q==", + "dev": true, + "requires": { + "@rdfjs/data-model": "^1.1.0", + "@rdfjs/to-ntriples": "^1.0.1", + "rdf-dataset-indexed": "^0.4.0", + "rdf-normalize": "^1.0.0" + } + }, + "rdf-normalize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rdf-normalize/-/rdf-normalize-1.0.0.tgz", + "integrity": "sha1-U0lrrzYszp2fyh8iFsbDAAf5nMo=", + "dev": true + }, "react-is": { "version": "16.8.6", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", @@ -3760,6 +4266,15 @@ "read-pkg": "^3.0.0" } }, + "readable-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/readable-error/-/readable-error-1.0.0.tgz", + "integrity": "sha512-CLnInu5bUphmFiZ3pD/BC6+Cg4/BzK6ZMvWfd0b2QMzYo159Z/f/nVFQ9L5IeMrqUxy0EFsp3XJ+BRfLfY13IQ==", + "dev": true, + "requires": { + "readable-stream": "^2.3.3" + } + }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -3782,6 +4297,15 @@ "util.promisify": "^1.0.0" } }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -3893,6 +4417,16 @@ "resolve-from": "^3.0.0" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -4001,6 +4535,11 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-link": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-link/-/set-link-1.0.0.tgz", + "integrity": "sha512-F4pCvHW0RgPXi6ZSRq6dZibWJgNCls/I5W2hZhWtmGYHFgrn0eqlR+u0bIY6rv1DEe5mMJ+PyCERpGIDnnGhyA==" + }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -4040,6 +4579,17 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -4250,6 +4800,12 @@ "tweetnacl": "~0.14.0" } }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", @@ -4308,6 +4864,16 @@ } } }, + "string-to-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", + "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.1.0" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -4498,6 +5064,12 @@ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, + "tsmonad": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/tsmonad/-/tsmonad-0.8.0.tgz", + "integrity": "sha1-zjzxMZLzI9uPeMgfVKX1vEohMPw=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4528,6 +5100,12 @@ "mime-types": "~2.1.18" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "uglify-js": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz", @@ -4716,6 +5294,12 @@ } } }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==", + "dev": true + }, "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", @@ -4819,6 +5403,18 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, + "xmldom": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", + "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", diff --git a/movies/package.json b/movies/package.json index 455299a..1d299e6 100644 --- a/movies/package.json +++ b/movies/package.json @@ -4,7 +4,10 @@ "description": "An example of a Hydra API, that allows to manage movie resources.", "main": "src/index.js", "scripts": { - "test": "jest", + "hypertest-compile": "hypertest-compiler src/tests", + "test": "jest; npm run test:analyse; npm run test:e2e", + "test:analyse": "hydra-validator analyse http://localhost:3000", + "test:e2e": "npm run hypertest-compile; hydra-validator e2e --docs src/tests/tests.hydra.json http://localhost:3000", "start": "node src/index.js" }, "keywords": [ @@ -16,6 +19,13 @@ "dependencies": { "express": "^4.16.4", "jest": "^24.7.1", - "supertest": "^4.0.2" + "supertest": "^4.0.2", + "set-link": "^1.0.0" + }, + "devDependencies": { + "@hydrofoil/hypertest": "^0.4.0", + "hydra-validator": "^1.0.4", + "hydra-validator-analyse": "^0.1.3", + "hydra-validator-e2e": "^0.3.2" } } diff --git a/movies/readme.md b/movies/readme.md index f43a1e7..840f46d 100644 --- a/movies/readme.md +++ b/movies/readme.md @@ -17,4 +17,16 @@ To explore the API on the web take a look at the [live demo](https://hydra-movie ### Developer documentation -See `./docs` directory.` \ No newline at end of file +See `./docs` directory.` + +### Running tests + +1. Start the local server + + npm start + +2. Run hydra analyser and [hypertest](http://testing.hypermedia.app) + + npm test + +Hypertest diff --git a/movies/src/app.js b/movies/src/app.js index 2adb2e3..741fde0 100644 --- a/movies/src/app.js +++ b/movies/src/app.js @@ -1,12 +1,14 @@ const express = require('express'); const path = require('path'); +const setLink = require('set-link'); const app = express(); +app.use(setLink); app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Expose-Headers', 'Location, Link'); - res.header('Link', '; rel="http://www.w3.org/ns/hydra/core#apiDocumentation"'); + res.setLink('/doc', 'http://www.w3.org/ns/hydra/core#apiDocumentation'); next(); }); @@ -17,4 +19,4 @@ app.use(express.static(path.join(__dirname, '/resources'), }) ); -module.exports = app; \ No newline at end of file +module.exports = app; diff --git a/movies/src/tests/tests.hydra b/movies/src/tests/tests.hydra new file mode 100644 index 0000000..57a50da --- /dev/null +++ b/movies/src/tests/tests.hydra @@ -0,0 +1,34 @@ +PREFIX schema: +PREFIX hydra: +PREFIX mov: + +With Class schema:EntryPoint { + Expect Property hydra:collection { + Expect Type hydra:Collection + Expect Type mov:Movies + } + + Expect Link hydra:collection { + Expect Status 200 + } +} + +With Class mov:Movies { + Expect Operation { + Invoke { + Content-Type "text/turtle" + + ``` + @prefix schema: + @prefix mov: + + <> a mov:Movie ; + schema:name "Fake Movie" + ``` + } => { + Expect Status 201 + Expect Type schema:Movie + Expect Property schema:name "Fake Movie" + } + } +} From 2523d54fb33ed3141ea9d8603e7bbf846ebb16c1 Mon Sep 17 00:00:00 2001 From: tpluscode Date: Mon, 5 Aug 2019 11:43:21 +0200 Subject: [PATCH 2/9] ci: run server in background on travis --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index f4d6cda..4baa3dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,12 @@ services: before_install: - cd movies + +before_script: + - npm start &; $SERVER_PID=$! + +after_script: + - kill $SERVER_PID deploy: provider: script From be5d45398542ae9f78af17d35b6fd7bd921c149b Mon Sep 17 00:00:00 2001 From: tpluscode Date: Mon, 5 Aug 2019 11:54:28 +0200 Subject: [PATCH 3/9] chore: invalid shell syntax --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4baa3dd..fabc6a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ before_install: - cd movies before_script: - - npm start &; $SERVER_PID=$! + - npm start & SERVER_PID=$! after_script: - kill $SERVER_PID From 2bc80ff65c0a7204d60a3eef7f1c560bc66e2d1b Mon Sep 17 00:00:00 2001 From: Tomasz Pluskiewicz Date: Mon, 12 Aug 2019 07:43:34 +0200 Subject: [PATCH 4/9] fix: also return a bogus movie duration --- movies/src/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/movies/src/index.js b/movies/src/index.js index ff9f0bb..507bae9 100644 --- a/movies/src/index.js +++ b/movies/src/index.js @@ -14,6 +14,10 @@ app.post('/movies', (req, res) => { "@context": "/context.jsonld", "@id": "/movies/d517cae6-6cdc-11e9-a923-1681be663d3e", "@type": "schema:Movie", - "schema:name": "Fake Movie" + "schema:name": "Fake Movie", + "schema:duration": { + "@value": "PT115M", + "@type": "schema:Duration" + } }); }); From dae6d4028f0e0ac2def6c4b5242ea03aa034556d Mon Sep 17 00:00:00 2001 From: tpluscode Date: Fri, 23 Aug 2019 13:28:36 +0200 Subject: [PATCH 5/9] refactor: abbreviate operation name --- movies/package-lock.json | 6 +++--- movies/package.json | 2 +- movies/src/tests/tests.hydra | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/movies/package-lock.json b/movies/package-lock.json index 7d3d876..aa85809 100644 --- a/movies/package-lock.json +++ b/movies/package-lock.json @@ -197,9 +197,9 @@ } }, "@hydrofoil/hypertest": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@hydrofoil/hypertest/-/hypertest-0.4.0.tgz", - "integrity": "sha512-nwZbIzQajK0JQC3njK1UnSmYE5FdB8PdYzB6/7rfNiJXDPFbCkVRmPVev6IW2/5LDP6OOvxZnGgKOEE8SB65sQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@hydrofoil/hypertest/-/hypertest-0.5.0.tgz", + "integrity": "sha512-/mIOPIiLwnFIRSp84usuMCFbQMdv6ibIKGLZOijSMMofF8ZZ9a9HrKJ5ycqDLEGYMZtSAvsbhyivG609eQBWhQ==", "dev": true, "requires": { "shelljs": "^0.7.5" diff --git a/movies/package.json b/movies/package.json index 1d299e6..5e7c5d0 100644 --- a/movies/package.json +++ b/movies/package.json @@ -23,7 +23,7 @@ "set-link": "^1.0.0" }, "devDependencies": { - "@hydrofoil/hypertest": "^0.4.0", + "@hydrofoil/hypertest": "^0.5.0", "hydra-validator": "^1.0.4", "hydra-validator-analyse": "^0.1.3", "hydra-validator-e2e": "^0.3.2" diff --git a/movies/src/tests/tests.hydra b/movies/src/tests/tests.hydra index 57a50da..7c15069 100644 --- a/movies/src/tests/tests.hydra +++ b/movies/src/tests/tests.hydra @@ -14,7 +14,7 @@ With Class schema:EntryPoint { } With Class mov:Movies { - Expect Operation { + Expect Operation mov:create-movie { Invoke { Content-Type "text/turtle" From 111f3ec967397c939575d959f52f135af4e288f6 Mon Sep 17 00:00:00 2001 From: tpluscode Date: Fri, 23 Aug 2019 13:40:23 +0200 Subject: [PATCH 6/9] docs: mention test scripts in readme --- movies/readme.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/movies/readme.md b/movies/readme.md index 840f46d..12d98c4 100644 --- a/movies/readme.md +++ b/movies/readme.md @@ -27,6 +27,11 @@ See `./docs` directory.` 2. Run hydra analyser and [hypertest](http://testing.hypermedia.app) - npm test + npm test -Hypertest +The `test:analyse` script performs a static analysis of the API Documentation using [hydra-validator-analyse](https://www.npmjs.com/package/hydra-validator-analyse). + +The script `test:e2e` runs the scenarios defined in `src/tests/*.hydra`. These scenarios +are written in hydra flavour of [Hypertest DSL](https://testing.hypermedia.app/dsl/). + +Additionally, jest script is included to run tests not (yet) possible in Hypertest. From e3ba44902cc0e9c070e9b8cbf33c4fdc1b7783ae Mon Sep 17 00:00:00 2001 From: tpluscode Date: Wed, 4 Sep 2019 14:38:05 +0200 Subject: [PATCH 7/9] chore: update e2e test runner --- movies/package-lock.json | 370 ++++++++++++++++++++++++++++++++++++++- movies/package.json | 2 +- 2 files changed, 363 insertions(+), 9 deletions(-) diff --git a/movies/package-lock.json b/movies/package-lock.json index aa85809..251ec38 100644 --- a/movies/package-lock.json +++ b/movies/package-lock.json @@ -608,15 +608,20 @@ } }, "alcaeus": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/alcaeus/-/alcaeus-0.7.1.tgz", - "integrity": "sha512-VunyNqI3v44ihaXR5ncHdCgXaOfm+qgiVnjd1x+kUYLkQw+QotNf5/NA7reSAfm36pIBZxuaZfJa0+y4UzRfSw==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/alcaeus/-/alcaeus-0.9.1.tgz", + "integrity": "sha512-YN2nPkUdN0Lm8XYz5+K+91RWICXxoCU4YMin6liPi0WaF31++iIBSiQcRsJgWH4uvfCP1WTZMg4yxvUoXtoAYg==", "dev": true, "requires": { "@rdfjs/parser-jsonld": "^1.1.1", "@rdfjs/serializer-jsonld": "^1.2.0", "core-decorators": "^0.20.0", "es6-url-template": "^1.0.3", + "gitbook-plugin-advanced-emoji": "^0.2.2", + "gitbook-plugin-etoc": "^1.2.2", + "gitbook-plugin-forkmegithub": "^2.2.0", + "gitbook-plugin-hints": "^1.0.2", + "gitbook-plugin-runkit": "0.0.1", "isomorphic-fetch": "^2.2.1", "jsonld": "^1.4.0", "parse-link-header": "^1.0.1", @@ -630,6 +635,15 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -643,6 +657,12 @@ "color-convert": "^1.9.0" } }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -744,6 +764,15 @@ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, + "autolinker": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", + "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", + "dev": true, + "requires": { + "gulp-header": "^1.7.1" + } + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -1068,6 +1097,12 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1130,6 +1165,15 @@ "typedarray": "^0.0.6" } }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, "content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", @@ -1363,6 +1407,12 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "emojify.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/emojify.js/-/emojify.js-1.1.0.tgz", + "integrity": "sha1-B5//IjMHyQB/VweF6OSTXVw5i+s=", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -1527,6 +1577,57 @@ } } }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -2321,6 +2422,49 @@ "assert-plus": "^1.0.0" } }, + "gitbook-plugin-advanced-emoji": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/gitbook-plugin-advanced-emoji/-/gitbook-plugin-advanced-emoji-0.2.2.tgz", + "integrity": "sha1-CLzGn2KnSc1pIEQ1J2UYyUHDGeM=", + "dev": true, + "requires": { + "emojify.js": "^1.1.0" + } + }, + "gitbook-plugin-etoc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gitbook-plugin-etoc/-/gitbook-plugin-etoc-1.2.2.tgz", + "integrity": "sha1-jeUwuEHS6taOGlH3J8F3jdMQb2I=", + "dev": true, + "requires": { + "github-slugid": "^1.0.1", + "markdown-toc": "^0.12.16" + } + }, + "gitbook-plugin-forkmegithub": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gitbook-plugin-forkmegithub/-/gitbook-plugin-forkmegithub-2.2.0.tgz", + "integrity": "sha1-tktioUArCZsbSMOWqdWwq6lnwEo=", + "dev": true + }, + "gitbook-plugin-hints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/gitbook-plugin-hints/-/gitbook-plugin-hints-1.0.2.tgz", + "integrity": "sha1-5liZg+PqhHSfFtxjHigvr9Rew5s=", + "dev": true + }, + "gitbook-plugin-runkit": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/gitbook-plugin-runkit/-/gitbook-plugin-runkit-0.0.1.tgz", + "integrity": "sha1-USykwRB3XuIySbrGEf1qZYj+H3I=", + "dev": true + }, + "github-slugid": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/github-slugid/-/github-slugid-1.0.1.tgz", + "integrity": "sha1-vM3QgVv61p2KNZ+k/WWUfWBuw8A=", + "dev": true + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -2368,11 +2512,46 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" }, + "gray-matter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", + "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", + "dev": true, + "requires": { + "ansi-red": "^0.1.1", + "coffee-script": "^1.12.4", + "extend-shallow": "^2.0.1", + "js-yaml": "^3.8.1", + "toml": "^2.3.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "gulp-header": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", + "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", + "dev": true, + "requires": { + "concat-with-sourcemaps": "*", + "lodash.template": "^4.4.0", + "through2": "^2.0.0" + } + }, "handlebars": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", @@ -2541,15 +2720,15 @@ } }, "hydra-validator-e2e": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/hydra-validator-e2e/-/hydra-validator-e2e-0.3.2.tgz", - "integrity": "sha512-nDYUr2UGTPNT3sgRI1GwScx2VDL3P+2jRARsdgeNBRwpoB1JKzuHHbLmYJzBhu7jAah0a7pz0RBMsLqyQoERQA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/hydra-validator-e2e/-/hydra-validator-e2e-0.4.2.tgz", + "integrity": "sha512-ShHferfrsimbjh4JYHIUys8u8hYPDuL7nEbXKFtgLzBj/Ce8K0IG9BWx9925eZsWHz32bs50Jk21HI9aOu21XA==", "dev": true, "requires": { "@zazuko/rdf-vocabularies": "^2019.7.9-2", - "alcaeus": "^0.7.1", + "alcaeus": "^0.9.1", "escape-string-regexp": "^2.0.0", - "hydra-validator-core": "^0.3.1" + "hydra-validator-core": "^0.3.4" }, "dependencies": { "escape-string-regexp": { @@ -2557,6 +2736,15 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true + }, + "hydra-validator-core": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/hydra-validator-core/-/hydra-validator-core-0.3.4.tgz", + "integrity": "sha512-Wn4SfSfb7v/6FeeZMm+pFrtqI4xIMnb2BDbwpq1cdMc6vh8JvyoJK45JbktDYcQBC6sdFGN9ADFFl0jj6rv6/w==", + "dev": true, + "requires": { + "@rdfjs/namespace": "^1.0.0" + } } } }, @@ -3443,6 +3631,15 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "^0.1.0" + } + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -3470,6 +3667,47 @@ "type-check": "~0.3.2" } }, + "list-item": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", + "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "extend-shallow": "^2.0.1", + "is-number": "^2.1.0", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -3495,11 +3733,36 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -3553,6 +3816,31 @@ "object-visit": "^1.0.0" } }, + "markdown-link": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", + "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", + "dev": true + }, + "markdown-toc": { + "version": "0.12.16", + "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-0.12.16.tgz", + "integrity": "sha1-jxT0uUswx4XzZAITzOoMMAH3n7M=", + "dev": true, + "requires": { + "concat-stream": "^1.5.1", + "gray-matter": "^2.0.2", + "lazy-cache": "^2.0.1", + "list-item": "^1.1.1", + "markdown-link": "^0.1.1", + "minimist": "^1.2.0", + "mixin-deep": "^1.1.3", + "object.pick": "^1.1.2", + "remarkable": "^1.6.2", + "repeat-string": "^1.5.4", + "strip-color": "^0.1.0" + } + }, "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", @@ -3565,6 +3853,12 @@ "stack-trace": "0.0.10" } }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4175,6 +4469,25 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -4315,6 +4628,16 @@ "safe-regex": "^1.1.0" } }, + "remarkable": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz", + "integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==", + "dev": true, + "requires": { + "argparse": "^1.0.10", + "autolinker": "~0.28.0" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -4535,6 +4858,15 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "^0.3.0" + } + }, "set-link": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-link/-/set-link-1.0.0.tgz", @@ -4919,6 +5251,12 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" }, + "strip-color": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", + "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -4994,6 +5332,16 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -5042,6 +5390,12 @@ "repeat-string": "^1.6.1" } }, + "toml": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", + "integrity": "sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==", + "dev": true + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", diff --git a/movies/package.json b/movies/package.json index 5e7c5d0..d2ec0f1 100644 --- a/movies/package.json +++ b/movies/package.json @@ -26,6 +26,6 @@ "@hydrofoil/hypertest": "^0.5.0", "hydra-validator": "^1.0.4", "hydra-validator-analyse": "^0.1.3", - "hydra-validator-e2e": "^0.3.2" + "hydra-validator-e2e": "^0.4.2" } } From 16c50a14a0816d15207d3044d093567c06dd6720 Mon Sep 17 00:00:00 2001 From: Tomasz Pluskiewicz Date: Fri, 6 Sep 2019 10:38:28 +0200 Subject: [PATCH 8/9] chore: disable checks of movies resource it is not currently implemented ands return 404 and not 200 --- movies/src/tests/tests.hydra | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/movies/src/tests/tests.hydra b/movies/src/tests/tests.hydra index 7c15069..701b862 100644 --- a/movies/src/tests/tests.hydra +++ b/movies/src/tests/tests.hydra @@ -8,9 +8,9 @@ With Class schema:EntryPoint { Expect Type mov:Movies } - Expect Link hydra:collection { + Expect Link hydra:collection /*{ Expect Status 200 - } + }*/ } With Class mov:Movies { From a33434b822fc37277febb01349539fb0e29121ad Mon Sep 17 00:00:00 2001 From: Tomasz Pluskiewicz Date: Thu, 14 Nov 2019 14:24:52 +0100 Subject: [PATCH 9/9] ci: make sure that the app is up before proceeding --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index fabc6a7..90da9e6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,12 @@ services: - docker before_install: + - npm install -g wait-on - cd movies before_script: - npm start & SERVER_PID=$! + - wait-on --timeout 30000 http://localhost:3000 after_script: - kill $SERVER_PID