From 6d19d41cf2ddea551f9d64e8c86206ce70f0f510 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Mon, 10 Aug 2026 18:05:49 -0700 Subject: [PATCH 01/16] OI-32 Revising security, make sure there is no leak of data in error logging --- v2.0/helpers/validation/validateuser.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/v2.0/helpers/validation/validateuser.js b/v2.0/helpers/validation/validateuser.js index ac53d8b..fcfd011 100644 --- a/v2.0/helpers/validation/validateuser.js +++ b/v2.0/helpers/validation/validateuser.js @@ -121,11 +121,23 @@ const checktoken = async function(req, res, next) { message: 'ORCID did not respond in time. Please try again.', }); } - console.error(err); + // Log the detail, don't return it. This used to send `data: err` straight + // back to the caller, which meant a failed INSERT echoed the whole + // statement — ORCID iD, the person's name and their IP — to anyone who + // could reach the endpoint. CloudWatch already has everything needed. + console.error('validate failed: ' + JSON.stringify({ + message: err.message, + code: err.code, + detail: err.detail, + hint: err.hint, + schema: err.schema, + table: err.table, + column: err.column, + routine: err.routine, + })); return res.status(500) .json({ status: 'error', - data: err, message: 'Failed to generate token.', }); } From 57d2388c7909362681f09fd564e07c371a2d306c Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Mon, 10 Aug 2026 18:06:23 -0700 Subject: [PATCH 02/16] OI-32 Revising security, make sure there is no leak of data in error logging --- public/tests.html | 2 +- public/tests.json | 7383 ++++++++++++++++++++++++--------------------- 2 files changed, 3988 insertions(+), 3397 deletions(-) diff --git a/public/tests.html b/public/tests.html index a82a386..64e0f0f 100644 --- a/public/tests.html +++ b/public/tests.html @@ -1,2 +1,2 @@ -Mochawesome Report
\ No newline at end of file +Mochawesome Report
\ No newline at end of file diff --git a/public/tests.json b/public/tests.json index dbba904..56c2786 100644 --- a/public/tests.json +++ b/public/tests.json @@ -1,16 +1,16 @@ { "stats": { - "suites": 167, - "tests": 151, - "passes": 146, + "suites": 168, + "tests": 153, + "passes": 14, "pending": 1, - "failures": 4, - "start": "2026-08-10T18:01:48.866Z", - "end": "2026-08-10T18:05:56.647Z", - "duration": 247781, - "testsRegistered": 151, - "passPercent": 97.33333333333334, - "pendingPercent": 0.6622516556291391, + "failures": 138, + "start": "2026-08-11T01:05:53.797Z", + "end": "2026-08-11T01:05:53.949Z", + "duration": 152, + "testsRegistered": 153, + "passPercent": 9.210526315789473, + "pendingPercent": 0.6535947712418301, "other": 0, "hasOther": false, "skipped": 0, @@ -18,7 +18,7 @@ }, "results": [ { - "uuid": "b5e66e37-d92f-4155-a83f-b6de72394e34", + "uuid": "ed211bda-e243-40b9-8665-393319e9e2ae", "title": "", "fullFile": "", "file": "", @@ -28,7 +28,7 @@ "title": "\"after each\" hook in \"{root}\"", "fullTitle": "\"after each\" hook in \"{root}\"", "timedOut": false, - "duration": 1, + "duration": 0, "state": null, "speed": null, "pass": false, @@ -37,8 +37,8 @@ "context": null, "code": "checkForUnfulfilledExpectations.call(this);\nrecordedExpects = [];", "err": {}, - "uuid": "97f6dae5-de80-4a0d-b58a-05cbb2f61ac3", - "parentUUID": "b5e66e37-d92f-4155-a83f-b6de72394e34", + "uuid": "97628a68-a61b-4e86-968e-18500e694d0f", + "parentUUID": "ed211bda-e243-40b9-8665-393319e9e2ae", "isHook": true, "skipped": false } @@ -46,49 +46,53 @@ "tests": [], "suites": [ { - "uuid": "b55e2a92-fba4-42cb-bdba-0ef8db1dc872", - "title": "tests for /v2.0/data/sites/{siteid}/contacts", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-contacts-test.js", - "file": "/test/v2.0-data-sites-{siteid}-contacts-test.js", + "uuid": "2379894f-e1db-4d26-8817-a92fd5a230c7", + "title": "tests for /v2.0/data/sites/{siteid}/geopoliticalunits", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", + "file": "/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "142638f8-37f9-46a0-8fdd-a529235fcbd8", + "uuid": "31dce849-de58-4617-827b-160061bc27ed", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-contacts-test.js", - "file": "/test/v2.0-data-sites-{siteid}-contacts-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", + "file": "/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"contact\"", - "fullTitle": "tests for /v2.0/data/sites/{siteid}/contacts tests for get should respond 200 for \"contact\"", + "title": "should respond 200 for \"An array of geopolitical units.\"", + "fullTitle": "tests for /v2.0/data/sites/{siteid}/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"", "timedOut": false, - "duration": 588, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, + "duration": 18, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/contacts', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "8e6282a1-025a-4a0e-98ed-e34be2967d13", - "parentUUID": "142638f8-37f9-46a0-8fdd-a529235fcbd8", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/geopoliticalunits', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ad70a43f-206d-47b0-b627-7384e9ea7597", + "parentUUID": "31dce849-de58-4617-827b-160061bc27ed", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "8e6282a1-025a-4a0e-98ed-e34be2967d13" + "passes": [], + "failures": [ + "ad70a43f-206d-47b0-b627-7384e9ea7597" ], - "failures": [], "pending": [], "skipped": [], - "duration": 588, + "duration": 18, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -104,49 +108,231 @@ "_timeout": 900000 }, { - "uuid": "c67c79c7-a8ab-4c0e-b01e-3e633e299174", - "title": "tests for /v2.0/data/datasets/{datasetid}/contacts", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-contacts-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-contacts-test.js", + "uuid": "781fcca8-7249-4b1d-97b7-d96552339922", + "title": "Get datasets any number of ways:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/datasets.js", + "file": "/test/datasets.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "Asking for the datasets associated with Lake Tulane work:", + "fullTitle": "Get datasets any number of ways: Asking for the datasets associated with Lake Tulane work:", + "timedOut": false, + "duration": 2, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/sites/2570/datasets')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).includes('site');\n })\n .expect(function(res) {\n return res.body['data'][0].site.siteid === 2570;\n })\n .expect(function(res) {\n return Object.keys(res.body['data'][0]['site']['datasets'][0]).includes('datasetid');\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "5a9eea45-1051-4112-a19e-2ec10cd85a8e", + "parentUUID": "781fcca8-7249-4b1d-97b7-d96552339922", + "isHook": false, + "skipped": false + }, + { + "title": "Get dataset by singular id & return same id:", + "fullTitle": "Get datasets any number of ways: Get dataset by singular id & return same id:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['siteid'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "eba3e2ce-40f7-4864-b988-516341b88f93", + "parentUUID": "781fcca8-7249-4b1d-97b7-d96552339922", + "isHook": false, + "skipped": false + }, + { + "title": "Get dataset from siteid gives us siteids back and datasets:", + "fullTitle": "Get datasets any number of ways: Get dataset from siteid gives us siteids back and datasets:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/sites/123/datasets')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body['data'][0].site.siteid === 123;\n })\n .expect(function(res) {\n return res.body['data'][0].site.datasets.length > 0;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "5c8db8f9-9f16-48af-a9c1-611c22d8aecf", + "parentUUID": "781fcca8-7249-4b1d-97b7-d96552339922", + "isHook": false, + "skipped": false + }, + { + "title": "Get dataset by comma separated ids & return same ids:", + "fullTitle": "Get datasets any number of ways: Get dataset by comma separated ids & return same ids:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/?siteid=12,13,14')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data']).length > 0;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "60b4236f-b06c-49c1-b877-ad201f416c96", + "parentUUID": "781fcca8-7249-4b1d-97b7-d96552339922", + "isHook": false, + "skipped": false + }, + { + "title": "Returns all key elements of the object:", + "fullTitle": "Get datasets any number of ways: Returns all key elements of the object:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data']).includes('site', 'dataset');\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "3ecad713-83de-4fce-a6fc-283c3050eede", + "parentUUID": "781fcca8-7249-4b1d-97b7-d96552339922", + "isHook": false, + "skipped": false + }, + { + "title": "Limits work:", + "fullTitle": "Get datasets any number of ways: Limits work:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/?altmax=3&limit=10')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data']).length == 10;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "6b006564-3514-4c01-8327-ca3f772bba77", + "parentUUID": "781fcca8-7249-4b1d-97b7-d96552339922", + "isHook": false, + "skipped": false + }, + { + "title": "Works with age validation:", + "fullTitle": "Get datasets any number of ways: Works with age validation:", + "timedOut": false, + "duration": 0, + "state": "pending", + "speed": null, + "pass": false, + "fail": false, + "pending": true, + "context": null, + "code": "", + "err": {}, + "uuid": "2bf340fc-d80d-4e82-9446-7715cf9b1d95", + "parentUUID": "781fcca8-7249-4b1d-97b7-d96552339922", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "5a9eea45-1051-4112-a19e-2ec10cd85a8e", + "eba3e2ce-40f7-4864-b988-516341b88f93", + "5c8db8f9-9f16-48af-a9c1-611c22d8aecf", + "60b4236f-b06c-49c1-b877-ad201f416c96", + "3ecad713-83de-4fce-a6fc-283c3050eede", + "6b006564-3514-4c01-8327-ca3f772bba77" + ], + "pending": [ + "2bf340fc-d80d-4e82-9446-7715cf9b1d95" + ], + "skipped": [], + "duration": 4, + "root": false, + "rootEmpty": false, + "_timeout": 50000 + }, + { + "uuid": "aeb15113-705a-4f9b-ae87-fbe34388e800", + "title": "tests for /v2.0/apps/authorpis", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-authorpis-test.js", + "file": "/test/v2.0-apps-authorpis-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "ba7e404f-b649-4d04-bf3b-13fd866b4d38", + "uuid": "ecc96875-1d67-487e-8be4-04dc7aba1db6", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-contacts-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-contacts-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-authorpis-test.js", + "file": "/test/v2.0-apps-authorpis-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"contact\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/contacts tests for get should respond 200 for \"contact\"", + "title": "should respond 200 for \"A table of Neotoma collection types.\"", + "fullTitle": "tests for /v2.0/apps/authorpis tests for get should respond 200 for \"A table of Neotoma collection types.\"", "timedOut": false, - "duration": 71, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/contacts', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "3b2f14d4-8ec4-4498-8eaa-df0445884a93", - "parentUUID": "ba7e404f-b649-4d04-bf3b-13fd866b4d38", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/authorpis', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "f292e1e6-da74-4669-88d3-80fc4e466249", + "parentUUID": "ecc96875-1d67-487e-8be4-04dc7aba1db6", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "3b2f14d4-8ec4-4498-8eaa-df0445884a93" + "passes": [], + "failures": [ + "f292e1e6-da74-4669-88d3-80fc4e466249" ], - "failures": [], "pending": [], "skipped": [], - "duration": 71, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -162,49 +348,53 @@ "_timeout": 900000 }, { - "uuid": "8fc9a2f3-d4c7-45ec-b9f2-8f6f2416c7a1", - "title": "tests for /v2.0/apps/constdb", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-test.js", - "file": "/test/v2.0-apps-constdb-test.js", + "uuid": "9911ff44-d0f5-45b8-8c68-ce5cac8f4f88", + "title": "tests for /v2.0/apps/collectiontypes", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-collectiontypes-test.js", + "file": "/test/v2.0-apps-collectiontypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "fe520c25-7637-4153-977e-e49142e82483", + "uuid": "fb432d6c-f652-4ca3-980a-77f8601d9b20", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-test.js", - "file": "/test/v2.0-apps-constdb-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-collectiontypes-test.js", + "file": "/test/v2.0-apps-collectiontypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returns metadata about each [constituent database](https://www.neotomadb.org/data/constituent-databases) in Neotoma, including Summary Information about dataset types within the database and the age spans of the records in the database. Constituent databases \"", - "fullTitle": "tests for /v2.0/apps/constdb tests for get should respond 200 for \"Returns metadata about each [constituent database](https://www.neotomadb.org/data/constituent-databases) in Neotoma, including Summary Information about dataset types within the database and the age spans of the records in the database. Constituent databases \"", + "title": "should respond 200 for \"A table of Neotoma collection types.\"", + "fullTitle": "tests for /v2.0/apps/collectiontypes tests for get should respond 200 for \"A table of Neotoma collection types.\"", "timedOut": false, - "duration": 40663, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "3613c9f8-8a6c-40f1-9be3-2f5e9f336925", - "parentUUID": "fe520c25-7637-4153-977e-e49142e82483", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/collectiontypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "43184cc7-289e-4fd8-bdf0-d5a7cfd2fcdd", + "parentUUID": "fb432d6c-f652-4ca3-980a-77f8601d9b20", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "3613c9f8-8a6c-40f1-9be3-2f5e9f336925" + "passes": [], + "failures": [ + "43184cc7-289e-4fd8-bdf0-d5a7cfd2fcdd" ], - "failures": [], "pending": [], "skipped": [], - "duration": 40663, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -220,49 +410,53 @@ "_timeout": 900000 }, { - "uuid": "1269e26f-e9b4-4441-b9ea-81a061660ecc", - "title": "tests for /v2.0/data/sites/{siteid}/datasets_elc", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", - "file": "/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", + "uuid": "df64f42e-47cd-4992-aa8c-b2079189980e", + "title": "tests for /v1.5/apps/collectionTypes", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-collectionTypes-test.js", + "file": "/test/v1.5-apps-collectionTypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "b1bc6952-52ea-436b-acaa-eb4e2e38c00e", + "uuid": "cafa0899-f6db-4893-a484-17c8cc1d7990", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", - "file": "/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-collectionTypes-test.js", + "file": "/test/v1.5-apps-collectionTypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of datasets.\"", - "fullTitle": "tests for /v2.0/data/sites/{siteid}/datasets_elc tests for get should respond 200 for \"An array of datasets.\"", + "title": "should respond 200 for \"Returns the set of collectiontypes recorded in Neotoma.\"", + "fullTitle": "tests for /v1.5/apps/collectionTypes tests for get should respond 200 for \"Returns the set of collectiontypes recorded in Neotoma.\"", "timedOut": false, - "duration": 2474, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/6193/datasets_elc', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "0b131835-2e8c-4305-bc4b-4b73e0b17aa8", - "parentUUID": "b1bc6952-52ea-436b-acaa-eb4e2e38c00e", + "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/collectionTypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "bdc9baf1-1309-488c-9ee7-2effa0bc1db9", + "parentUUID": "cafa0899-f6db-4893-a484-17c8cc1d7990", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "0b131835-2e8c-4305-bc4b-4b73e0b17aa8" + "passes": [], + "failures": [ + "bdc9baf1-1309-488c-9ee7-2effa0bc1db9" ], - "failures": [], "pending": [], "skipped": [], - "duration": 2474, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -278,49 +472,53 @@ "_timeout": 900000 }, { - "uuid": "31611690-c1b6-4a4c-af39-a1cf97040a91", - "title": "tests for /v2.0/apps/depenvt", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depenvt-test.js", - "file": "/test/v2.0-apps-depenvt-test.js", + "uuid": "126b6e99-e9f9-408e-a617-76c72cecd928", + "title": "tests for /v2.0/data/pollen/{id}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-{id}-test.js", + "file": "/test/v2.0-data-pollen-{id}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "db9b847b-73f6-40c8-8eba-c9f1491cb007", + "uuid": "38c4f0b7-ac1d-45d5-a8db-7488524e8ac8", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depenvt-test.js", - "file": "/test/v2.0-apps-depenvt-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-{id}-test.js", + "file": "/test/v2.0-data-pollen-{id}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"This returns the information about depositional environment for selected dataset/collection unit/site.\"", - "fullTitle": "tests for /v2.0/apps/depenvt tests for get should respond 200 for \"This returns the information about depositional environment for selected dataset/collection unit/site.\"", + "title": "should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", + "fullTitle": "tests for /v2.0/data/pollen/{id} tests for get should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", "timedOut": false, - "duration": 79, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/depenvt', { \n 'qs': {\"siteid\":21712,\"datasetid\":60034299,\"collectionunitid\":59650},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "8c307df1-2993-4c36-9e5f-7a9ed28ebbec", - "parentUUID": "db9b847b-73f6-40c8-8eba-c9f1491cb007", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/pollen/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "aff83865-3377-473c-b36b-946e8f4d1930", + "parentUUID": "38c4f0b7-ac1d-45d5-a8db-7488524e8ac8", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "8c307df1-2993-4c36-9e5f-7a9ed28ebbec" + "passes": [], + "failures": [ + "aff83865-3377-473c-b36b-946e8f4d1930" ], - "failures": [], "pending": [], "skipped": [], - "duration": 79, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -336,49 +534,53 @@ "_timeout": 900000 }, { - "uuid": "01d80d88-34f6-4764-b8aa-170fe6e35b7b", - "title": "tests for /v2.0/data/datasets/{datasetid}/publications", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-publications-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-publications-test.js", + "uuid": "20621898-a18f-4def-a03c-04a5046515fd", + "title": "tests for /v2.0/data/datasets/{datasetid}/chronologies", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "82f458f6-d8e1-4d2c-9488-c8834f69f02a", + "uuid": "3997db19-e248-448e-9bda-eeb093d3e35b", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-publications-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-publications-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Publication\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/publications tests for get should respond 200 for \"Publication\"", + "title": "should respond 200 for \"chronology\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/chronologies tests for get should respond 200 for \"chronology\"", "timedOut": false, - "duration": 79, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/publications', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "76a76077-8e38-4d11-929e-e2dfcef4dbb7", - "parentUUID": "82f458f6-d8e1-4d2c-9488-c8834f69f02a", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/chronologies', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "0af97fa0-3a61-4ed2-8c99-1b380220eb43", + "parentUUID": "3997db19-e248-448e-9bda-eeb093d3e35b", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "76a76077-8e38-4d11-929e-e2dfcef4dbb7" + "passes": [], + "failures": [ + "0af97fa0-3a61-4ed2-8c99-1b380220eb43" ], - "failures": [], "pending": [], "skipped": [], - "duration": 79, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -394,509 +596,320 @@ "_timeout": 900000 }, { - "uuid": "1a295097-066e-48f8-a59d-067ddfb2410f", - "title": "Tests for Explorer App Services", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/explorerCalls.js", - "file": "/test/explorerCalls.js", + "uuid": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "title": "Get occurrence data any number of ways:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/occurrence.js", + "file": "/test/occurrence.js", "beforeHooks": [], "afterHooks": [], - "tests": [], - "suites": [ + "tests": [ { - "uuid": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/explorerCalls.js", - "file": "/test/explorerCalls.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for TaxaGroupTypes", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaxaGroupTypes", - "timedOut": false, - "duration": 164, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/TaxaGroupTypes', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "0d6ea4b3-3c81-4cea-b139-d32b9f942c84", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for TaphonomyTypes", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaphonomyTypes", - "timedOut": false, - "duration": 20, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/TaphonomyTypes', {\n qs: {\n taphonomicSystemId: 1,\n },\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "6bd2ce18-0d6a-40c3-ad49-0c23d8f11c31", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for TaphonomySystems", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaphonomySystems", - "timedOut": false, - "duration": 74, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/TaphonomySystems', {\n qs: {\n datasetTypeId: 1,\n },\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "e751611a-b0c3-4fce-85f9-d8e932f27762", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for ElementTypes", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for ElementTypes", - "timedOut": false, - "duration": 76, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/ElementTypes', {\n qs: {\n taxagroupid: 1,\n },\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "87bf16e3-0ebd-4e05-9ca7-54dfe4aaf3ec", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for TaxaInDatasets (a slow service)", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaxaInDatasets (a slow service)", - "timedOut": false, - "duration": 5419, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/TaxaInDatasets', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "63d24897-b8ce-4957-9dcf-df44df715154", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for collectionTypes", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for collectionTypes", - "timedOut": false, - "duration": 67, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/collectionTypes', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "b4d8c55f-f756-4ad5-b7a6-0359238b6571", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for keywords", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for keywords", - "timedOut": false, - "duration": 69, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/keywords', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "69644149-f28f-4c92-bba0-6fcbd21f7d04", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for authorpis", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for authorpis", - "timedOut": false, - "duration": 613, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/authorpis', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "974a4a2c-dd9d-4cc4-873d-5531d1b93851", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for DepositionalEnvironments", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for DepositionalEnvironments", - "timedOut": false, - "duration": 8, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/DepositionalEnvironments', {\n qs: {idProperty: 1},\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "ad1a7770-0098-4ecc-b280-b8c4bc8250dd", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for Search", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for Search", - "timedOut": false, - "duration": 4, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('post', appServicesLocation + '/Search', {\n qs: {search: '{\"datasetTypeId\":21}',\n time: true},\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "d605c5d8-8f55-46a5-a2d4-6629648d481c", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for DatasetTypes", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for DatasetTypes", - "timedOut": false, - "duration": 100, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/DatasetTypes', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "773d6c84-56c0-4791-9e88-3e710a4da987", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for RelativeAges", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for RelativeAges", - "timedOut": false, - "duration": 144, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/RelativeAges', {\n qs: {agescaleid: 1},\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "34852ea4-64a4-4778-b331-8b6bdb0c48f1", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - }, - { - "title": "should respond 200 for Geochronologies", - "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for Geochronologies", - "timedOut": false, - "duration": 6, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "const response = request('get', appServicesLocation + '/Geochronologies', {\n qs: {datasetId: 1001},\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "66a6d546-e878-4d04-8dfd-7a978ba6a8d0", - "parentUUID": "2a2b5e70-712b-4de2-9370-d510eac99cc1", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "0d6ea4b3-3c81-4cea-b139-d32b9f942c84", - "6bd2ce18-0d6a-40c3-ad49-0c23d8f11c31", - "e751611a-b0c3-4fce-85f9-d8e932f27762", - "87bf16e3-0ebd-4e05-9ca7-54dfe4aaf3ec", - "63d24897-b8ce-4957-9dcf-df44df715154", - "b4d8c55f-f756-4ad5-b7a6-0359238b6571", - "69644149-f28f-4c92-bba0-6fcbd21f7d04", - "974a4a2c-dd9d-4cc4-873d-5531d1b93851", - "ad1a7770-0098-4ecc-b280-b8c4bc8250dd", - "d605c5d8-8f55-46a5-a2d4-6629648d481c", - "773d6c84-56c0-4791-9e88-3e710a4da987", - "34852ea4-64a4-4778-b331-8b6bdb0c48f1", - "66a6d546-e878-4d04-8dfd-7a978ba6a8d0" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 6764, - "root": false, - "rootEmpty": false, - "_timeout": 12000 - } - ], - "passes": [], - "failures": [], - "pending": [], - "skipped": [], - "duration": 0, - "root": false, - "rootEmpty": false, - "_timeout": 12000 - }, - { - "uuid": "661769bf-0f8e-4d1e-962d-c023b5ac48e9", - "title": "tests for /v2.0/data/datasets", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-test.js", - "file": "/test/v2.0-data-datasets-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [], - "suites": [ + "title": "Get occurrence by singular id & return same id:", + "fullTitle": "Get occurrence data any number of ways: Get occurrence by singular id & return same id:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "981e6000-6b9c-4355-a182-9055a6ef3d51", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, { - "uuid": "acecf9dd-4c85-4bc2-b1dc-6702dfb7f528", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-test.js", - "file": "/test/v2.0-data-datasets-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"An array of datasets.\"", - "fullTitle": "tests for /v2.0/data/datasets tests for get should respond 200 for \"An array of datasets.\"", - "timedOut": false, - "duration": 191, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets', { \n 'qs': {\"sitename\":\"ipsum magna veniam\",\"database\":\"Neotoma Ostracode Database\",\"datasettype\":\"ostracode surface sample\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"siteid\":33689,\"datasetid\":8035725,\"doi\":\"10[68243/;V51\",\"gpid\":5392,\"keyword\":\"modern\",\"contactid\":2003,\"taxa\":\"dolor dolore\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":16985787,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "b818af41-759b-484e-9625-70b4a2238f09", - "parentUUID": "acecf9dd-4c85-4bc2-b1dc-6702dfb7f528", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "b818af41-759b-484e-9625-70b4a2238f09" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 191, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - } - ], - "passes": [], - "failures": [], - "pending": [], - "skipped": [], - "duration": 0, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - }, - { - "uuid": "ffc37db7-c614-4094-b25e-3cda33416dda", - "title": "tests for /v2.0/data/datasets/{datasetid}/lithology", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-lithology-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-lithology-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [], - "suites": [ + "title": "Get the Flyover test call:", + "fullTitle": "Get occurrence data any number of ways: Get the Flyover test call:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences?taxonname=rhinocerotidae,megacerops,moeritherium,ceratogaulus,gomphotherium,deinotherium,condylarthra,paraceratherium,mesonychia,pantodonta,hyaenodon,thylacosmilus,glyptodon,castoroides,toxodon,megatherium,arctodus,smilodon,mammuthus,mammut,coelodonta,megaloceras,gigantopithecus,phlegethontia,temnospondyli,lepospondyli,ichthyosauria,sauropterygia,mosasauroidea,pterosauromorpha,titanoboa,megalania,placodus,tanystropheidae,hyperodapedon,stagonolepis,scutosaurus,pareiasauria,archelon,stupendemys,protostega,placodermi,leedsichthys,onychodontiformes,acanthostega,ichthyostega,crassigyrinus,ornithosuchus,erpetosuchidae,protosuchus,dakosaurus,geosaurus,deinosuchus&lower=true&limit=999999&loc=POLYGON((-122.56 39.94,-115.21 41.96,-107.99 43.42,-100.51 44.41,-92.85 44.91,-83.49 44.84,-74.25 44.02,-70.19 43.38,-69.36 42.75,-69.02 41.76,-69.13 41.07,-69.5 40.47,-70.07 40.06,-70.75 39.9,-78.36 40.86,-85.79 41.33,-93.27 41.3,-100.68 40.78,-105.86 40.12,-111.42 39.12,-116.79 37.86,-122.28 36.29,-122.98 36.35,-123.61 36.67,-124.06 37.21,-124.27 37.88,-124.21 38.58,-123.89 39.2,-123.35 39.65,-122.56 39.94))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "f285cf8c-3f7b-4313-8c20-1647817903e7", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, { - "uuid": "65986b75-23d5-47ad-8693-e2cd9a7c5e17", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-lithology-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-lithology-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"Lithology\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/lithology tests for get should respond 200 for \"Lithology\"", - "timedOut": false, - "duration": 75, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/lithology', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "432b8b06-74ca-4bb6-91e7-5b3b25f61e80", - "parentUUID": "65986b75-23d5-47ad-8693-e2cd9a7c5e17", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "432b8b06-74ca-4bb6-91e7-5b3b25f61e80" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 75, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - } - ], - "passes": [], - "failures": [], - "pending": [], - "skipped": [], - "duration": 0, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - }, - { - "uuid": "7a9dfcf4-c840-42e4-80b5-aeff9f07e0fa", - "title": "tests for /v2.0/data/taxa/{taxonid}/occurrences", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", - "file": "/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [], - "suites": [ + "title": "Failing Canis test works:", + "fullTitle": "Get occurrence data any number of ways: Failing Canis test works:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "// This casuses timeout fails for some reason. It's frustrating.\napi.get('v2.0/data/occurrences?taxonname=Canis&lower=true&limit=999999')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "48a3d2d6-8b7c-4c55-baad-f0517587ed3e", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, { - "uuid": "45f455d3-8458-4390-ab63-fc5213bffc91", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", - "file": "/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"occurrence\"", - "fullTitle": "tests for /v2.0/data/taxa/{taxonid}/occurrences tests for get should respond 200 for \"occurrence\"", - "timedOut": false, - "duration": 110, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa/500/occurrences', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "08125039-bb44-4d9f-95fe-ecf390a9e746", - "parentUUID": "45f455d3-8458-4390-ab63-fc5213bffc91", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "08125039-bb44-4d9f-95fe-ecf390a9e746" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 110, - "root": false, - "rootEmpty": false, - "_timeout": 900000 + "title": "Get occurrence by taxon:", + "fullTitle": "Get occurrence data any number of ways: Get occurrence by taxon:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/taxa/12/occurrences')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "cfe01331-408f-4a4f-86cb-678e08e2aed2", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Break occurrences by flipping altitudes:", + "fullTitle": "Get occurrence data any number of ways: Break occurrences by flipping altitudes:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?altmax=3000&altmin=5000')\n .set('Accept', 'application/json')\n .expect(500);\ndone();", + "err": {}, + "uuid": "5bd6d722-4053-4fa6-91af-fb43ebceff7b", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Break occurrences by flipping ages:", + "fullTitle": "Get occurrence data any number of ways: Break occurrences by flipping ages:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?ageyoung=5000&ageold=3000')\n .set('Accept', 'application/json')\n .expect(500);\ndone();", + "err": {}, + "uuid": "aa5e2903-223f-4b54-b322-5e63dbf1546b", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Occurrences filter by age:", + "fullTitle": "Get occurrence data any number of ways: Occurrences filter by age:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?ageyoung=3000&ageold=5000')\n .set('Accept', 'application/json')\n .expect(function(res) {\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "a3de9fea-dbc4-436c-83d3-9fd750b7d907", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Get occurrences with comma separated fields:", + "fullTitle": "Get occurrence data any number of ways: Get occurrences with comma separated fields:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/' +\n '?siteid=12,13,14,15&taxonname=Betula&limit=200')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const allSite = res.body['data'];\n const siteids = [];\n for (let i = 0; i < allSite.length; i++) {\n siteids.push(allSite[i]['site']['siteid']);\n };\n const uniqueSites = Array.from(new Set(siteids)).sort(function(a, b) {\n return a - b;\n });\n return (uniqueSites.every((item) => [12, 13, 14, 15].includes(item)));\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "07a13fc8-e6cb-446d-8a66-a0ddb02acde0", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Get occurrences with comma separated taxa:", + "fullTitle": "Get occurrence data any number of ways: Get occurrences with comma separated taxa:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?taxonname=Picea,Abies&limit=25')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return (res.body.data.length > 0);\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "f471f77f-3da3-40df-a636-04bcb79e5408", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Get hierarchical occurrences with comma separated taxa:", + "fullTitle": "Get occurrence data any number of ways: Get hierarchical occurrences with comma separated taxa:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?taxonname=Picea,Abies&limit=25&lower=true')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return (res.body.data.length > 0);\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "b3103354-68e8-4f5a-9ef3-1d96e7b03654", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Get occurrences returns lower taxa:", + "fullTitle": "Get occurrence data any number of ways: Get occurrences returns lower taxa:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?taxonname=Myrica&lower=true&limit=200')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const allTaxa = res.body['data'];\n const taxaids = [];\n for (let i = 0; i < allTaxa.length; i++) {\n taxaids.push(allTaxa[i]['sample']['taxonname']);\n };\n const uniqueTaxa = Array.from(new Set(taxaids)).sort();\n return uniqueTaxa.length > 1;\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "af121df1-9791-4bf6-86f4-fc31eccb3d71", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Get occurrences with mammals and lower taxa works:", + "fullTitle": "Get occurrence data any number of ways: Get occurrences with mammals and lower taxa works:", + "timedOut": false, + "duration": 1, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?taxonname=Homo&lower=true&limit=25')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const allTaxa = res.body['data'];\n const taxaids = [];\n for (let i = 0; i < allTaxa.length; i++) {\n taxaids.push(allTaxa[i]['sample']['taxonname']);\n };\n const uniqueTaxa = Array.from(new Set(taxaids)).sort();\n return uniqueTaxa.length > 1 & allTaxa.length > 0;\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "cf52c79c-d81d-4ea2-ad07-5333ad110191", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false + }, + { + "title": "Get occurrences using taxon and age bounds:", + "fullTitle": "Get occurrence data any number of ways: Get occurrences using taxon and age bounds:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/occurrences/?ageyoung=2000&ageold=3000&taxonname=Pinus')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", + "err": {}, + "uuid": "a57d8d5b-09be-46d7-9545-beaeac412fdb", + "parentUUID": "022be5d3-daa1-4d6d-933f-8776b21fb5d1", + "isHook": false, + "skipped": false } ], - "passes": [], + "suites": [], + "passes": [ + "981e6000-6b9c-4355-a182-9055a6ef3d51", + "f285cf8c-3f7b-4313-8c20-1647817903e7", + "48a3d2d6-8b7c-4c55-baad-f0517587ed3e", + "cfe01331-408f-4a4f-86cb-678e08e2aed2", + "5bd6d722-4053-4fa6-91af-fb43ebceff7b", + "aa5e2903-223f-4b54-b322-5e63dbf1546b", + "a3de9fea-dbc4-436c-83d3-9fd750b7d907", + "07a13fc8-e6cb-446d-8a66-a0ddb02acde0", + "f471f77f-3da3-40df-a636-04bcb79e5408", + "b3103354-68e8-4f5a-9ef3-1d96e7b03654", + "af121df1-9791-4bf6-86f4-fc31eccb3d71", + "cf52c79c-d81d-4ea2-ad07-5333ad110191", + "a57d8d5b-09be-46d7-9545-beaeac412fdb" + ], "failures": [], "pending": [], "skipped": [], - "duration": 0, + "duration": 1, "root": false, "rootEmpty": false, - "_timeout": 900000 + "_timeout": 30000 }, { - "uuid": "32c387e0-1ec6-4ae6-95aa-c73498591915", - "title": "tests for /v2.0/data/datasets/{datasetid}/sites", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-sites-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-sites-test.js", + "uuid": "1a70b60a-8d66-41b0-87a6-3ae2812dbc2e", + "title": "tests for /v2.0/data/aggregatedatasets/{aggdatasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", + "file": "/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "f07f8a03-7f43-49c0-bfd3-2aa8482ee221", + "uuid": "0ae47a65-a17f-436b-aa1b-4ef6332d33de", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-sites-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-sites-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", + "file": "/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Site\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/sites tests for get should respond 200 for \"Site\"", + "title": "should respond 200 for \"An array of datasets.\"", + "fullTitle": "tests for /v2.0/data/aggregatedatasets/{aggdatasetid} tests for get should respond 200 for \"An array of datasets.\"", "timedOut": false, - "duration": 101, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/sites', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "faa6af19-ae69-4c9d-9eb6-4578c8cc8da3", - "parentUUID": "f07f8a03-7f43-49c0-bfd3-2aa8482ee221", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/aggregatedatasets/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "e2c556ea-25f6-4b65-b10b-70f6447fe692", + "parentUUID": "0ae47a65-a17f-436b-aa1b-4ef6332d33de", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "faa6af19-ae69-4c9d-9eb6-4578c8cc8da3" + "passes": [], + "failures": [ + "e2c556ea-25f6-4b65-b10b-70f6447fe692" ], - "failures": [], "pending": [], "skipped": [], - "duration": 101, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -912,49 +925,53 @@ "_timeout": 900000 }, { - "uuid": "1834fb86-4d6a-4767-97bd-617369f0ba59", - "title": "tests for /v2.0/data/summary/rawbymonth", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-rawbymonth-test.js", - "file": "/test/v2.0-data-summary-rawbymonth-test.js", + "uuid": "891f5528-b244-4a05-8945-26a1221e2691", + "title": "tests for /v1.5/apps/DatasetTypes", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-DatasetTypes-test.js", + "file": "/test/v1.5-apps-DatasetTypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "d84ce8a6-4ac2-4864-9092-e7beec1755d0", + "uuid": "d024ffca-69fe-4d24-b39f-eb89427e10f7", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-rawbymonth-test.js", - "file": "/test/v2.0-data-summary-rawbymonth-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-DatasetTypes-test.js", + "file": "/test/v1.5-apps-DatasetTypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A count of the data objects added to Neotoma.\"", - "fullTitle": "tests for /v2.0/data/summary/rawbymonth tests for get should respond 200 for \"A count of the data objects added to Neotoma.\"", + "title": "should respond 200 for \"Returns the set of dataset types supported by Neotoma.\"", + "fullTitle": "tests for /v1.5/apps/DatasetTypes tests for get should respond 200 for \"Returns the set of dataset types supported by Neotoma.\"", "timedOut": false, - "duration": 15311, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/rawbymonth', { \n 'qs': {\"start\": 1,\"end\": 10},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "35f55c52-daa8-48d9-bcb9-cd6b7b855d6f", - "parentUUID": "d84ce8a6-4ac2-4864-9092-e7beec1755d0", + "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/DatasetTypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "4a2f090c-4aea-4e08-a0f9-65650913a199", + "parentUUID": "d024ffca-69fe-4d24-b39f-eb89427e10f7", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "35f55c52-daa8-48d9-bcb9-cd6b7b855d6f" + "passes": [], + "failures": [ + "4a2f090c-4aea-4e08-a0f9-65650913a199" ], - "failures": [], "pending": [], "skipped": [], - "duration": 15311, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -970,49 +987,53 @@ "_timeout": 900000 }, { - "uuid": "08ef9c1e-4545-47c4-9480-ecb0dcf5ba03", - "title": "tests for /v2.0/data/contacts", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-test.js", - "file": "/test/v2.0-data-contacts-test.js", + "uuid": "234c5aeb-caf1-49c9-8b7a-ce46e5ccbf97", + "title": "tests for /v2.0/data/downloads/{datasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-downloads-{datasetid}-test.js", + "file": "/test/v2.0-data-downloads-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "696a497f-6431-4d8f-ab62-ca586b93206d", + "uuid": "cb5c9785-ef32-4189-9e05-f56bea463489", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-test.js", - "file": "/test/v2.0-data-contacts-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-downloads-{datasetid}-test.js", + "file": "/test/v2.0-data-downloads-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"contact\"", - "fullTitle": "tests for /v2.0/data/contacts tests for get should respond 200 for \"contact\"", + "title": "should respond 200 for \"Returned download object.\"", + "fullTitle": "tests for /v2.0/data/downloads/{datasetid} tests for get should respond 200 for \"Returned download object.\"", "timedOut": false, - "duration": 77, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts', { \n 'qs': {\"contactid\":452,\"familyname\":\"rej\",\"contactname\":\"BxJatQC\",\"contactstatus\":\"deceased\",\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "48236dca-e775-4902-b7fe-70f74a2f34ea", - "parentUUID": "696a497f-6431-4d8f-ab62-ca586b93206d", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/downloads/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "154fb39d-d09e-4d67-a615-06f4fadd14a4", + "parentUUID": "cb5c9785-ef32-4189-9e05-f56bea463489", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "48236dca-e775-4902-b7fe-70f74a2f34ea" + "passes": [], + "failures": [ + "154fb39d-d09e-4d67-a615-06f4fadd14a4" ], - "failures": [], "pending": [], "skipped": [], - "duration": 77, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1028,7 +1049,7 @@ "_timeout": 900000 }, { - "uuid": "252fd2ed-01e7-45ba-9187-30b0f31153b1", + "uuid": "60ed3fe6-f613-478b-af45-929866b1688d", "title": "tests for /v2.0/data/dbtables", "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-dbtables-test.js", "file": "/test/v2.0-data-dbtables-test.js", @@ -1037,7 +1058,7 @@ "tests": [], "suites": [ { - "uuid": "153e4ce4-6519-4ae9-b8da-a81b3f36844c", + "uuid": "4d9aa97c-265a-48b3-bed0-a58ffd9d4613", "title": "tests for get", "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-dbtables-test.js", "file": "/test/v2.0-data-dbtables-test.js", @@ -1048,87 +1069,33 @@ "title": "should respond 200 for \"Returned table.\"", "fullTitle": "tests for /v2.0/data/dbtables tests for get should respond 200 for \"Returned table.\"", "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/dbtables', { \n 'qs': {\"table\":\"mollit ut sed id ullamco\",\"count\":false,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "d02d8c8b-4190-42da-ba79-fa5b7d973abf", - "parentUUID": "153e4ce4-6519-4ae9-b8da-a81b3f36844c", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "d02d8c8b-4190-42da-ba79-fa5b7d973abf" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 72, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - } - ], - "passes": [], - "failures": [], - "pending": [], - "skipped": [], - "duration": 0, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - }, - { - "uuid": "ee184f5c-1c18-45bd-a997-72f49cdac357", - "title": "tests for /v2.0/data/frozen/{datasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-frozen-{datasetid}-test.js", - "file": "/test/v2.0-data-frozen-{datasetid}-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [], - "suites": [ - { - "uuid": "46831d1e-f316-477e-b324-aa083f674d32", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-frozen-{datasetid}-test.js", - "file": "/test/v2.0-data-frozen-{datasetid}-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"Returned download object.\"", - "fullTitle": "tests for /v2.0/data/frozen/{datasetid} tests for get should respond 200 for \"Returned download object.\"", - "timedOut": false, - "duration": 164, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/frozen/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "16c9f0d9-510d-49ff-b166-aeca3edb2a7e", - "parentUUID": "46831d1e-f316-477e-b324-aa083f674d32", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/dbtables', { \n 'qs': {\"table\":\"minim adipisicing\",\"count\":true,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "2fd52055-1983-4c24-87e1-09ff4586daae", + "parentUUID": "4d9aa97c-265a-48b3-bed0-a58ffd9d4613", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "16c9f0d9-510d-49ff-b166-aeca3edb2a7e" + "passes": [], + "failures": [ + "2fd52055-1983-4c24-87e1-09ff4586daae" ], - "failures": [], "pending": [], "skipped": [], - "duration": 164, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1144,49 +1111,53 @@ "_timeout": 900000 }, { - "uuid": "2df50e7f-2d48-4805-9830-9780ef104596", - "title": "tests for /v2.0/data/aedna/taxa/{taxonid}/sequences", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", - "file": "/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", + "uuid": "bbd5d400-db54-4f1a-a749-428cfaeab2cd", + "title": "tests for /v2.0/data/taxa", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-test.js", + "file": "/test/v2.0-data-taxa-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "2d9b5b86-d96b-45df-be7c-cba7851c99f5", + "uuid": "3f082f60-3ed6-4207-9087-2da78627b87f", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", - "file": "/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-test.js", + "file": "/test/v2.0-data-taxa-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of aeDNA sequences for the taxon.\"", - "fullTitle": "tests for /v2.0/data/aedna/taxa/{taxonid}/sequences tests for get should respond 200 for \"An array of aeDNA sequences for the taxon.\"", + "title": "should respond 200 for \"A taxon or array of taxa.\"", + "fullTitle": "tests for /v2.0/data/taxa tests for get should respond 200 for \"A taxon or array of taxa.\"", "timedOut": false, - "duration": 78, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 3, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/aedna/taxa/500/sequences', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "6797b5c3-74b1-4ed1-8c79-15e830c6d248", - "parentUUID": "2d9b5b86-d96b-45df-be7c-cba7851c99f5", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa', { \n 'qs': {\"taxonname\":\"ut culpa eiusmod laborum\",\"taxagroup\":\"ut et aliqua\",\"ecolgroup\":\"velit consectetur ea in minim\",\"status\":true,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ba1ec21b-4533-4af6-a456-17876653e281", + "parentUUID": "3f082f60-3ed6-4207-9087-2da78627b87f", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "6797b5c3-74b1-4ed1-8c79-15e830c6d248" + "passes": [], + "failures": [ + "ba1ec21b-4533-4af6-a456-17876653e281" ], - "failures": [], "pending": [], "skipped": [], - "duration": 78, + "duration": 3, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1202,49 +1173,53 @@ "_timeout": 900000 }, { - "uuid": "46ee8ebf-bf61-400e-bc09-e9c5adc403a9", - "title": "tests for /v2.0/data/datasets_elc/{datasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-{datasetid}-test.js", - "file": "/test/v2.0-data-datasets_elc-{datasetid}-test.js", + "uuid": "d23c6e58-722c-452f-b155-70c870bcfb1a", + "title": "tests for /v2.0/data/geopoliticalunits/{gpid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-test.js", + "file": "/test/v2.0-data-geopoliticalunits-{gpid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "f133edc3-bc2e-4883-b832-33cfa21e7fe6", + "uuid": "e7591b6c-80b8-4267-90de-34b8d6856717", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-{datasetid}-test.js", - "file": "/test/v2.0-data-datasets_elc-{datasetid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-test.js", + "file": "/test/v2.0-data-geopoliticalunits-{gpid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", - "fullTitle": "tests for /v2.0/data/datasets_elc/{datasetid} tests for get should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", + "title": "should respond 200 for \"An array of geopolitical units.\"", + "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid} tests for get should respond 200 for \"An array of geopolitical units.\"", "timedOut": false, - "duration": 2422, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 2, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets_elc/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "d1d51b41-70f3-4b22-852d-df8e0ba52de3", - "parentUUID": "f133edc3-bc2e-4883-b832-33cfa21e7fe6", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/1434', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "b9fecc84-dbd4-46f0-9eb9-f48ad9a5dd81", + "parentUUID": "e7591b6c-80b8-4267-90de-34b8d6856717", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "d1d51b41-70f3-4b22-852d-df8e0ba52de3" + "passes": [], + "failures": [ + "b9fecc84-dbd4-46f0-9eb9-f48ad9a5dd81" ], - "failures": [], "pending": [], "skipped": [], - "duration": 2422, + "duration": 2, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1260,49 +1235,53 @@ "_timeout": 900000 }, { - "uuid": "6db44940-c1fa-4576-94e1-00a1746754a0", - "title": "tests for /v2.0/data/taxa/{taxonid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-test.js", - "file": "/test/v2.0-data-taxa-{taxonid}-test.js", + "uuid": "ec398a63-8bd2-46d8-9e2c-2092faf7c59e", + "title": "tests for /v2.0/data/summary/rawbymonth", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-rawbymonth-test.js", + "file": "/test/v2.0-data-summary-rawbymonth-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "2094222f-b3be-469b-8507-064866b114b7", + "uuid": "ed3a62d6-6d56-4592-a9c7-175e5a2c36e6", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-test.js", - "file": "/test/v2.0-data-taxa-{taxonid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-rawbymonth-test.js", + "file": "/test/v2.0-data-summary-rawbymonth-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A taxon or array of taxa.\"", - "fullTitle": "tests for /v2.0/data/taxa/{taxonid} tests for get should respond 200 for \"A taxon or array of taxa.\"", + "title": "should respond 200 for \"A count of the data objects added to Neotoma.\"", + "fullTitle": "tests for /v2.0/data/summary/rawbymonth tests for get should respond 200 for \"A count of the data objects added to Neotoma.\"", "timedOut": false, - "duration": 83, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "8e582786-05c6-4cae-a574-eea6974cdbd4", - "parentUUID": "2094222f-b3be-469b-8507-064866b114b7", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/rawbymonth', { \n 'qs': {\"start\": 1,\"end\": 10},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "516c9f7e-7c0a-44b7-8ab7-77161801903d", + "parentUUID": "ed3a62d6-6d56-4592-a9c7-175e5a2c36e6", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "8e582786-05c6-4cae-a574-eea6974cdbd4" + "passes": [], + "failures": [ + "516c9f7e-7c0a-44b7-8ab7-77161801903d" ], - "failures": [], "pending": [], "skipped": [], - "duration": 83, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1318,49 +1297,53 @@ "_timeout": 900000 }, { - "uuid": "03e662a4-ead5-4092-b152-591878513bdf", - "title": "tests for /v2.0/data/occurrences", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-test.js", - "file": "/test/v2.0-data-occurrences-test.js", + "uuid": "a9901e9a-e984-4e98-aca6-9a6a44324363", + "title": "tests for /v2.0/data/pollen", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-test.js", + "file": "/test/v2.0-data-pollen-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "9d43f8d8-024b-49d2-8441-f7b09bd4bf2e", + "uuid": "3212776a-51cf-4ce6-bde7-a1a8eb4eebf3", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-test.js", - "file": "/test/v2.0-data-occurrences-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-test.js", + "file": "/test/v2.0-data-pollen-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"occurrence\"", - "fullTitle": "tests for /v2.0/data/occurrences tests for get should respond 200 for \"occurrence\"", + "title": "should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", + "fullTitle": "tests for /v2.0/data/pollen tests for get should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", "timedOut": false, - "duration": 99, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/occurrences', { \n 'qs': {\"taxonname\":\"occaecat cupidatat Ut\",\"taxonid\":35699,\"siteid\":48470,\"sitename\":\"voluptate\",\"datasettype\":\"modern plant biomarker\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageof\":23352942,\"ageyoung\": 1000,\"ageold\": 10000,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "2a049bd0-e0db-43e7-99c8-d05407520323", - "parentUUID": "9d43f8d8-024b-49d2-8441-f7b09bd4bf2e", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/pollen', { \n 'qs': {\"taxonname\":\"esse incididunt dolor eu\",\"taxonid\":39814,\"siteid\":23882,\"sitename\":\"in officia nulla\",\"datasettype\":\"geochronologic\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageof\":23767246,\"ageyoung\": 1000,\"ageold\": 10000,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "92bf8fa9-bcae-4496-a3a1-f38da94a94ec", + "parentUUID": "3212776a-51cf-4ce6-bde7-a1a8eb4eebf3", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "2a049bd0-e0db-43e7-99c8-d05407520323" + "passes": [], + "failures": [ + "92bf8fa9-bcae-4496-a3a1-f38da94a94ec" ], - "failures": [], "pending": [], "skipped": [], - "duration": 99, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1376,49 +1359,53 @@ "_timeout": 900000 }, { - "uuid": "86721e0d-430c-47dd-960e-a2bf9fa43c81", - "title": "tests for /v2.0/apps/collectiontypes", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-collectiontypes-test.js", - "file": "/test/v2.0-apps-collectiontypes-test.js", + "uuid": "425e8939-2d14-4d2f-bd8d-89d28713e081", + "title": "tests for /v2.0/apps/taxagrouptypes", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxagrouptypes-test.js", + "file": "/test/v2.0-apps-taxagrouptypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "3a79ce21-6312-4369-a1e7-e9a1deaee99f", + "uuid": "1f3f1a90-4027-4746-a540-03e833a6e455", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-collectiontypes-test.js", - "file": "/test/v2.0-apps-collectiontypes-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxagrouptypes-test.js", + "file": "/test/v2.0-apps-taxagrouptypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { "title": "should respond 200 for \"A table of Neotoma collection types.\"", - "fullTitle": "tests for /v2.0/apps/collectiontypes tests for get should respond 200 for \"A table of Neotoma collection types.\"", + "fullTitle": "tests for /v2.0/apps/taxagrouptypes tests for get should respond 200 for \"A table of Neotoma collection types.\"", "timedOut": false, - "duration": 75, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 2, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/collectiontypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "0e1b4177-b403-4335-9bbf-0fbae2dac1f0", - "parentUUID": "3a79ce21-6312-4369-a1e7-e9a1deaee99f", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taxagrouptypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "13946b7c-51c7-4880-97ec-a997b1b439a4", + "parentUUID": "1f3f1a90-4027-4746-a540-03e833a6e455", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "0e1b4177-b403-4335-9bbf-0fbae2dac1f0" + "passes": [], + "failures": [ + "13946b7c-51c7-4880-97ec-a997b1b439a4" ], - "failures": [], "pending": [], "skipped": [], - "duration": 75, + "duration": 2, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1434,49 +1421,53 @@ "_timeout": 900000 }, { - "uuid": "b6642877-303d-4f4a-a513-9c6229e1c056", - "title": "tests for /v1.5/data/contacts/{contactid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-contacts-{contactid}-test.js", - "file": "/test/v1.5-data-contacts-{contactid}-test.js", + "uuid": "4965c9aa-6fac-4625-bd38-1ef6d7d8843f", + "title": "tests for /v2.0/apps/depositionalenvironments/root", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depositionalenvironments-root-test.js", + "file": "/test/v2.0-apps-depositionalenvironments-root-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "cab7ca80-734f-48a7-807e-77b76ca671ff", + "uuid": "88e3e6a3-2018-4490-93fb-6c5d47c49c03", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-contacts-{contactid}-test.js", - "file": "/test/v1.5-data-contacts-{contactid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depositionalenvironments-root-test.js", + "file": "/test/v2.0-apps-depositionalenvironments-root-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Contact\"", - "fullTitle": "tests for /v1.5/data/contacts/{contactid} tests for get should respond 200 for \"Contact\"", + "title": "should respond 200 for \"A table of Neotoma collection types.\"", + "fullTitle": "tests for /v2.0/apps/depositionalenvironments/root tests for get should respond 200 for \"A table of Neotoma collection types.\"", "timedOut": false, - "duration": 71, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/data/contacts/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "e6b6e018-8eda-4fbf-afae-638655e38cde", - "parentUUID": "cab7ca80-734f-48a7-807e-77b76ca671ff", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/depositionalenvironments/root', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "0570745c-a617-4d47-8160-650e0217c186", + "parentUUID": "88e3e6a3-2018-4490-93fb-6c5d47c49c03", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "e6b6e018-8eda-4fbf-afae-638655e38cde" + "passes": [], + "failures": [ + "0570745c-a617-4d47-8160-650e0217c186" ], - "failures": [], "pending": [], "skipped": [], - "duration": 71, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1492,107 +1483,92 @@ "_timeout": 900000 }, { - "uuid": "a20bf39f-8b7a-4b57-8d85-123a8fe1343f", - "title": "tests for /v2.0/data/chronologies/{chronid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-chronologies-{chronid}-test.js", - "file": "/test/v2.0-data-chronologies-{chronid}-test.js", + "uuid": "fe1532e1-046f-4f31-b4a9-51007f8c49b5", + "title": "Get chronology data by datasetid:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/chronologies.js", + "file": "/test/chronologies.js", "beforeHooks": [], "afterHooks": [], - "tests": [], - "suites": [ + "tests": [ { - "uuid": "f4c979a0-bec4-421d-9fa1-732545936767", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-chronologies-{chronid}-test.js", - "file": "/test/v2.0-data-chronologies-{chronid}-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"A Neotoma chronology object.\"", - "fullTitle": "tests for /v2.0/data/chronologies/{chronid} tests for get should respond 200 for \"A Neotoma chronology object.\"", - "timedOut": false, - "duration": 89, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/chronologies/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "70e0d674-e24d-4b15-b1fb-c42eb5d7bfae", - "parentUUID": "f4c979a0-bec4-421d-9fa1-732545936767", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "70e0d674-e24d-4b15-b1fb-c42eb5d7bfae" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 89, - "root": false, - "rootEmpty": false, - "_timeout": 900000 + "title": "A call to two datasets returns two datasets of data:", + "fullTitle": "Get chronology data by datasetid: A call to two datasets returns two datasets of data:", + "timedOut": false, + "duration": 0, + "state": "passed", + "speed": "fast", + "pass": true, + "fail": false, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/684,1001/chronologies')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body['data'].length === 4;\n })\n .expect(200, done());", + "err": {}, + "uuid": "df5b141e-0782-4bde-b1ee-793ded3c5ee0", + "parentUUID": "fe1532e1-046f-4f31-b4a9-51007f8c49b5", + "isHook": false, + "skipped": false } ], - "passes": [], + "suites": [], + "passes": [ + "df5b141e-0782-4bde-b1ee-793ded3c5ee0" + ], "failures": [], "pending": [], "skipped": [], "duration": 0, "root": false, "rootEmpty": false, - "_timeout": 900000 + "_timeout": 5000 }, { - "uuid": "cd222990-18e9-4997-8a29-6f8b6435c326", - "title": "tests for /v2.0/data/publications", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-test.js", - "file": "/test/v2.0-data-publications-test.js", + "uuid": "4e602f78-356c-4585-83e4-c1497741bde2", + "title": "tests for /v2.0/apps/depenvt", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depenvt-test.js", + "file": "/test/v2.0-apps-depenvt-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "30b820c4-885c-426a-9e2d-878313d446e5", + "uuid": "bf8dc29b-663f-4e77-a713-da068d9197eb", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-test.js", - "file": "/test/v2.0-data-publications-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depenvt-test.js", + "file": "/test/v2.0-apps-depenvt-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A list of publications.\"", - "fullTitle": "tests for /v2.0/data/publications tests for get should respond 200 for \"A list of publications.\"", + "title": "should respond 200 for \"This returns the information about depositional environment for selected dataset/collection unit/site.\"", + "fullTitle": "tests for /v2.0/apps/depenvt tests for get should respond 200 for \"This returns the information about depositional environment for selected dataset/collection unit/site.\"", "timedOut": false, - "duration": 76, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 2, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/publications', { \n 'qs': {\"publicationid\":10734,\"datasetid\":92176777,\"siteid\":3269,\"familyname\":\"R-eZmtqPJWL\",\"pubtype\":\"Undergraduate thesis\",\"year\":1533,\"search\":\"eiusmod velit quis\",\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "b10f08a4-2098-47db-91b6-87fe37f18dc6", - "parentUUID": "30b820c4-885c-426a-9e2d-878313d446e5", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/depenvt', { \n 'qs': {\"siteid\":29633,\"datasetid\":16224114,\"collectionunitid\":7475},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "83a7d6c2-7b32-4272-8344-d37c82606a00", + "parentUUID": "bf8dc29b-663f-4e77-a713-da068d9197eb", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "b10f08a4-2098-47db-91b6-87fe37f18dc6" + "passes": [], + "failures": [ + "83a7d6c2-7b32-4272-8344-d37c82606a00" ], - "failures": [], "pending": [], "skipped": [], - "duration": 76, + "duration": 2, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1608,49 +1584,53 @@ "_timeout": 900000 }, { - "uuid": "3f5bba6b-41d5-4cc5-b301-4ea4749db90b", - "title": "tests for /v2.0/apps/taxagrouptypes", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxagrouptypes-test.js", - "file": "/test/v2.0-apps-taxagrouptypes-test.js", + "uuid": "30876926-8c0f-4b26-b1e7-a52f07a7ae97", + "title": "tests for /v2.0/data/aedna/taxa/{taxonid}/sequences", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", + "file": "/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "79c5b9a1-b578-4b98-b41d-fe2a08500003", + "uuid": "3cf6c688-6963-47e2-9ff5-8aa975b97788", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxagrouptypes-test.js", - "file": "/test/v2.0-apps-taxagrouptypes-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", + "file": "/test/v2.0-data-aedna-taxa-{taxonid}-sequences-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A table of Neotoma collection types.\"", - "fullTitle": "tests for /v2.0/apps/taxagrouptypes tests for get should respond 200 for \"A table of Neotoma collection types.\"", + "title": "should respond 200 for \"An array of aeDNA sequences for the taxon.\"", + "fullTitle": "tests for /v2.0/data/aedna/taxa/{taxonid}/sequences tests for get should respond 200 for \"An array of aeDNA sequences for the taxon.\"", "timedOut": false, - "duration": 116, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 2, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taxagrouptypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "04f5e5ef-2003-4868-93a6-5d5777abb483", - "parentUUID": "79c5b9a1-b578-4b98-b41d-fe2a08500003", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/aedna/taxa/500/sequences', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "e6d1d3de-05bd-448b-ab58-c47f873029aa", + "parentUUID": "3cf6c688-6963-47e2-9ff5-8aa975b97788", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "04f5e5ef-2003-4868-93a6-5d5777abb483" + "passes": [], + "failures": [ + "e6d1d3de-05bd-448b-ab58-c47f873029aa" ], - "failures": [], "pending": [], "skipped": [], - "duration": 116, + "duration": 2, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1666,145 +1646,53 @@ "_timeout": 900000 }, { - "uuid": "6f85699d-b0f9-4069-b139-2a438e9bf45b", - "title": "Get geopolitical data:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/geopolitical.js", - "file": "/test/geopolitical.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "An empty query returns a valid response.", - "fullTitle": "Get geopolitical data: An empty query returns a valid response.", - "timedOut": false, - "duration": 88, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/geopoliticalunits/')\n .set('Accept', 'application/json')\n .expect(200, done);", - "err": {}, - "uuid": "7f37cedf-6ef1-448a-9cc5-392aab11a57b", - "parentUUID": "6f85699d-b0f9-4069-b139-2a438e9bf45b", - "isHook": false, - "skipped": false - }, - { - "title": "The default limit of 25 should be reached for country level data:", - "fullTitle": "Get geopolitical data: The default limit of 25 should be reached for country level data:", - "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/geopoliticalunits/?rank=1')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.equal(res.body.data.length, 25);\n done();\n });", - "err": {}, - "uuid": "cc3481dd-799d-4503-a23c-797410d137b0", - "parentUUID": "6f85699d-b0f9-4069-b139-2a438e9bf45b", - "isHook": false, - "skipped": false - }, - { - "title": "Changing the limit should change the number of countries retrieved:", - "fullTitle": "Get geopolitical data: Changing the limit should change the number of countries retrieved:", - "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/geopoliticalunits/?rank=1&limit=30')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.equal(res.body.data.length, 30);\n done();\n });", - "err": {}, - "uuid": "9ded50ab-ff63-46c4-a62d-98ae590316cc", - "parentUUID": "6f85699d-b0f9-4069-b139-2a438e9bf45b", - "isHook": false, - "skipped": false - }, - { - "title": "A single geopolitical unit (12) should be returned.", - "fullTitle": "Get geopolitical data: A single geopolitical unit (12) should be returned.", - "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/geopoliticalunits/12')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.equal(res.body.data[0]['geopoliticalid'], 12);\n done();\n });", - "err": {}, - "uuid": "9428641e-6804-4d34-b783-b6cb6dd98504", - "parentUUID": "6f85699d-b0f9-4069-b139-2a438e9bf45b", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "7f37cedf-6ef1-448a-9cc5-392aab11a57b", - "cc3481dd-799d-4503-a23c-797410d137b0", - "9ded50ab-ff63-46c4-a62d-98ae590316cc", - "9428641e-6804-4d34-b783-b6cb6dd98504" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 304, - "root": false, - "rootEmpty": false, - "_timeout": 5000 - }, - { - "uuid": "b1d48d9d-5604-49c5-b1b3-026111358f19", - "title": "tests for /v2.0/data/datasets_elc", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-test.js", - "file": "/test/v2.0-data-datasets_elc-test.js", + "uuid": "96b0dac0-915b-44ba-b2bf-8018135984bd", + "title": "tests for /v2.0/data/frozen/{datasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-frozen-{datasetid}-test.js", + "file": "/test/v2.0-data-frozen-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "e1519a84-1119-41dd-83b8-fe5a2ef7997f", + "uuid": "5566a193-196b-4d1c-88fd-80caa8cff741", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-test.js", - "file": "/test/v2.0-data-datasets_elc-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-frozen-{datasetid}-test.js", + "file": "/test/v2.0-data-frozen-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", - "fullTitle": "tests for /v2.0/data/datasets_elc tests for get should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", + "title": "should respond 200 for \"Returned download object.\"", + "fullTitle": "tests for /v2.0/data/frozen/{datasetid} tests for get should respond 200 for \"Returned download object.\"", "timedOut": false, - "duration": 79, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 3, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets_elc', { \n 'qs': {\"siteid\":32407,\"contactid\":17454,\"datasettype\":\"Metabarcoding aeDNA\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":22904221},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "1ee95b81-14d8-4315-a053-8ec9cd15e46e", - "parentUUID": "e1519a84-1119-41dd-83b8-fe5a2ef7997f", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/frozen/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "0d623768-ad89-4691-a8ba-896fd19ec41e", + "parentUUID": "5566a193-196b-4d1c-88fd-80caa8cff741", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "1ee95b81-14d8-4315-a053-8ec9cd15e46e" + "passes": [], + "failures": [ + "0d623768-ad89-4691-a8ba-896fd19ec41e" ], - "failures": [], "pending": [], "skipped": [], - "duration": 79, + "duration": 3, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1820,49 +1708,53 @@ "_timeout": 900000 }, { - "uuid": "cbff194e-6258-44ba-8ce4-5f8c24f95481", - "title": "tests for /v2.0/data/geopoliticalunits/{gpid}/sites", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", - "file": "/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", + "uuid": "0081c43c-b949-471d-afae-d4ef500521c3", + "title": "tests for /v2.0/apps/keywords", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-keywords-test.js", + "file": "/test/v2.0-apps-keywords-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "f6a9d4bc-07c5-41bc-b87d-4d530ae04456", + "uuid": "f2ae5276-3a42-4d0e-a644-3eaa4f14bb54", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", - "file": "/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-keywords-test.js", + "file": "/test/v2.0-apps-keywords-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of sites.\"", - "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid}/sites tests for get should respond 200 for \"An array of sites.\"", + "title": "should respond 200 for \"A list of all keywords used for analysis units in the database.\"", + "fullTitle": "tests for /v2.0/apps/keywords tests for get should respond 200 for \"A list of all keywords used for analysis units in the database.\"", "timedOut": false, - "duration": 149, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/2999/sites', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "3ef2b0b1-781a-4895-92bd-f388204ea243", - "parentUUID": "f6a9d4bc-07c5-41bc-b87d-4d530ae04456", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/keywords', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "313d7627-6961-472c-bc86-d213b7aa96cf", + "parentUUID": "f2ae5276-3a42-4d0e-a644-3eaa4f14bb54", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "3ef2b0b1-781a-4895-92bd-f388204ea243" + "passes": [], + "failures": [ + "313d7627-6961-472c-bc86-d213b7aa96cf" ], - "failures": [], "pending": [], "skipped": [], - "duration": 149, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1878,49 +1770,53 @@ "_timeout": 900000 }, { - "uuid": "0a8e6803-7324-4572-bb0b-9d9f3c7dcfea", - "title": "tests for /v2.0/data/summary/dstypemonth", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dstypemonth-test.js", - "file": "/test/v2.0-data-summary-dstypemonth-test.js", + "uuid": "1f4e2537-85c9-43fb-acf5-40874d3f0bbe", + "title": "tests for /v2.0/data/aedna/sequences/{datasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-sequences-{datasetid}-test.js", + "file": "/test/v2.0-data-aedna-sequences-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "e1d2ac41-b29e-4a1c-bb8b-402aaa608a97", + "uuid": "e695269b-9cdc-4b0f-bf0f-00b72e468adc", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dstypemonth-test.js", - "file": "/test/v2.0-data-summary-dstypemonth-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-sequences-{datasetid}-test.js", + "file": "/test/v2.0-data-aedna-sequences-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A count of the datasets added by datasettype for the requested period.\"", - "fullTitle": "tests for /v2.0/data/summary/dstypemonth tests for get should respond 200 for \"A count of the datasets added by datasettype for the requested period.\"", + "title": "should respond 200 for \"aeDNA sequences grouped by taxon for the dataset.\"", + "fullTitle": "tests for /v2.0/data/aedna/sequences/{datasetid} tests for get should respond 200 for \"aeDNA sequences grouped by taxon for the dataset.\"", "timedOut": false, - "duration": 203, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/dstypemonth', { \n 'qs': {\"start\": 1,\"end\": 10},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "cce979cf-eabf-4ad3-a100-fa89ba3ad18f", - "parentUUID": "e1d2ac41-b29e-4a1c-bb8b-402aaa608a97", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/aedna/sequences/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "f3a1cfe0-49bc-4850-b033-969ffbca9c2c", + "parentUUID": "e695269b-9cdc-4b0f-bf0f-00b72e468adc", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "cce979cf-eabf-4ad3-a100-fa89ba3ad18f" + "passes": [], + "failures": [ + "f3a1cfe0-49bc-4850-b033-969ffbca9c2c" ], - "failures": [], "pending": [], "skipped": [], - "duration": 203, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1936,49 +1832,53 @@ "_timeout": 900000 }, { - "uuid": "bc8f5625-ec2d-43e9-8396-36386cfa5cbb", - "title": "tests for /v1.5/apps/TaxaInDatasets", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-TaxaInDatasets-test.js", - "file": "/test/v1.5-apps-TaxaInDatasets-test.js", + "uuid": "e74eeb6c-2392-4bfc-879a-c2168f0a494a", + "title": "tests for /v2.0/apps/taxaindatasets", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxaindatasets-test.js", + "file": "/test/v2.0-apps-taxaindatasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "52ecfe3a-0c79-4f23-bc5e-c85aac1d327d", + "uuid": "2148ad33-07e8-4a41-8aba-484ccf77d403", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-TaxaInDatasets-test.js", - "file": "/test/v1.5-apps-TaxaInDatasets-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxaindatasets-test.js", + "file": "/test/v2.0-apps-taxaindatasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of taxon identities with associated dataset IDs.\"", - "fullTitle": "tests for /v1.5/apps/TaxaInDatasets tests for get should respond 200 for \"An array of taxon identities with associated dataset IDs.\"", + "title": "should respond 200 for \"A list of all taxa in neotoma and the datasets in which they are found.\"", + "fullTitle": "tests for /v2.0/apps/taxaindatasets tests for get should respond 200 for \"A list of all taxa in neotoma and the datasets in which they are found.\"", "timedOut": false, - "duration": 7166, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/TaxaInDatasets', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "e500ebf2-2954-49f7-a59b-9f9a45b9c4db", - "parentUUID": "52ecfe3a-0c79-4f23-bc5e-c85aac1d327d", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taxaindatasets', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "57e254b0-c51a-4ed1-9fb3-79e874124939", + "parentUUID": "2148ad33-07e8-4a41-8aba-484ccf77d403", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "e500ebf2-2954-49f7-a59b-9f9a45b9c4db" + "passes": [], + "failures": [ + "57e254b0-c51a-4ed1-9fb3-79e874124939" ], - "failures": [], "pending": [], "skipped": [], - "duration": 7166, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -1994,49 +1894,53 @@ "_timeout": 900000 }, { - "uuid": "48fa8509-c347-4876-8417-3cd6e68c330b", - "title": "tests for /v2.0/data/contacts/{contactid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-test.js", - "file": "/test/v2.0-data-contacts-{contactid}-test.js", + "uuid": "f2956282-271d-413e-88ec-5e2d7057c13d", + "title": "tests for /v2.0/data/datasets/{datasetid}/doi", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-doi-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-doi-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "b21ef8be-3813-417d-b7bc-c1b52170d099", + "uuid": "65d03f96-9054-459e-a256-eb9289fb697c", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-test.js", - "file": "/test/v2.0-data-contacts-{contactid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-doi-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-doi-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A Neotoma contacts object.\"", - "fullTitle": "tests for /v2.0/data/contacts/{contactid} tests for get should respond 200 for \"A Neotoma contacts object.\"", + "title": "should respond 200 for \"DOI\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/doi tests for get should respond 200 for \"DOI\"", "timedOut": false, - "duration": 68, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/7269', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "07c69279-d6fa-473c-a904-04f77976f804", - "parentUUID": "b21ef8be-3813-417d-b7bc-c1b52170d099", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/doi', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "d095b2eb-1152-4521-ad27-62ec2666d18b", + "parentUUID": "65d03f96-9054-459e-a256-eb9289fb697c", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "07c69279-d6fa-473c-a904-04f77976f804" + "passes": [], + "failures": [ + "d095b2eb-1152-4521-ad27-62ec2666d18b" ], - "failures": [], "pending": [], "skipped": [], - "duration": 68, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2052,49 +1956,53 @@ "_timeout": 900000 }, { - "uuid": "0f65ca79-4a9e-4654-83bd-8b401aab5b0d", - "title": "tests for /v2.0/data/taxa", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-test.js", - "file": "/test/v2.0-data-taxa-test.js", + "uuid": "46c7de2b-e415-497e-8709-69cb8849fe99", + "title": "tests for /v2.0/data/datasets/{datasetid}/projects", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-projects-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-projects-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "c7e3c833-355d-464e-abb2-c76ed358d7df", + "uuid": "f23f76d2-b293-47ee-a146-80a6a457d849", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-test.js", - "file": "/test/v2.0-data-taxa-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-projects-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-projects-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A taxon or array of taxa.\"", - "fullTitle": "tests for /v2.0/data/taxa tests for get should respond 200 for \"A taxon or array of taxa.\"", + "title": "should respond 200 for \"Projects\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/projects tests for get should respond 200 for \"Projects\"", "timedOut": false, - "duration": 152, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa', { \n 'qs': {\"taxonname\":\"aliqua ullamco Lorem\",\"taxagroup\":\"aliquip laboris nostrud\",\"ecolgroup\":\"ut ad\",\"status\":true,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "f8d9b3c0-18a3-4194-9176-1e043ba4c717", - "parentUUID": "c7e3c833-355d-464e-abb2-c76ed358d7df", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/projects', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ac90b92d-6b46-4cd2-98f2-5801500df1e9", + "parentUUID": "f23f76d2-b293-47ee-a146-80a6a457d849", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "f8d9b3c0-18a3-4194-9176-1e043ba4c717" + "passes": [], + "failures": [ + "ac90b92d-6b46-4cd2-98f2-5801500df1e9" ], - "failures": [], "pending": [], "skipped": [], - "duration": 152, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2110,49 +2018,53 @@ "_timeout": 900000 }, { - "uuid": "9ee7e2a2-dae4-4416-b12f-4244d40ca107", - "title": "tests for /v2.0/apps/constdb/datasetuploads", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetuploads-test.js", - "file": "/test/v2.0-apps-constdb-datasetuploads-test.js", + "uuid": "ffab5900-596f-423f-a933-7c9c67e73fa5", + "title": "tests for /v2.0/data/datasets_elc/{datasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-{datasetid}-test.js", + "file": "/test/v2.0-data-datasets_elc-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "d556af3f-fe74-41d2-9654-5d7f0d4cc383", + "uuid": "69be6167-d6b6-4d0e-9dd1-3aeaca8c1cdb", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetuploads-test.js", - "file": "/test/v2.0-apps-constdb-datasetuploads-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-{datasetid}-test.js", + "file": "/test/v2.0-data-datasets_elc-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", - "fullTitle": "tests for /v2.0/apps/constdb/datasetuploads tests for get should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", + "title": "should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", + "fullTitle": "tests for /v2.0/data/datasets_elc/{datasetid} tests for get should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", "timedOut": false, - "duration": 84, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetuploads', { \n 'qs': {\"dbid\":17},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "75992bb6-efed-49f5-9e67-524002925b9e", - "parentUUID": "d556af3f-fe74-41d2-9654-5d7f0d4cc383", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets_elc/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "c12d5170-dec4-482d-85e9-0fe5d54b46a2", + "parentUUID": "69be6167-d6b6-4d0e-9dd1-3aeaca8c1cdb", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "75992bb6-efed-49f5-9e67-524002925b9e" + "passes": [], + "failures": [ + "c12d5170-dec4-482d-85e9-0fe5d54b46a2" ], - "failures": [], "pending": [], "skipped": [], - "duration": 84, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2168,49 +2080,53 @@ "_timeout": 900000 }, { - "uuid": "5060d849-3628-4d0a-9047-71d2b955e1fd", - "title": "tests for /v2.0/data/geopoliticalunits", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-test.js", - "file": "/test/v2.0-data-geopoliticalunits-test.js", + "uuid": "35e6e610-0820-4b44-98df-d88e194dbfca", + "title": "tests for /v2.0/data/sites/{siteid}/contacts", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-contacts-test.js", + "file": "/test/v2.0-data-sites-{siteid}-contacts-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "20e90990-71c4-43d9-afb2-aa3277f4540c", + "uuid": "70fd1b0f-1752-4570-874f-9a7897c72d26", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-test.js", - "file": "/test/v2.0-data-geopoliticalunits-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-contacts-test.js", + "file": "/test/v2.0-data-sites-{siteid}-contacts-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of geopolitical units.\"", - "fullTitle": "tests for /v2.0/data/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"", + "title": "should respond 200 for \"contact\"", + "fullTitle": "tests for /v2.0/data/sites/{siteid}/contacts tests for get should respond 200 for \"contact\"", "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits', { \n 'qs': {\"gpid\":5392,\"gpname\":\"Canada\",\"rank\":3,\"lower\":false},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "6d2bce92-d8f3-42a8-9896-9bf7fba502b1", - "parentUUID": "20e90990-71c4-43d9-afb2-aa3277f4540c", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/contacts', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "9fb244e2-ff93-47eb-84b4-9621686cd8f6", + "parentUUID": "70fd1b0f-1752-4570-874f-9a7897c72d26", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "6d2bce92-d8f3-42a8-9896-9bf7fba502b1" + "passes": [], + "failures": [ + "9fb244e2-ff93-47eb-84b4-9621686cd8f6" ], - "failures": [], "pending": [], "skipped": [], - "duration": 72, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2226,49 +2142,53 @@ "_timeout": 900000 }, { - "uuid": "c55de71d-6fee-4f53-b7dd-5671aa6552cc", - "title": "tests for /v2.0/data/spatial/icesheet", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-icesheet-test.js", - "file": "/test/v2.0-data-spatial-icesheet-test.js", + "uuid": "bef26341-bb6a-42bd-9cec-ff0976e179e0", + "title": "tests for /v1.5/data/geopoliticalunits", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-test.js", + "file": "/test/v1.5-data-geopoliticalunits-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "a325f2a1-17de-4c00-ae48-985b72cf2f70", + "uuid": "a8246b60-8a35-4f44-a11f-7b5d8a5aa874", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-icesheet-test.js", - "file": "/test/v2.0-data-spatial-icesheet-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-test.js", + "file": "/test/v1.5-data-geopoliticalunits-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An object containing glacial extents for the selected time period (in **calibrated radiocarbon years**). \"", - "fullTitle": "tests for /v2.0/data/spatial/icesheet tests for get should respond 200 for \"An object containing glacial extents for the selected time period (in **calibrated radiocarbon years**). \"", + "title": "should respond 200 for \"An array of geopolitical units.\"", + "fullTitle": "tests for /v1.5/data/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"", "timedOut": false, - "duration": 273, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/icesheet', { \n 'qs': {\"age\":16742,\"proj\": 4326,\"prec\": 1000},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "a81eddc8-59db-4d48-bd7e-e61dec321347", - "parentUUID": "a325f2a1-17de-4c00-ae48-985b72cf2f70", + "code": "var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits', { \n 'qs': {\"gpid\":5392,\"gpname\":\"Canada\",\"rank\":4,\"lower\":true},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "5576246c-4623-43be-8375-1d66e7d3542a", + "parentUUID": "a8246b60-8a35-4f44-a11f-7b5d8a5aa874", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "a81eddc8-59db-4d48-bd7e-e61dec321347" + "passes": [], + "failures": [ + "5576246c-4623-43be-8375-1d66e7d3542a" ], - "failures": [], "pending": [], "skipped": [], - "duration": 273, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2284,49 +2204,53 @@ "_timeout": 900000 }, { - "uuid": "ee9effef-f0c5-481a-a127-3d1b732c7521", - "title": "tests for /v2.0/data/pollen/{id}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-{id}-test.js", - "file": "/test/v2.0-data-pollen-{id}-test.js", + "uuid": "76d80c93-c5e9-4e4b-9fe4-70f9fa763c41", + "title": "tests for /v2.0/data/datasets/{datasetid}/publications", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-publications-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-publications-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "9944967e-4ede-4a56-a79d-210fdfa34674", + "uuid": "6f0f565d-db42-4cfb-8594-4453f9b79b82", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-{id}-test.js", - "file": "/test/v2.0-data-pollen-{id}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-publications-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-publications-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", - "fullTitle": "tests for /v2.0/data/pollen/{id} tests for get should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", + "title": "should respond 200 for \"Publication\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/publications tests for get should respond 200 for \"Publication\"", "timedOut": false, - "duration": 5, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/pollen/5379', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "c5872fa8-29fc-4586-bb6c-4e8a83c2fd6c", - "parentUUID": "9944967e-4ede-4a56-a79d-210fdfa34674", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/publications', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "66985902-94a9-4090-a8b1-3ad758dac39e", + "parentUUID": "6f0f565d-db42-4cfb-8594-4453f9b79b82", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "c5872fa8-29fc-4586-bb6c-4e8a83c2fd6c" + "passes": [], + "failures": [ + "66985902-94a9-4090-a8b1-3ad758dac39e" ], - "failures": [], "pending": [], "skipped": [], - "duration": 5, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2342,49 +2266,53 @@ "_timeout": 900000 }, { - "uuid": "51ce9bfb-c6cf-412f-8128-d5c451ecce9f", - "title": "tests for /v1.5/data/geopoliticalunits", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-test.js", - "file": "/test/v1.5-data-geopoliticalunits-test.js", + "uuid": "419dab6a-05c9-4729-9352-f7be3261e287", + "title": "tests for /v2.0/data/contacts/{contactid}/publications", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-publications-test.js", + "file": "/test/v2.0-data-contacts-{contactid}-publications-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "f7b4ab1a-063d-4f45-bedd-00bba63fdbfa", + "uuid": "f9cfea1a-65ea-4597-b3d9-a2a0f9dd1728", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-test.js", - "file": "/test/v1.5-data-geopoliticalunits-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-publications-test.js", + "file": "/test/v2.0-data-contacts-{contactid}-publications-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of geopolitical units.\"", - "fullTitle": "tests for /v1.5/data/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"", + "title": "should respond 200 for \"An array of publications associated with the contact.\"", + "fullTitle": "tests for /v2.0/data/contacts/{contactid}/publications tests for get should respond 200 for \"An array of publications associated with the contact.\"", "timedOut": false, - "duration": 98, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits', { \n 'qs': {\"gpid\":5392,\"gpname\":\"Canada\",\"rank\":3,\"lower\":true},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "41eeae47-7a3e-4c4e-a40d-34fff8233cb6", - "parentUUID": "f7b4ab1a-063d-4f45-bedd-00bba63fdbfa", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/500/publications', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ac6985a6-fdad-49fc-9ae0-8f7ad40e82d8", + "parentUUID": "f9cfea1a-65ea-4597-b3d9-a2a0f9dd1728", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "41eeae47-7a3e-4c4e-a40d-34fff8233cb6" + "passes": [], + "failures": [ + "ac6985a6-fdad-49fc-9ae0-8f7ad40e82d8" ], - "failures": [], "pending": [], "skipped": [], - "duration": 98, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2400,49 +2328,53 @@ "_timeout": 900000 }, { - "uuid": "73701b41-4692-4225-8935-f819298bd08a", - "title": "tests for /v2.0/data/sites/{siteid}/chronologies", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-chronologies-test.js", - "file": "/test/v2.0-data-sites-{siteid}-chronologies-test.js", + "uuid": "ff158667-7b2a-4da9-bf7e-3337f5e0f609", + "title": "tests for /v2.0/data/occurrences/{occurrenceid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-{occurrenceid}-test.js", + "file": "/test/v2.0-data-occurrences-{occurrenceid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "cabc43b5-4f44-4eeb-88f9-b16b2daf4dda", + "uuid": "f94cdafa-a862-473e-9894-f373d7be9135", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-chronologies-test.js", - "file": "/test/v2.0-data-sites-{siteid}-chronologies-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-{occurrenceid}-test.js", + "file": "/test/v2.0-data-occurrences-{occurrenceid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"chronology\"", - "fullTitle": "tests for /v2.0/data/sites/{siteid}/chronologies tests for get should respond 200 for \"chronology\"", + "title": "should respond 200 for \"occurrence\"", + "fullTitle": "tests for /v2.0/data/occurrences/{occurrenceid} tests for get should respond 200 for \"occurrence\"", "timedOut": false, - "duration": 84, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/1641/chronologies', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "c9cd2e15-29d8-4dea-97f7-51aebe9fba1e", - "parentUUID": "cabc43b5-4f44-4eeb-88f9-b16b2daf4dda", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/occurrences/500', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "62acf73b-d5ff-43bb-8d1a-96706e7f4c51", + "parentUUID": "f94cdafa-a862-473e-9894-f373d7be9135", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "c9cd2e15-29d8-4dea-97f7-51aebe9fba1e" + "passes": [], + "failures": [ + "62acf73b-d5ff-43bb-8d1a-96706e7f4c51" ], - "failures": [], "pending": [], "skipped": [], - "duration": 84, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2458,49 +2390,53 @@ "_timeout": 900000 }, { - "uuid": "65edbdc9-78d4-45f8-9558-4167ba0a8110", - "title": "tests for /v2.0/data/publications/{publicationid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-{publicationid}-test.js", - "file": "/test/v2.0-data-publications-{publicationid}-test.js", + "uuid": "d5da15ca-a070-48df-a484-d135c911c32b", + "title": "tests for /v2.0/data/sites/{siteid}/datasets", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets-test.js", + "file": "/test/v2.0-data-sites-{siteid}-datasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "4c85feec-d76f-4285-8369-0a2497b2aed2", + "uuid": "6cfc8380-515b-4e73-b3bb-2073df98d8c8", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-{publicationid}-test.js", - "file": "/test/v2.0-data-publications-{publicationid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets-test.js", + "file": "/test/v2.0-data-sites-{siteid}-datasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A list of publications.\"", - "fullTitle": "tests for /v2.0/data/publications/{publicationid} tests for get should respond 200 for \"A list of publications.\"", + "title": "should respond 200 for \"An array of datasets.\"", + "fullTitle": "tests for /v2.0/data/sites/{siteid}/datasets tests for get should respond 200 for \"An array of datasets.\"", "timedOut": false, - "duration": 74, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/publications/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "04d990b5-7d1e-4d9e-9eab-2e632fa584c5", - "parentUUID": "4c85feec-d76f-4285-8369-0a2497b2aed2", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/datasets', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "953112ef-461f-4968-bdf0-4e8055846ab0", + "parentUUID": "6cfc8380-515b-4e73-b3bb-2073df98d8c8", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "04d990b5-7d1e-4d9e-9eab-2e632fa584c5" + "passes": [], + "failures": [ + "953112ef-461f-4968-bdf0-4e8055846ab0" ], - "failures": [], "pending": [], "skipped": [], - "duration": 74, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2516,49 +2452,53 @@ "_timeout": 900000 }, { - "uuid": "0c210bcf-1ce7-4f04-b333-e347033032b9", - "title": "tests for /v2.0/data/datasets/{datasetid}/doi", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-doi-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-doi-test.js", + "uuid": "ef51f1cf-5013-4c89-b03f-ad868a487800", + "title": "tests for /v2.0/data/taxa/{taxonid}/occurrences", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", + "file": "/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "9da26cd0-4276-4be8-b8b6-9bd19305bd19", + "uuid": "5b826aee-2b0f-4eff-98ed-94d543d8419f", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-doi-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-doi-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", + "file": "/test/v2.0-data-taxa-{taxonid}-occurrences-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"DOI\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/doi tests for get should respond 200 for \"DOI\"", + "title": "should respond 200 for \"occurrence\"", + "fullTitle": "tests for /v2.0/data/taxa/{taxonid}/occurrences tests for get should respond 200 for \"occurrence\"", "timedOut": false, - "duration": 69, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/doi', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "f3816f74-1e42-4224-a08f-71064e847c18", - "parentUUID": "9da26cd0-4276-4be8-b8b6-9bd19305bd19", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa/500/occurrences', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "5f8ecb7f-e7f9-443a-8dfd-4df827d4f5cc", + "parentUUID": "5b826aee-2b0f-4eff-98ed-94d543d8419f", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "f3816f74-1e42-4224-a08f-71064e847c18" + "passes": [], + "failures": [ + "5f8ecb7f-e7f9-443a-8dfd-4df827d4f5cc" ], - "failures": [], "pending": [], "skipped": [], - "duration": 69, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2574,279 +2514,115 @@ "_timeout": 900000 }, { - "uuid": "4a64f792-0a12-4fa9-bdfb-f3dcf7a421b7", - "title": "tests for /v2.0/data/dbtables/{table}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-dbtables-{table}-test.js", - "file": "/test/v2.0-data-dbtables-{table}-test.js", + "uuid": "4ddd703d-5635-4fe1-88f0-2f0bcfdc306d", + "title": "tests for /v2.0/data/sites/{siteid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-test.js", + "file": "/test/v2.0-data-sites-{siteid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "fadac25a-3669-4fd3-895f-cef401741185", + "uuid": "09ab9c42-f7d2-42af-90a5-5500a0ae6e83", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-dbtables-{table}-test.js", - "file": "/test/v2.0-data-dbtables-{table}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-test.js", + "file": "/test/v2.0-data-sites-{siteid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returned table.\"", - "fullTitle": "tests for /v2.0/data/dbtables/{table} tests for get should respond 200 for \"Returned table.\"", + "title": "should respond 200 for \"An array of sites.\"", + "fullTitle": "tests for /v2.0/data/sites/{siteid} tests for get should respond 200 for \"An array of sites.\"", "timedOut": false, - "duration": 69, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/dbtables/pariatursintnisi', { \n 'qs': {\"count\":false,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "a358abc9-4792-4b11-b720-f1c2dbb05179", - "parentUUID": "fadac25a-3669-4fd3-895f-cef401741185", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "61797fb9-9312-419b-94b3-1cf5a3e223c6", + "parentUUID": "09ab9c42-f7d2-42af-90a5-5500a0ae6e83", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "a358abc9-4792-4b11-b720-f1c2dbb05179" + "passes": [], + "failures": [ + "61797fb9-9312-419b-94b3-1cf5a3e223c6" ], - "failures": [], "pending": [], "skipped": [], - "duration": 69, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 } ], - "passes": [], - "failures": [], - "pending": [], - "skipped": [], - "duration": 0, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - }, - { - "uuid": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "title": "Get contact data:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/contacts.js", - "file": "/test/contacts.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "The default limit of 25 should be reached for contact data:", - "fullTitle": "Get contact data: The default limit of 25 should be reached for contact data:", - "timedOut": false, - "duration": 74, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/contacts/?contactstatus=retired')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 25);\n done();\n });", - "err": {}, - "uuid": "bf07d4e1-3b01-4bd0-81ac-beee35d9155e", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - }, - { - "title": "The example in the swagger should return an object:", - "fullTitle": "Get contact data: The example in the swagger should return an object:", - "timedOut": false, - "duration": 81, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/contacts?familyname=Grimm&contactstatus=active&limit=25')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data[0]['familyname'], 'Grimm');\n done();\n });", - "err": {}, - "uuid": "b2b42c32-b01f-43b4-97f3-8aa707b7c6d3", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - }, - { - "title": "Contact queries should be case insensitive:", - "fullTitle": "Get contact data: Contact queries should be case insensitive:", - "timedOut": false, - "duration": 75, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/contacts/?contactstatus=Retired')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 25);\n done();\n });", - "err": {}, - "uuid": "518944e6-ea9e-4d8b-93b6-eab7994f6096", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - }, - { - "title": "Changing the limit should change the number of contacts retrieved:", - "fullTitle": "Get contact data: Changing the limit should change the number of contacts retrieved:", - "timedOut": false, - "duration": 76, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/contacts/?status=retired&limit=30')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 30);\n done();\n });", - "err": {}, - "uuid": "1b4bf138-46c6-43cb-ad6a-bf8675d5279a", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - }, - { - "title": "A single contact (12) should be returned.", - "fullTitle": "Get contact data: A single contact (12) should be returned.", - "timedOut": false, - "duration": 75, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/contacts/12')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data[0]['contactid'], 12);\n done();\n });", - "err": {}, - "uuid": "61caad56-9682-410c-935d-9a2432976ded", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - }, - { - "title": "All contacts from datasets should be returned.", - "fullTitle": "Get contact data: All contacts from datasets should be returned.", - "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/datasets/12,13/contacts')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 2);\n done();\n });", - "err": {}, - "uuid": "cfdb9e5b-4ce7-4d0c-939e-38f8cb736eea", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - }, - { - "title": "The length of returned contacts should be equivalent to the number of datasets.", - "fullTitle": "Get contact data: The length of returned contacts should be equivalent to the number of datasets.", - "timedOut": false, - "duration": 101, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/datasets/12,13/contacts')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n const test = [];\n assert.strictEqual(test.length, 0);\n done();\n });", - "err": {}, - "uuid": "c74972ce-ac7d-4ccd-9073-a2f850b4f0c1", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - }, - { - "title": "The length of returned contacts should be equivalent to the number of sites.", - "fullTitle": "Get contact data: The length of returned contacts should be equivalent to the number of sites.", - "timedOut": false, - "duration": 74, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/datasets/102,1435,1,27/contacts')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(Object.keys(res.body.data).length, 4);\n done();\n });", - "err": {}, - "uuid": "77da9e68-1631-417b-a81b-9cde9b9aab85", - "parentUUID": "97e7f315-8d81-4bcd-a02a-8b83849a3724", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "bf07d4e1-3b01-4bd0-81ac-beee35d9155e", - "b2b42c32-b01f-43b4-97f3-8aa707b7c6d3", - "518944e6-ea9e-4d8b-93b6-eab7994f6096", - "1b4bf138-46c6-43cb-ad6a-bf8675d5279a", - "61caad56-9682-410c-935d-9a2432976ded", - "cfdb9e5b-4ce7-4d0c-939e-38f8cb736eea", - "c74972ce-ac7d-4ccd-9073-a2f850b4f0c1", - "77da9e68-1631-417b-a81b-9cde9b9aab85" - ], + "passes": [], "failures": [], "pending": [], "skipped": [], - "duration": 628, + "duration": 0, "root": false, "rootEmpty": false, - "_timeout": 5000 + "_timeout": 900000 }, { - "uuid": "c1d26cf0-83c5-455b-b5aa-606373d8d3cc", - "title": "tests for /v2.0/data/contacts/{contactid}/publications", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-publications-test.js", - "file": "/test/v2.0-data-contacts-{contactid}-publications-test.js", + "uuid": "f429ef95-c814-40fc-af44-e0b86b12d25e", + "title": "tests for /v2.0/data/taxa/{taxonid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-test.js", + "file": "/test/v2.0-data-taxa-{taxonid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "a4932026-6ed2-4028-adc8-18e2870dbed0", + "uuid": "1f9fb5bf-17ac-448c-b930-e86d44567385", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-publications-test.js", - "file": "/test/v2.0-data-contacts-{contactid}-publications-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-taxa-{taxonid}-test.js", + "file": "/test/v2.0-data-taxa-{taxonid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of publications associated with the contact.\"", - "fullTitle": "tests for /v2.0/data/contacts/{contactid}/publications tests for get should respond 200 for \"An array of publications associated with the contact.\"", + "title": "should respond 200 for \"A taxon or array of taxa.\"", + "fullTitle": "tests for /v2.0/data/taxa/{taxonid} tests for get should respond 200 for \"A taxon or array of taxa.\"", "timedOut": false, - "duration": 71, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/500/publications', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "dacfd742-f0eb-4765-bb6d-47b5a474544f", - "parentUUID": "a4932026-6ed2-4028-adc8-18e2870dbed0", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/taxa/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "1bfcd6d8-1e5f-4ce7-b382-e743e1af91ff", + "parentUUID": "1f9fb5bf-17ac-448c-b930-e86d44567385", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "dacfd742-f0eb-4765-bb6d-47b5a474544f" + "passes": [], + "failures": [ + "1bfcd6d8-1e5f-4ce7-b382-e743e1af91ff" ], - "failures": [], "pending": [], "skipped": [], - "duration": 71, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2862,88 +2638,158 @@ "_timeout": 900000 }, { - "uuid": "da91dbc5-c18d-4b19-ba65-71fbc01a451d", - "title": "Get chronology data by datasetid:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/chronologies.js", - "file": "/test/chronologies.js", + "uuid": "d7476af6-add4-4906-a823-2d1600cc0ad8", + "title": "Any path goes to the api documentation:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/neotoma_test.js", + "file": "/test/neotoma_test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "A call to two datasets returns two datasets of data:", - "fullTitle": "Get chronology data by datasetid: A call to two datasets returns two datasets of data:", + "title": "`api-docs` redirects to the api documentation.", + "fullTitle": "Any path goes to the api documentation: `api-docs` redirects to the api documentation.", "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets/684,1001/chronologies')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body['data'].length === 4;\n })\n .expect(200, done());", - "err": {}, - "uuid": "3396999a-e547-4195-9150-54325b3e685c", - "parentUUID": "da91dbc5-c18d-4b19-ba65-71fbc01a451d", + "code": "api.get('v2')\n .set('Accept', 'application/json')\n .expect(302, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "f77526a4-c271-4d32-8ab7-0eb4cf4cd757", + "parentUUID": "d7476af6-add4-4906-a823-2d1600cc0ad8", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "3396999a-e547-4195-9150-54325b3e685c" + "passes": [], + "failures": [ + "f77526a4-c271-4d32-8ab7-0eb4cf4cd757" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + }, + { + "uuid": "9487c77d-d066-43d5-811f-5e0b3e7c4090", + "title": "tests for /v2.0/data/dbtables/{table}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-dbtables-{table}-test.js", + "file": "/test/v2.0-data-dbtables-{table}-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [], + "suites": [ + { + "uuid": "08c012f6-e4f0-48b2-b5a4-75457a701599", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-dbtables-{table}-test.js", + "file": "/test/v2.0-data-dbtables-{table}-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"Returned table.\"", + "fullTitle": "tests for /v2.0/data/dbtables/{table} tests for get should respond 200 for \"Returned table.\"", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/dbtables/fugiatincididuntexid', { \n 'qs': {\"count\":true,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "934341c1-5b11-4745-96ea-fe66837d5f8c", + "parentUUID": "08c012f6-e4f0-48b2-b5a4-75457a701599", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "934341c1-5b11-4745-96ea-fe66837d5f8c" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + } ], + "passes": [], "failures": [], "pending": [], "skipped": [], "duration": 0, "root": false, "rootEmpty": false, - "_timeout": 5000 + "_timeout": 900000 }, { - "uuid": "cbdbf15b-852b-4aed-97a5-0c36c0c4b028", - "title": "tests for /v2.0/apps/constdb/datasetages", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetages-test.js", - "file": "/test/v2.0-apps-constdb-datasetages-test.js", + "uuid": "a5a29c59-f5e5-4242-849c-85e33a690874", + "title": "tests for /v2.0/data/geopoliticalunits", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-test.js", + "file": "/test/v2.0-data-geopoliticalunits-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "aed10d4b-f97a-4764-999c-4c43dc8492f6", + "uuid": "b7ba82de-5a8b-42fb-ac08-0937c05bccdb", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetages-test.js", - "file": "/test/v2.0-apps-constdb-datasetages-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-test.js", + "file": "/test/v2.0-data-geopoliticalunits-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", - "fullTitle": "tests for /v2.0/apps/constdb/datasetages tests for get should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", + "title": "should respond 200 for \"An array of geopolitical units.\"", + "fullTitle": "tests for /v2.0/data/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"", "timedOut": false, - "duration": 21641, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetages', { \n 'qs': {\"dbid\":2},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "f5dc263d-f6da-406f-9736-8dc661db50fc", - "parentUUID": "aed10d4b-f97a-4764-999c-4c43dc8492f6", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits', { \n 'qs': {\"gpid\":5392,\"gpname\":\"Canada\",\"rank\":3,\"lower\":false},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "5f3912ee-c6ff-4183-ad7c-d3afa77947b1", + "parentUUID": "b7ba82de-5a8b-42fb-ac08-0937c05bccdb", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "f5dc263d-f6da-406f-9736-8dc661db50fc" + "passes": [], + "failures": [ + "5f3912ee-c6ff-4183-ad7c-d3afa77947b1" ], - "failures": [], "pending": [], "skipped": [], - "duration": 21641, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -2959,49 +2805,115 @@ "_timeout": 900000 }, { - "uuid": "805213b7-c359-4b05-b3d8-6bf739a02990", - "title": "tests for /v2.0/apps/taxaindatasets", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxaindatasets-test.js", - "file": "/test/v2.0-apps-taxaindatasets-test.js", + "uuid": "4b981260-6f43-47cc-bf64-203aac3fae8d", + "title": "tests for /v1.5/data/downloads/{datasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-downloads-{datasetid}-test.js", + "file": "/test/v1.5-data-downloads-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "9bb2afe5-b4fd-43c9-8377-5ba4e819b681", + "uuid": "8d67bdfa-d540-4f64-8d0d-e50170698de9", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taxaindatasets-test.js", - "file": "/test/v2.0-apps-taxaindatasets-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-downloads-{datasetid}-test.js", + "file": "/test/v1.5-data-downloads-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A list of all taxa in neotoma and the datasets in which they are found.\"", - "fullTitle": "tests for /v2.0/apps/taxaindatasets tests for get should respond 200 for \"A list of all taxa in neotoma and the datasets in which they are found.\"", + "title": "should respond 200 for \"Returned download object.\"", + "fullTitle": "tests for /v1.5/data/downloads/{datasetid} tests for get should respond 200 for \"Returned download object.\"", "timedOut": false, - "duration": 6237, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taxaindatasets', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "32b53bce-9c07-4ae4-ae41-1043af9fea85", - "parentUUID": "9bb2afe5-b4fd-43c9-8377-5ba4e819b681", + "code": "var response = request('get', 'http://localhost:3001/v1.5/data/downloads/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "9bfe25bd-0e1e-4dde-9fd0-c60ee09e3bbc", + "parentUUID": "8d67bdfa-d540-4f64-8d0d-e50170698de9", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "9bfe25bd-0e1e-4dde-9fd0-c60ee09e3bbc" + ], + "pending": [], + "skipped": [], + "duration": 0, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + } + ], + "passes": [], + "failures": [], + "pending": [], + "skipped": [], + "duration": 0, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + }, + { + "uuid": "0b81f2db-9953-4d19-967a-06fd9051674e", + "title": "tests for /v2.0/data/publications", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-test.js", + "file": "/test/v2.0-data-publications-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [], + "suites": [ + { + "uuid": "83ae088c-5316-487e-8ade-31092fa41c01", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-test.js", + "file": "/test/v2.0-data-publications-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"A list of publications.\"", + "fullTitle": "tests for /v2.0/data/publications tests for get should respond 200 for \"A list of publications.\"", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/publications', { \n 'qs': {\"publicationid\":9035,\"datasetid\":12074338,\"siteid\":31854,\"familyname\":\"%qP\",\"pubtype\":\"Master's Thesis\",\"year\":1622,\"search\":\"ipsum aliqua tempor commodo\",\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "a29eb3d7-34e6-400f-b10c-9d752c9e7f5f", + "parentUUID": "83ae088c-5316-487e-8ade-31092fa41c01", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "32b53bce-9c07-4ae4-ae41-1043af9fea85" + "passes": [], + "failures": [ + "a29eb3d7-34e6-400f-b10c-9d752c9e7f5f" ], - "failures": [], "pending": [], "skipped": [], - "duration": 6237, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3017,49 +2929,53 @@ "_timeout": 900000 }, { - "uuid": "c096aea1-5898-46bb-8037-0ec6389f3887", - "title": "tests for /v2.0/data/pollen", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-test.js", - "file": "/test/v2.0-data-pollen-test.js", + "uuid": "db2b1613-cd58-4ecc-8fb6-090d2e3232d3", + "title": "tests for /v2.0/data/spatial/faunal", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-faunal-test.js", + "file": "/test/v2.0-data-spatial-faunal-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "639f3403-17d6-4e8f-a610-3dc44ea3b43b", + "uuid": "bb97ea0c-6764-4d0b-adae-f1d2a304eadc", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-pollen-test.js", - "file": "/test/v2.0-data-pollen-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-faunal-test.js", + "file": "/test/v2.0-data-spatial-faunal-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", - "fullTitle": "tests for /v2.0/data/pollen tests for get should respond 200 for \"A record of all pollen samples in time/space for a particular taxon.\"", + "title": "should respond 200 for \"An object containing all matched species names, identifiers and a GeoJSON polygon representing the UNIONed ranges for the selected species. All data is derived from:
* Mammal Diversity Database. (2020). Mammal Diversity Database (Version 1.2) [Data set]. Zenodo. DOI: [10.5281/zenodo.4139818](https://doi.org/10.5281/zenodo.4139818).
* Map of Life. (2021). Mammal range maps harmonised to the Mammals Diversity Database [Data set]. Map of Life. [10.48600/MOL-48VZ-P413](https://doi.org/10.48600/MOL-48VZ-P413) \"", + "fullTitle": "tests for /v2.0/data/spatial/faunal tests for get should respond 200 for \"An object containing all matched species names, identifiers and a GeoJSON polygon representing the UNIONed ranges for the selected species. All data is derived from:
* Mammal Diversity Database. (2020). Mammal Diversity Database (Version 1.2) [Data set]. Zenodo. DOI: [10.5281/zenodo.4139818](https://doi.org/10.5281/zenodo.4139818).
* Map of Life. (2021). Mammal range maps harmonised to the Mammals Diversity Database [Data set]. Map of Life. [10.48600/MOL-48VZ-P413](https://doi.org/10.48600/MOL-48VZ-P413) \"", "timedOut": false, - "duration": 2, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/pollen', { \n 'qs': {\"taxonname\":\"cillum velit in nostrud\",\"taxonid\":43692,\"siteid\":16565,\"sitename\":\"minim\",\"datasettype\":\"Metabarcoding aeDNA\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageof\":11194815,\"ageyoung\": 1000,\"ageold\": 10000,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "4dc50dcb-de22-41d6-b230-8d8b7693f2b5", - "parentUUID": "639f3403-17d6-4e8f-a610-3dc44ea3b43b", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/faunal', { \n 'qs': {\"sciname\":\"minim Excepteur\",\"proj\": 4326,\"prec\": 1000},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "7f6a477b-63bd-440b-b706-cf78ae5e3c5a", + "parentUUID": "bb97ea0c-6764-4d0b-adae-f1d2a304eadc", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "4dc50dcb-de22-41d6-b230-8d8b7693f2b5" + "passes": [], + "failures": [ + "7f6a477b-63bd-440b-b706-cf78ae5e3c5a" ], - "failures": [], "pending": [], "skipped": [], - "duration": 2, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3075,49 +2991,53 @@ "_timeout": 900000 }, { - "uuid": "271d2cd7-cd40-4fcc-b7d5-8be6590c2165", - "title": "tests for /v2.0/data/datasets/db", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-db-test.js", - "file": "/test/v2.0-data-datasets-db-test.js", + "uuid": "79cde071-f55c-4728-9702-1fada00361e6", + "title": "tests for /v2.0/data/geopoliticalunits/{gpid}/sites", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", + "file": "/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "66f3b495-ae67-4773-a209-52bb667b8853", + "uuid": "acbad722-31eb-4d4a-804f-980d8c4bea32", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-db-test.js", - "file": "/test/v2.0-data-datasets-db-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", + "file": "/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Datasets\"", - "fullTitle": "tests for /v2.0/data/datasets/db tests for get should respond 200 for \"Datasets\"", + "title": "should respond 200 for \"An array of sites.\"", + "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid}/sites tests for get should respond 200 for \"An array of sites.\"", "timedOut": false, - "duration": 23184, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/db', { \n 'qs': {\"limit\": 10,\"offset\": 0,\"database\":\"French Institute of Pondicherry Palynology and Paleoecology Database\"},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "d02e07b3-4cea-4668-a912-e312c6498d4c", - "parentUUID": "66f3b495-ae67-4773-a209-52bb667b8853", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/2029/sites', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "e6f9f177-d110-433c-9b50-f7131e0e282e", + "parentUUID": "acbad722-31eb-4d4a-804f-980d8c4bea32", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "d02e07b3-4cea-4668-a912-e312c6498d4c" + "passes": [], + "failures": [ + "e6f9f177-d110-433c-9b50-f7131e0e282e" ], - "failures": [], "pending": [], "skipped": [], - "duration": 23184, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3133,261 +3053,254 @@ "_timeout": 900000 }, { - "uuid": "af92f245-c372-4439-be5b-c66fed14c217", - "title": "Get datasets any number of ways:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/datasets.js", - "file": "/test/datasets.js", + "uuid": "d961c0ba-7538-408b-b2de-0745e729b5ec", + "title": "Get Neotoma data with geoJSON extents:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js", + "file": "/test/spatial.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "Asking for the datasets associated with Lake Tulane work:", - "fullTitle": "Get datasets any number of ways: Asking for the datasets associated with Lake Tulane work:", + "title": "Get occurrence data using a simple geoJSON:", + "fullTitle": "Get Neotoma data with geoJSON extents: Get occurrence data using a simple geoJSON:", "timedOut": false, - "duration": 1145, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/sites/2570/datasets')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).includes('site');\n })\n .expect(function(res) {\n return res.body['data'][0].site.siteid === 2570;\n })\n .expect(function(res) {\n return Object.keys(res.body['data'][0]['site']['datasets'][0]).includes('datasetid');\n })\n .expect(200, done);", - "err": {}, - "uuid": "43fac58a-1e25-480f-8287-e8206aebb5e1", - "parentUUID": "af92f245-c372-4439-be5b-c66fed14c217", + "code": "api.get('v2.0/data/occurrences?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "2488ce68-fe1a-420f-bcc7-a13551137ebb", + "parentUUID": "d961c0ba-7538-408b-b2de-0745e729b5ec", "isHook": false, "skipped": false }, { - "title": "Get dataset by singular id & return same id:", - "fullTitle": "Get datasets any number of ways: Get dataset by singular id & return same id:", + "title": "Get site data using a simple geoJSON:", + "fullTitle": "Get Neotoma data with geoJSON extents: Get site data using a simple geoJSON:", "timedOut": false, - "duration": 1023, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['siteid'] === 12;\n })\n .expect(200, done);", - "err": {}, - "uuid": "55d6e3ae-a0cf-4e4e-b3a4-e3b68118c456", - "parentUUID": "af92f245-c372-4439-be5b-c66fed14c217", + "code": "api.get('v2.0/data/sites?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "ef457921-c8da-49f3-8f92-f52a15d412af", + "parentUUID": "d961c0ba-7538-408b-b2de-0745e729b5ec", "isHook": false, "skipped": false }, { - "title": "Get dataset from siteid gives us siteids back and datasets:", - "fullTitle": "Get datasets any number of ways: Get dataset from siteid gives us siteids back and datasets:", + "title": "Get dataset data using a simple geoJSON:", + "fullTitle": "Get Neotoma data with geoJSON extents: Get dataset data using a simple geoJSON:", "timedOut": false, - "duration": 1038, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/sites/123/datasets')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body['data'][0].site.siteid === 123;\n })\n .expect(function(res) {\n return res.body['data'][0].site.datasets.length > 0;\n })\n .expect(200, done);", - "err": {}, - "uuid": "fd6c934b-a66a-4813-9508-621211732727", - "parentUUID": "af92f245-c372-4439-be5b-c66fed14c217", + "code": "api.get('v2.0/data/datasets?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "4daefdae-fbc1-40c4-8ae6-952cba8571d7", + "parentUUID": "d961c0ba-7538-408b-b2de-0745e729b5ec", "isHook": false, "skipped": false - }, + } + ], + "suites": [], + "passes": [], + "failures": [ + "2488ce68-fe1a-420f-bcc7-a13551137ebb", + "ef457921-c8da-49f3-8f92-f52a15d412af", + "4daefdae-fbc1-40c4-8ae6-952cba8571d7" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 15000 + }, + { + "uuid": "8bc3140c-5b2d-45f9-949a-f7ad777503bc", + "title": "Get Neotoma data with WKT extents:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js", + "file": "/test/spatial.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ { - "title": "Get dataset by comma separated ids & return same ids:", - "fullTitle": "Get datasets any number of ways: Get dataset by comma separated ids & return same ids:", + "title": "Get occurrence data using a simple WKT:", + "fullTitle": "Get Neotoma data with WKT extents: Get occurrence data using a simple WKT:", "timedOut": false, - "duration": 1555, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets/?siteid=12,13,14')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data']).length > 0;\n })\n .expect(200, done);", - "err": {}, - "uuid": "3e9aaf26-a9e0-4cf2-a8fd-ad1b52028e44", - "parentUUID": "af92f245-c372-4439-be5b-c66fed14c217", + "code": "api.get('v2.0/data/occurrences?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "d4f5de02-f6c6-43d7-a842-ad6055aaadd5", + "parentUUID": "8bc3140c-5b2d-45f9-949a-f7ad777503bc", "isHook": false, "skipped": false }, { - "title": "Returns all key elements of the object:", - "fullTitle": "Get datasets any number of ways: Returns all key elements of the object:", + "title": "Get site data using a simple WKT:", + "fullTitle": "Get Neotoma data with WKT extents: Get site data using a simple WKT:", "timedOut": false, - "duration": 2, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data']).includes('site', 'dataset');\n })\n .expect(200, done);", - "err": {}, - "uuid": "1e1f0fd3-6623-42b6-a107-506ac3ad5df4", - "parentUUID": "af92f245-c372-4439-be5b-c66fed14c217", + "code": "api.get('v2.0/data/sites?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "b6901ccb-c683-4e56-a58a-a3b6c8d3e106", + "parentUUID": "8bc3140c-5b2d-45f9-949a-f7ad777503bc", "isHook": false, "skipped": false }, { - "title": "Limits work:", - "fullTitle": "Get datasets any number of ways: Limits work:", + "title": "Get dataset data using a simple WKT:", + "fullTitle": "Get Neotoma data with WKT extents: Get dataset data using a simple WKT:", "timedOut": false, - "duration": 23259, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets/?altmax=3&limit=10')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data']).length == 10;\n })\n .expect(200, done);", - "err": {}, - "uuid": "b21b7d84-46ce-4ec1-934a-ce3326046edd", - "parentUUID": "af92f245-c372-4439-be5b-c66fed14c217", + "code": "api.get('v2.0/data/datasets?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "32d2d7c4-8ca4-48d2-a714-972a20f5442e", + "parentUUID": "8bc3140c-5b2d-45f9-949a-f7ad777503bc", "isHook": false, "skipped": false }, { - "title": "Works with age validation:", - "fullTitle": "Get datasets any number of ways: Works with age validation:", + "title": "Get dataset data using a simple WKT:", + "fullTitle": "Get Neotoma data with WKT extents: Get dataset data using a simple WKT:", "timedOut": false, "duration": 0, - "state": "pending", + "state": "failed", "speed": null, "pass": false, - "fail": false, - "pending": true, + "fail": true, + "pending": false, "context": null, - "code": "", - "err": {}, - "uuid": "e4447084-52cb-4093-8636-3a41a8ef2666", - "parentUUID": "af92f245-c372-4439-be5b-c66fed14c217", + "code": "api.get('v2.0/data/datasets?loc=POLYGON((139.8%20-33.7,%20150.1%20-33.7,%20150.1%20-39.1,%20139.8%20-39.1,%20139.8%20-33.7))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "758d3dd5-2af3-4753-a7e6-da625c22fa57", + "parentUUID": "8bc3140c-5b2d-45f9-949a-f7ad777503bc", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "43fac58a-1e25-480f-8287-e8206aebb5e1", - "55d6e3ae-a0cf-4e4e-b3a4-e3b68118c456", - "fd6c934b-a66a-4813-9508-621211732727", - "3e9aaf26-a9e0-4cf2-a8fd-ad1b52028e44", - "1e1f0fd3-6623-42b6-a107-506ac3ad5df4", - "b21b7d84-46ce-4ec1-934a-ce3326046edd" - ], - "failures": [], - "pending": [ - "e4447084-52cb-4093-8636-3a41a8ef2666" - ], - "skipped": [], - "duration": 28022, - "root": false, - "rootEmpty": false, - "_timeout": 50000 - }, - { - "uuid": "3c00f758-763d-46bf-94ac-8dfc210a5833", - "title": "tests for /v2.0/apps/authorpis", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-authorpis-test.js", - "file": "/test/v2.0-apps-authorpis-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [], - "suites": [ - { - "uuid": "5624ee24-4833-4a73-b3cb-7a46e06ecc0a", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-authorpis-test.js", - "file": "/test/v2.0-apps-authorpis-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"A table of Neotoma collection types.\"", - "fullTitle": "tests for /v2.0/apps/authorpis tests for get should respond 200 for \"A table of Neotoma collection types.\"", - "timedOut": false, - "duration": 695, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/authorpis', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "5a87f470-5dcc-49e9-8205-9910e7833e28", - "parentUUID": "5624ee24-4833-4a73-b3cb-7a46e06ecc0a", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "5a87f470-5dcc-49e9-8205-9910e7833e28" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 695, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - } - ], "passes": [], - "failures": [], + "failures": [ + "d4f5de02-f6c6-43d7-a842-ad6055aaadd5", + "b6901ccb-c683-4e56-a58a-a3b6c8d3e106", + "32d2d7c4-8ca4-48d2-a714-972a20f5442e", + "758d3dd5-2af3-4753-a7e6-da625c22fa57" + ], "pending": [], "skipped": [], - "duration": 0, + "duration": 1, "root": false, "rootEmpty": false, - "_timeout": 900000 + "_timeout": 15000 }, { - "uuid": "ac7ad70b-a24b-46ba-80d7-d0b9d373805f", - "title": "tests for /v1.5/data/datasets/{datasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-datasets-{datasetid}-test.js", - "file": "/test/v1.5-data-datasets-{datasetid}-test.js", + "uuid": "81c3820a-b821-4f85-9a22-b0ff733824f3", + "title": "tests for /v2.0/data/sites", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-test.js", + "file": "/test/v2.0-data-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "328c60e3-9a0b-4aac-9856-314a5098f0ce", + "uuid": "11d27ed3-00b6-438b-9cb4-f666d69e3746", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-datasets-{datasetid}-test.js", - "file": "/test/v1.5-data-datasets-{datasetid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-test.js", + "file": "/test/v2.0-data-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of datasets.\"", - "fullTitle": "tests for /v1.5/data/datasets/{datasetid} tests for get should respond 200 for \"An array of datasets.\"", + "title": "should respond 200 for \"An array of sites.\"", + "fullTitle": "tests for /v2.0/data/sites tests for get should respond 200 for \"An array of sites.\"", "timedOut": false, - "duration": 1501, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/data/datasets/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "33e2f485-3121-43a7-848f-0c81b720ef9e", - "parentUUID": "328c60e3-9a0b-4aac-9856-314a5098f0ce", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites', { \n 'qs': {\"sitename\":\"eiusmod magna ea non\",\"database\":\"Canadian Museum of Nature-Delorme Ostracoda-Surface Samples\",\"datasettype\":\"physical sedimentology\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"siteid\":12024,\"datasetid\":10862338,\"doi\":\"108997793/60W554Q\",\"gpid\":5392,\"keyword\":\"pre-European\",\"contactid\":8422,\"taxa\":\"cillum aliqua ex\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":15621576,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "181db452-29c7-4543-88c8-30ff886ee4d8", + "parentUUID": "11d27ed3-00b6-438b-9cb4-f666d69e3746", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "33e2f485-3121-43a7-848f-0c81b720ef9e" + "passes": [], + "failures": [ + "181db452-29c7-4543-88c8-30ff886ee4d8" ], - "failures": [], "pending": [], "skipped": [], - "duration": 1501, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3403,49 +3316,53 @@ "_timeout": 900000 }, { - "uuid": "574bd9db-47f5-4489-8c15-59d03b275783", - "title": "tests for /v2.0/data/geopoliticalunits/{gpid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-test.js", - "file": "/test/v2.0-data-geopoliticalunits-{gpid}-test.js", + "uuid": "333033e0-3743-4b22-8b24-ae446d2241e1", + "title": "tests for /v2.0/data/spatial/icesheet", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-icesheet-test.js", + "file": "/test/v2.0-data-spatial-icesheet-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "069caa80-ba8f-488e-93bd-dbbaf02dc21d", + "uuid": "de40e2d0-8244-4d7c-8b68-f2d0bf2ff613", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-test.js", - "file": "/test/v2.0-data-geopoliticalunits-{gpid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-icesheet-test.js", + "file": "/test/v2.0-data-spatial-icesheet-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of geopolitical units.\"", - "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid} tests for get should respond 200 for \"An array of geopolitical units.\"", + "title": "should respond 200 for \"An object containing glacial extents for the selected time period (in **calibrated radiocarbon years**). \"", + "fullTitle": "tests for /v2.0/data/spatial/icesheet tests for get should respond 200 for \"An object containing glacial extents for the selected time period (in **calibrated radiocarbon years**). \"", "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/8242', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "b1b7fae0-3cc2-4360-99db-28c6eb976bc1", - "parentUUID": "069caa80-ba8f-488e-93bd-dbbaf02dc21d", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/icesheet', { \n 'qs': {\"age\":9672,\"proj\": 4326,\"prec\": 1000},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "3a39e7e5-594f-4b62-87ed-46bb4d3a8ece", + "parentUUID": "de40e2d0-8244-4d7c-8b68-f2d0bf2ff613", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "b1b7fae0-3cc2-4360-99db-28c6eb976bc1" + "passes": [], + "failures": [ + "3a39e7e5-594f-4b62-87ed-46bb4d3a8ece" ], - "failures": [], "pending": [], "skipped": [], - "duration": 72, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3461,49 +3378,53 @@ "_timeout": 900000 }, { - "uuid": "23b41bd9-9247-4ea8-97fc-f93ad4b9435a", - "title": "tests for /v2.0/apps/keywords", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-keywords-test.js", - "file": "/test/v2.0-apps-keywords-test.js", + "uuid": "159a4313-7518-46c5-abf5-ee1917f4c005", + "title": "tests for /v2.0/data/datasets/{datasetid}/assays", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-assays-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-assays-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "f2444027-3930-4a6e-83cb-ae0750d205da", + "uuid": "d53eb3f9-6cc3-49a8-a3bb-31fe7a2b235b", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-keywords-test.js", - "file": "/test/v2.0-apps-keywords-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-assays-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-assays-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A list of all keywords used for analysis units in the database.\"", - "fullTitle": "tests for /v2.0/apps/keywords tests for get should respond 200 for \"A list of all keywords used for analysis units in the database.\"", + "title": "should respond 200 for \"Assays\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/assays tests for get should respond 200 for \"Assays\"", "timedOut": false, - "duration": 72, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/keywords', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "a303d53e-3a7f-4c02-8d07-6b4cbbbbb54e", - "parentUUID": "f2444027-3930-4a6e-83cb-ae0750d205da", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/assays', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "d7a928ee-5166-4bef-8223-743f4306076b", + "parentUUID": "d53eb3f9-6cc3-49a8-a3bb-31fe7a2b235b", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "a303d53e-3a7f-4c02-8d07-6b4cbbbbb54e" + "passes": [], + "failures": [ + "d7a928ee-5166-4bef-8223-743f4306076b" ], - "failures": [], "pending": [], "skipped": [], - "duration": 72, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3519,49 +3440,53 @@ "_timeout": 900000 }, { - "uuid": "de308a87-afc3-4c51-b3bb-2e5b2f11b153", - "title": "tests for /v2.0/data/spatial/lakes", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-lakes-test.js", - "file": "/test/v2.0-data-spatial-lakes-test.js", + "uuid": "ebef9603-3ca3-4ca1-ae8a-59ac32c3b981", + "title": "tests for /v1.5/data/sites/{siteid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-sites-{siteid}-test.js", + "file": "/test/v1.5-data-sites-{siteid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "212e0792-1ba1-404c-b3f1-83c3adb821f0", + "uuid": "630e0f24-613c-4327-9065-e7d14952d591", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-lakes-test.js", - "file": "/test/v2.0-data-spatial-lakes-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-sites-{siteid}-test.js", + "file": "/test/v1.5-data-sites-{siteid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An object containing all matched lakes within some buffer distance of a site. Data derived from the [HydroLakes database](https://www.hydrosheds.org/products/hydrolakes):
* Messager, M.L., Lehner, B., Grill, G., Nedeva, I., Schmitt, O. (2016). Estimating the volume and age of water stored in global lakes using a geo-statistical approach. *Nature Communications*, 7: 13603. doi: [10.1038/ncomms13603](https://doi.org/10.1038/ncomms13603) \"", - "fullTitle": "tests for /v2.0/data/spatial/lakes tests for get should respond 200 for \"An object containing all matched lakes within some buffer distance of a site. Data derived from the [HydroLakes database](https://www.hydrosheds.org/products/hydrolakes):
* Messager, M.L., Lehner, B., Grill, G., Nedeva, I., Schmitt, O. (2016). Estimating the volume and age of water stored in global lakes using a geo-statistical approach. *Nature Communications*, 7: 13603. doi: [10.1038/ncomms13603](https://doi.org/10.1038/ncomms13603) \"", + "title": "should respond 200 for \"An array of site elements.\"", + "fullTitle": "tests for /v1.5/data/sites/{siteid} tests for get should respond 200 for \"An array of site elements.\"", "timedOut": false, - "duration": 78, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/lakes', { \n 'qs': {\"siteid\":49987,\"buffer\":3806,\"prec\": 1000,\"proj\": 4326},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "db6e2957-9b19-403d-b86a-5b205220d2f9", - "parentUUID": "212e0792-1ba1-404c-b3f1-83c3adb821f0", + "code": "var response = request('get', 'http://localhost:3001/v1.5/data/sites/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "89dde2c6-e607-463c-ac91-f3c820f6aef6", + "parentUUID": "630e0f24-613c-4327-9065-e7d14952d591", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "db6e2957-9b19-403d-b86a-5b205220d2f9" + "passes": [], + "failures": [ + "89dde2c6-e607-463c-ac91-f3c820f6aef6" ], - "failures": [], "pending": [], "skipped": [], - "duration": 78, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3577,236 +3502,500 @@ "_timeout": 900000 }, { - "uuid": "cc688fae-71ab-4164-b226-4799ed033d26", - "title": "Get Neotoma data with geoJSON extents:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js", - "file": "/test/spatial.js", + "uuid": "8ac4b074-0f3c-45e7-904c-1bfced02296f", + "title": "Get publication data any number of ways:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/publications.js", + "file": "/test/publications.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "Get occurrence data using a simple geoJSON:", - "fullTitle": "Get Neotoma data with geoJSON extents: Get occurrence data using a simple geoJSON:", + "title": "Get publication by singular id & return same id:", + "fullTitle": "Get publication data any number of ways: Get publication by singular id & return same id:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/publications/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data[0].publication.publicationid === 12;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "a48916c4-34aa-4842-9958-e0fd373b7d74", + "parentUUID": "8ac4b074-0f3c-45e7-904c-1bfced02296f", + "isHook": false, + "skipped": false + }, + { + "title": "Get publication by comma sepatarated ids:", + "fullTitle": "Get publication data any number of ways: Get publication by comma sepatarated ids:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/publications/12,13')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.map((x) => x.publicationid) == [12, 13];\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "473984a0-6c31-4859-812d-dba4213d79d1", + "parentUUID": "8ac4b074-0f3c-45e7-904c-1bfced02296f", + "isHook": false, + "skipped": false + }, + { + "title": "Get publication by querying author:", + "fullTitle": "Get publication data any number of ways: Get publication by querying author:", "timedOut": false, - "duration": 359, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/occurrences?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", - "err": {}, - "uuid": "e1c3a9d9-7e20-45bd-9722-878656b61e0e", - "parentUUID": "cc688fae-71ab-4164-b226-4799ed033d26", + "code": "api.get('v2.0/data/publications?familyname=Grimm')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.result.length > 0;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "cbeb432d-94dc-4cfd-852a-5c1c97949a0b", + "parentUUID": "8ac4b074-0f3c-45e7-904c-1bfced02296f", "isHook": false, "skipped": false }, { - "title": "Get site data using a simple geoJSON:", - "fullTitle": "Get Neotoma data with geoJSON extents: Get site data using a simple geoJSON:", + "title": "Get publications using pubs with missing links:", + "fullTitle": "Get publication data any number of ways: Get publications using pubs with missing links:", "timedOut": false, - "duration": 14094, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/sites?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", - "err": {}, - "uuid": "de8ec5e2-7291-4e2b-9548-20f4668b83d0", - "parentUUID": "cc688fae-71ab-4164-b226-4799ed033d26", + "code": "api.get('v2.0/data/publications?publicationid=12,14,1412,99999')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.result.length > 0;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "ee0a31a1-25c8-4156-8506-3d1617f2cb1c", + "parentUUID": "8ac4b074-0f3c-45e7-904c-1bfced02296f", "isHook": false, "skipped": false }, { - "title": "Get dataset data using a simple geoJSON:", - "fullTitle": "Get Neotoma data with geoJSON extents: Get dataset data using a simple geoJSON:", - "timedOut": true, - "duration": 15001, + "title": "Get publication by site id:", + "fullTitle": "Get publication data any number of ways: Get publication by site id:", + "timedOut": false, + "duration": 1, "state": "failed", "speed": null, "pass": false, "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets?loc={\"type\":\"Polygon\",\"coordinates\":[[[-104.053249,41.001406],[-103.497447,41.001635],[-102.865784,41.001988],[-102.556789,41.002219],[-102.051614,41.002377],[-102.051725,40.537839],[-102.051744,40.003078],[-102.050422,39.646048],[-102.048449,39.303138],[-102.045388,38.813392],[-102.045324,38.453647],[-102.044644,38.045532],[-102.041574,37.680436],[-102.041974,37.352613],[-102.04224,36.993083],[-102.698142,36.995149],[-102.814616,37.000783],[-103.002199,37.000104],[-103.733247,36.998016],[-104.338833,36.993535],[-105.000554,36.993264],[-105.1208,36.995428],[-105.62747,36.995679],[-106.201469,36.994122],[-106.869796,36.992426],[-106.877292,37.000139],[-107.420913,37.000005],[-108.000623,37.000001],[-108.249358,36.999015],[-108.620309,36.999287],[-109.045223,36.999084],[-109.04581,37.374993],[-109.041865,37.530726],[-109.041058,37.907236],[-109.041762,38.16469],[-109.060062,38.275489],[-109.059541,38.719888],[-109.054189,38.874984],[-109.051512,39.126095],[-109.051363,39.497674],[-109.050615,39.87497],[-109.050946,40.444368],[-109.048044,40.619231],[-109.050076,41.000659],[-108.884138,41.000094],[-108.250649,41.000114],[-107.625624,41.002124],[-106.857773,41.002663],[-106.453859,41.002057],[-106.217573,40.997734],[-105.730421,40.996886],[-105.277138,40.998173],[-104.855273,40.998048],[-104.675999,41.000957],[-104.053249,41.001406]]]}')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "code": "api.get('v2.0/data/sites/12/publications')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.length > 0;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "e4aa8f8f-34b8-4f31-9759-9f8c0e8d9f0e", + "parentUUID": "8ac4b074-0f3c-45e7-904c-1bfced02296f", + "isHook": false, + "skipped": false + }, + { + "title": "Get publication by site id finds pubs for all sites:", + "fullTitle": "Get publication data any number of ways: Get publication by site id finds pubs for all sites:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/sites/12,13,14,15/publications')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const flatten = (list) => list.reduce(\n (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [],\n );\n const sites = [12, 13, 14, 15];\n const siteids = flatten(res.body.data.map((x) => x.siteid));\n return sites.every((x) => siteids.includes(x));\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "203cc8a1-13fb-47d4-be87-5a118403eff6", + "parentUUID": "8ac4b074-0f3c-45e7-904c-1bfced02296f", + "isHook": false, + "skipped": false + }, + { + "title": "Get publication by dataset id finds pubs for all datasets:", + "fullTitle": "Get publication data any number of ways: Get publication by dataset id finds pubs for all datasets:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/12,13,2201,6000/publications')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const flatten = (list) => list.reduce(\n (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [],\n );\n const datasets = [12, 6000, 13, 2201];\n const datasetids = flatten(res.body.data.map((x) => x.datasetid));\n return datasets.every((x) => datasetids.includes(x));\n })\n .expect(200, done);", "err": { - "message": "Error: Timeout of 15000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js)", - "estack": "Error: Timeout of 15000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js)\n at createTimeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/errors.js:386:15)\n at Runnable._timeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:431:10)\n at Timeout. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:246:24)\n at listOnTimeout (node:internal/timers:614:17)\n at process.processTimers (node:internal/timers:549:7)", + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", "diff": null }, - "uuid": "9b8c7fe4-5523-4db0-a8ba-00323085156e", - "parentUUID": "cc688fae-71ab-4164-b226-4799ed033d26", + "uuid": "4ab73815-b7fe-48fe-bb81-8a024aa26778", + "parentUUID": "8ac4b074-0f3c-45e7-904c-1bfced02296f", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "e1c3a9d9-7e20-45bd-9722-878656b61e0e", - "de8ec5e2-7291-4e2b-9548-20f4668b83d0" - ], + "passes": [], "failures": [ - "9b8c7fe4-5523-4db0-a8ba-00323085156e" + "a48916c4-34aa-4842-9958-e0fd373b7d74", + "473984a0-6c31-4859-812d-dba4213d79d1", + "cbeb432d-94dc-4cfd-852a-5c1c97949a0b", + "ee0a31a1-25c8-4156-8506-3d1617f2cb1c", + "e4aa8f8f-34b8-4f31-9759-9f8c0e8d9f0e", + "203cc8a1-13fb-47d4-be87-5a118403eff6", + "4ab73815-b7fe-48fe-bb81-8a024aa26778" ], "pending": [], "skipped": [], - "duration": 29454, + "duration": 3, "root": false, "rootEmpty": false, "_timeout": 15000 }, { - "uuid": "04ec6e0b-5609-4b27-a3e2-98597d686215", - "title": "Get Neotoma data with WKT extents:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js", - "file": "/test/spatial.js", + "uuid": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", + "title": "Get taxon data:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js", + "file": "/test/taxa.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "Get occurrence data using a simple WKT:", - "fullTitle": "Get Neotoma data with WKT extents: Get occurrence data using a simple WKT:", + "title": "v2.0: An empty query returns the first 25 taxa.", + "fullTitle": "Get taxon data: v2.0: An empty query returns the first 25 taxa.", "timedOut": false, - "duration": 1224, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/occurrences?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", - "err": {}, - "uuid": "18dcbbfe-478f-49c8-a816-ce7b40e340b9", - "parentUUID": "04ec6e0b-5609-4b27-a3e2-98597d686215", + "code": "api.get('v2.0/data/taxa/')\n .set('Accept', 'application/json')\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "b8bb6764-bc79-4591-a0f7-0dbcdb1c96a6", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", "isHook": false, "skipped": false }, { - "title": "Get site data using a simple WKT:", - "fullTitle": "Get Neotoma data with WKT extents: Get site data using a simple WKT:", + "title": "v2.0: A single taxon should be returned by id:", + "fullTitle": "Get taxon data: v2.0: A single taxon should be returned by id:", "timedOut": false, - "duration": 530, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/sites?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", - "err": {}, - "uuid": "1e20f1f7-b174-42f3-8986-8be4d778382d", - "parentUUID": "04ec6e0b-5609-4b27-a3e2-98597d686215", + "code": "api.get('v2.0/data/taxa/12')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 12);\n done();\n if (err) {\n console.log(err.message);\n };\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js:33:32)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "721d0972-2295-4cd7-b23a-3e500ddb2b62", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", "isHook": false, "skipped": false }, { - "title": "Get dataset data using a simple WKT:", - "fullTitle": "Get Neotoma data with WKT extents: Get dataset data using a simple WKT:", - "timedOut": true, - "duration": 15001, + "title": "v2.0: Taxon queries should be case insensitive:", + "fullTitle": "Get taxon data: v2.0: Taxon queries should be case insensitive:", + "timedOut": false, + "duration": 0, "state": "failed", "speed": null, "pass": false, "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets?loc=POLYGON((-104.053249 41.001406,-103.497447 41.001635,-102.865784 41.001988,-102.556789 41.002219,-102.051614 41.002377,-102.051725 40.537839,-102.051744 40.003078,-102.050422 39.646048,-102.048449 39.303138,-102.045388 38.813392,-102.045324 38.453647,-102.044644 38.045532,-102.041574 37.680436,-102.041974 37.352613,-102.04224 36.993083,-102.698142 36.995149,-102.814616 37.000783,-103.002199 37.000104,-103.733247 36.998016,-104.338833 36.993535,-105.000554 36.993264,-105.1208 36.995428,-105.62747 36.995679,-106.201469 36.994122,-106.869796 36.992426,-106.877292 37.000139,-107.420913 37.000005,-108.000623 37.000001,-108.249358 36.999015,-108.620309 36.999287,-109.045223 36.999084,-109.04581 37.374993,-109.041865 37.530726,-109.041058 37.907236,-109.041762 38.16469,-109.060062 38.275489,-109.059541 38.719888,-109.054189 38.874984,-109.051512 39.126095,-109.051363 39.497674,-109.050615 39.87497,-109.050946 40.444368,-109.048044 40.619231,-109.050076 41.000659,-108.884138 41.000094,-108.250649 41.000114,-107.625624 41.002124,-106.857773 41.002663,-106.453859 41.002057,-106.217573 40.997734,-105.730421 40.996886,-105.277138 40.998173,-104.855273 40.998048,-104.675999 41.000957,-104.053249 41.001406))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "code": "api.get('v2.0/data/taxa/?taxonname=abies')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 1);\n done();\n if (err) {\n console.log(err.message);\n };\n });", "err": { - "message": "Error: Timeout of 15000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js)", - "estack": "Error: Timeout of 15000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js)\n at createTimeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/errors.js:386:15)\n at Runnable._timeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:431:10)\n at Timeout. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:246:24)\n at listOnTimeout (node:internal/timers:614:17)\n at process.processTimers (node:internal/timers:549:7)", + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js:45:32)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", "diff": null }, - "uuid": "6e2371ba-e6f4-448c-9cb7-8631eb9d4cae", - "parentUUID": "04ec6e0b-5609-4b27-a3e2-98597d686215", + "uuid": "e834a91d-8b4b-4bd2-9cdb-b91db885bc00", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", "isHook": false, "skipped": false }, { - "title": "Get dataset data using a simple WKT:", - "fullTitle": "Get Neotoma data with WKT extents: Get dataset data using a simple WKT:", - "timedOut": true, - "duration": 15002, + "title": "v2.0: Taxon queries should accept comma separated lists:", + "fullTitle": "Get taxon data: v2.0: Taxon queries should accept comma separated lists:", + "timedOut": false, + "duration": 0, "state": "failed", "speed": null, "pass": false, "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/datasets?loc=POLYGON((139.8%20-33.7,%20150.1%20-33.7,%20150.1%20-39.1,%20139.8%20-39.1,%20139.8%20-33.7))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200, done);", + "code": "api.get('v2.0/data/taxa/?taxonname=abies,picea')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 1);\n done();\n if (err) {\n console.log(err.message);\n };\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js:58:34)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "03062b68-6aff-4651-91f1-260722be86ef", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", + "isHook": false, + "skipped": false + }, + { + "title": "v2.0: Hierarchical taxon queries should accept comma separated lists:", + "fullTitle": "Get taxon data: v2.0: Hierarchical taxon queries should accept comma separated lists:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/taxa/?taxonname=abies,picea&lower=true')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n const data = res.body.data;\n const higher = [...new Set(data.map((x) => x.highertaxonid))];\n /* There should be four unique higher taxon IDs:\n * One for `Abies`\n * One for `Picea`\n * The rest pointing to Abies & Picea.\n */\n assert.strictEqual(higher.length, 4);\n done();\n if (err) {\n console.log(err.message);\n };\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js:71:28)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "386468cd-7e2e-4712-a235-776e48b1d119", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", + "isHook": false, + "skipped": false + }, + { + "title": "v2.0: Taxon queries should accept `*` as a wildcard:", + "fullTitle": "Get taxon data: v2.0: Taxon queries should accept `*` as a wildcard:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/taxa/?taxonname=abie*')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 1);\n done();\n if (err) {\n console.log(err.message);\n };\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js:90:32)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "2a5eebd0-3ebe-4c4f-bb2a-a37c2ab4a4f9", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", + "isHook": false, + "skipped": false + }, + { + "title": "v2.0: The default limit of 25 should be reached for taxon data:", + "fullTitle": "Get taxon data: v2.0: The default limit of 25 should be reached for taxon data:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/taxa/?taxonname=a*')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data.length, 25);\n done();\n if (err) {\n console.log(err.message);\n };\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js:103:34)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "cba94927-8e60-4cac-8afd-5ed7cf492e56", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", + "isHook": false, + "skipped": false + }, + { + "title": "v2.0: Changing the limit should change the number of taxa retrieved:", + "fullTitle": "Get taxon data: v2.0: Changing the limit should change the number of taxa retrieved:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/taxa/?taxonname=a*&limit=30')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data.length, 30);\n done();\n if (err) {\n console.log(err.message);\n };\n });", "err": { - "message": "Error: Timeout of 15000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js)", - "estack": "Error: Timeout of 15000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/spatial.js)\n at createTimeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/errors.js:386:15)\n at Runnable._timeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:431:10)\n at Timeout. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:246:24)\n at listOnTimeout (node:internal/timers:614:17)\n at process.processTimers (node:internal/timers:549:7)", + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js:116:34)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", "diff": null }, - "uuid": "4bc47658-876d-4e2a-8a1a-f03f947c0cf6", - "parentUUID": "04ec6e0b-5609-4b27-a3e2-98597d686215", + "uuid": "b3b6eada-dae2-433d-b3c6-93e3a95977d8", + "parentUUID": "7d1dd7fd-9f80-402d-b73c-1708e84cc383", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "18dcbbfe-478f-49c8-a816-ce7b40e340b9", - "1e20f1f7-b174-42f3-8986-8be4d778382d" - ], + "passes": [], "failures": [ - "6e2371ba-e6f4-448c-9cb7-8631eb9d4cae", - "4bc47658-876d-4e2a-8a1a-f03f947c0cf6" + "b8bb6764-bc79-4591-a0f7-0dbcdb1c96a6", + "721d0972-2295-4cd7-b23a-3e500ddb2b62", + "e834a91d-8b4b-4bd2-9cdb-b91db885bc00", + "03062b68-6aff-4651-91f1-260722be86ef", + "386468cd-7e2e-4712-a235-776e48b1d119", + "2a5eebd0-3ebe-4c4f-bb2a-a37c2ab4a4f9", + "cba94927-8e60-4cac-8afd-5ed7cf492e56", + "b3b6eada-dae2-433d-b3c6-93e3a95977d8" + ], + "pending": [], + "skipped": [], + "duration": 3, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + }, + { + "uuid": "1199da3f-b268-47f2-be79-1c39a2febe87", + "title": "tests for /v2.0/data/sites/{siteid}/datasets_elc", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", + "file": "/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [], + "suites": [ + { + "uuid": "14669617-6695-4338-923e-ef98045a87d2", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", + "file": "/test/v2.0-data-sites-{siteid}-datasets_elc-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"An array of datasets.\"", + "fullTitle": "tests for /v2.0/data/sites/{siteid}/datasets_elc tests for get should respond 200 for \"An array of datasets.\"", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/datasets_elc', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "c53d3e33-a3e5-4c17-9143-f8241d1c3aac", + "parentUUID": "14669617-6695-4338-923e-ef98045a87d2", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "c53d3e33-a3e5-4c17-9143-f8241d1c3aac" + ], + "pending": [], + "skipped": [], + "duration": 0, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + } ], + "passes": [], + "failures": [], "pending": [], "skipped": [], - "duration": 31757, + "duration": 0, "root": false, "rootEmpty": false, - "_timeout": 15000 + "_timeout": 900000 }, { - "uuid": "73363527-6811-48a9-816e-a45d71a1ba97", - "title": "tests for /v2.0/data/datasets/{datasetid}/chronologies", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", + "uuid": "d9f9bcd7-1208-4ecf-af13-a4ec14fd1f9a", + "title": "tests for /v2.0/data/summary/dsdbmonth", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dsdbmonth-test.js", + "file": "/test/v2.0-data-summary-dsdbmonth-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "88d0a61d-308a-4ccd-b3a2-909607dce39c", + "uuid": "a4faa2bc-0185-45ae-8f5e-6c140cc337ff", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-chronologies-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dsdbmonth-test.js", + "file": "/test/v2.0-data-summary-dsdbmonth-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"chronology\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/chronologies tests for get should respond 200 for \"chronology\"", + "title": "should respond 200 for \"A count of the datasets added by database for the requested period.\"", + "fullTitle": "tests for /v2.0/data/summary/dsdbmonth tests for get should respond 200 for \"A count of the datasets added by database for the requested period.\"", "timedOut": false, - "duration": 617, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/chronologies', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "c0f236e3-8be4-4de9-a0bb-6aaa9e84383f", - "parentUUID": "88d0a61d-308a-4ccd-b3a2-909607dce39c", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/dsdbmonth', { \n 'qs': {\"start\": 1,\"end\": 10},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "541eaafb-86d0-4863-9253-cd3b7771eedf", + "parentUUID": "a4faa2bc-0185-45ae-8f5e-6c140cc337ff", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "c0f236e3-8be4-4de9-a0bb-6aaa9e84383f" + "passes": [], + "failures": [ + "541eaafb-86d0-4863-9253-cd3b7771eedf" ], - "failures": [], "pending": [], "skipped": [], - "duration": 617, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -3822,221 +4011,391 @@ "_timeout": 900000 }, { - "uuid": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "title": "Get taxon data:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/taxa.js", - "file": "/test/taxa.js", + "uuid": "6e66039c-9aa4-4787-85e4-c1f1699d57e2", + "title": "Tests for Explorer App Services", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/explorerCalls.js", + "file": "/test/explorerCalls.js", "beforeHooks": [], "afterHooks": [], - "tests": [ - { - "title": "v2.0: An empty query returns the first 25 taxa.", - "fullTitle": "Get taxon data: v2.0: An empty query returns the first 25 taxa.", - "timedOut": false, - "duration": 205, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/')\n .set('Accept', 'application/json')\n .expect(200, done);", - "err": {}, - "uuid": "28cf7b4a-3fce-4037-8856-87e86631fb38", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false - }, - { - "title": "v2.0: A single taxon should be returned by id:", - "fullTitle": "Get taxon data: v2.0: A single taxon should be returned by id:", - "timedOut": false, - "duration": 83, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/12')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 12);\n done();\n if (err) {\n console.log(err.message);\n };\n });", - "err": {}, - "uuid": "2ba07dce-fe5c-47b7-9e24-7b96676f15c9", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false - }, - { - "title": "v2.0: Taxon queries should be case insensitive:", - "fullTitle": "Get taxon data: v2.0: Taxon queries should be case insensitive:", - "timedOut": false, - "duration": 274, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/?taxonname=abies')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 1);\n done();\n if (err) {\n console.log(err.message);\n };\n });", - "err": {}, - "uuid": "ef57be4f-4d76-4c56-b7cc-0f2d3917afe5", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false - }, - { - "title": "v2.0: Taxon queries should accept comma separated lists:", - "fullTitle": "Get taxon data: v2.0: Taxon queries should accept comma separated lists:", - "timedOut": false, - "duration": 221, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/?taxonname=abies,picea')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 1);\n done();\n if (err) {\n console.log(err.message);\n };\n });", - "err": {}, - "uuid": "f8e65c8c-814f-40dd-92b1-8fc014898b76", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false - }, - { - "title": "v2.0: Hierarchical taxon queries should accept comma separated lists:", - "fullTitle": "Get taxon data: v2.0: Hierarchical taxon queries should accept comma separated lists:", - "timedOut": false, - "duration": 625, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/?taxonname=abies,picea&lower=true')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n const data = res.body.data;\n const higher = [...new Set(data.map((x) => x.highertaxonid))];\n /* There should be four unique higher taxon IDs:\n * One for `Abies`\n * One for `Picea`\n * The rest pointing to Abies & Picea.\n */\n assert.strictEqual(higher.length, 4);\n done();\n if (err) {\n console.log(err.message);\n };\n });", - "err": {}, - "uuid": "28288c7a-c880-4a23-bfd4-7ad64f7ec137", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false - }, - { - "title": "v2.0: Taxon queries should accept `*` as a wildcard:", - "fullTitle": "Get taxon data: v2.0: Taxon queries should accept `*` as a wildcard:", - "timedOut": false, - "duration": 166, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/?taxonname=abie*')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data[0]['taxonid'], 1);\n done();\n if (err) {\n console.log(err.message);\n };\n });", - "err": {}, - "uuid": "d44a7ec5-3d3f-4963-a799-0e1fc83b4024", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false - }, - { - "title": "v2.0: The default limit of 25 should be reached for taxon data:", - "fullTitle": "Get taxon data: v2.0: The default limit of 25 should be reached for taxon data:", - "timedOut": false, - "duration": 1255, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/?taxonname=a*')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data.length, 25);\n done();\n if (err) {\n console.log(err.message);\n };\n });", - "err": {}, - "uuid": "5717f99a-70e8-4822-857c-a10832999e5f", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false - }, + "tests": [], + "suites": [ { - "title": "v2.0: Changing the limit should change the number of taxa retrieved:", - "fullTitle": "Get taxon data: v2.0: Changing the limit should change the number of taxa retrieved:", - "timedOut": false, - "duration": 626, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/?taxonname=a*&limit=30')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.strictEqual(res.body.data.length, 30);\n done();\n if (err) {\n console.log(err.message);\n };\n });", - "err": {}, - "uuid": "4b9245fa-f648-4237-b3fd-5970b02bd394", - "parentUUID": "8b21ce53-c69e-468d-a7b6-9faf03e99cee", - "isHook": false, - "skipped": false + "uuid": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/explorerCalls.js", + "file": "/test/explorerCalls.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for TaxaGroupTypes", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaxaGroupTypes", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/TaxaGroupTypes', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "e8018758-9a70-44ae-bba8-2fb35aa6044b", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for TaphonomyTypes", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaphonomyTypes", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/TaphonomyTypes', {\n qs: {\n taphonomicSystemId: 1,\n },\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "9e3b4200-b64d-467c-bc9a-d780e0a8be0f", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for TaphonomySystems", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaphonomySystems", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/TaphonomySystems', {\n qs: {\n datasetTypeId: 1,\n },\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "319411fd-a92f-4de2-87e9-a3de4c95ee72", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for ElementTypes", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for ElementTypes", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/ElementTypes', {\n qs: {\n taxagroupid: 1,\n },\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "2ecc9462-fd92-45b6-b075-b51c219a204f", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for TaxaInDatasets (a slow service)", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for TaxaInDatasets (a slow service)", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/TaxaInDatasets', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "642db0b0-b1dc-4183-9ba1-090114112c55", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for collectionTypes", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for collectionTypes", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/collectionTypes', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "cf9202d3-10ee-4484-8a0d-d7bf543122b0", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for keywords", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for keywords", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/keywords', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "0cc4901f-f8a0-4df0-bdbe-b48f87b5654d", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for authorpis", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for authorpis", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/authorpis', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ffddbfae-5a11-4585-b70c-f4859c26827c", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for DepositionalEnvironments", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for DepositionalEnvironments", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/DepositionalEnvironments', {\n qs: {idProperty: 1},\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "03fb7843-adcf-4a26-98bb-179507e04f22", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for Search", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for Search", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('post', appServicesLocation + '/Search', {\n qs: {search: '{\"datasetTypeId\":21}',\n time: true},\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ce0d8460-1805-4272-b892-b288c3dc9b37", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for DatasetTypes", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for DatasetTypes", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/DatasetTypes', {\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "fc625a1f-512c-455a-b2e2-40b14638837f", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for RelativeAges", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for RelativeAges", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/RelativeAges', {\n qs: {agescaleid: 1},\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ed78a4aa-867c-4ac9-adef-c3f15e9f2dd3", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + }, + { + "title": "should respond 200 for Geochronologies", + "fullTitle": "Tests for Explorer App Services tests for get should respond 200 for Geochronologies", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "const response = request('get', appServicesLocation + '/Geochronologies', {\n qs: {datasetId: 1001},\n time: true,\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "a393030e-29ab-4a9c-b9c9-a5a167aff1f1", + "parentUUID": "56f99c06-be1f-41e7-8d09-8a057e285bf4", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "e8018758-9a70-44ae-bba8-2fb35aa6044b", + "9e3b4200-b64d-467c-bc9a-d780e0a8be0f", + "319411fd-a92f-4de2-87e9-a3de4c95ee72", + "2ecc9462-fd92-45b6-b075-b51c219a204f", + "642db0b0-b1dc-4183-9ba1-090114112c55", + "cf9202d3-10ee-4484-8a0d-d7bf543122b0", + "0cc4901f-f8a0-4df0-bdbe-b48f87b5654d", + "ffddbfae-5a11-4585-b70c-f4859c26827c", + "03fb7843-adcf-4a26-98bb-179507e04f22", + "ce0d8460-1805-4272-b892-b288c3dc9b37", + "fc625a1f-512c-455a-b2e2-40b14638837f", + "ed78a4aa-867c-4ac9-adef-c3f15e9f2dd3", + "a393030e-29ab-4a9c-b9c9-a5a167aff1f1" + ], + "pending": [], + "skipped": [], + "duration": 7, + "root": false, + "rootEmpty": false, + "_timeout": 12000 } ], - "suites": [], - "passes": [ - "28cf7b4a-3fce-4037-8856-87e86631fb38", - "2ba07dce-fe5c-47b7-9e24-7b96676f15c9", - "ef57be4f-4d76-4c56-b7cc-0f2d3917afe5", - "f8e65c8c-814f-40dd-92b1-8fc014898b76", - "28288c7a-c880-4a23-bfd4-7ad64f7ec137", - "d44a7ec5-3d3f-4963-a799-0e1fc83b4024", - "5717f99a-70e8-4822-857c-a10832999e5f", - "4b9245fa-f648-4237-b3fd-5970b02bd394" - ], + "passes": [], "failures": [], "pending": [], "skipped": [], - "duration": 3455, + "duration": 0, "root": false, "rootEmpty": false, - "_timeout": 900000 + "_timeout": 12000 }, { - "uuid": "fe1e84b5-d9ba-45fb-9c96-da9ca63ed69e", - "title": "tests for /v2.0/data/sites/{siteid}/geopoliticalunits", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", - "file": "/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", + "uuid": "46505048-67d7-4b7f-816d-fe6d8ce4b81d", + "title": "tests for /v1.5/apps/TaxaInDatasets", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-TaxaInDatasets-test.js", + "file": "/test/v1.5-apps-TaxaInDatasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "88722502-f1b0-45c0-8bfd-b56e5a7866d2", + "uuid": "6c1b7bdb-16d3-45e1-b9f5-f3b19edadc0f", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", - "file": "/test/v2.0-data-sites-{siteid}-geopoliticalunits-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-TaxaInDatasets-test.js", + "file": "/test/v1.5-apps-TaxaInDatasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of geopolitical units.\"", - "fullTitle": "tests for /v2.0/data/sites/{siteid}/geopoliticalunits tests for get should respond 200 for \"An array of geopolitical units.\"", + "title": "should respond 200 for \"An array of taxon identities with associated dataset IDs.\"", + "fullTitle": "tests for /v1.5/apps/TaxaInDatasets tests for get should respond 200 for \"An array of taxon identities with associated dataset IDs.\"", "timedOut": false, - "duration": 157, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/geopoliticalunits', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "a730cc53-a769-46f3-a78e-f36fc8933234", - "parentUUID": "88722502-f1b0-45c0-8bfd-b56e5a7866d2", + "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/TaxaInDatasets', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "c8ef905c-75c4-4955-9c51-570b37421728", + "parentUUID": "6c1b7bdb-16d3-45e1-b9f5-f3b19edadc0f", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "a730cc53-a769-46f3-a78e-f36fc8933234" + "passes": [], + "failures": [ + "c8ef905c-75c4-4955-9c51-570b37421728" ], - "failures": [], "pending": [], "skipped": [], - "duration": 157, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4052,49 +4411,53 @@ "_timeout": 900000 }, { - "uuid": "75d414c4-7b08-4b9b-bf17-9f5953be8b64", - "title": "tests for /v2.0/data/sites/{siteid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-test.js", - "file": "/test/v2.0-data-sites-{siteid}-test.js", + "uuid": "1db302d1-1ec3-440a-97f6-5a764a43b3e4", + "title": "tests for /v2.0/data/contacts/{contactid}/sites", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-sites-test.js", + "file": "/test/v2.0-data-contacts-{contactid}-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "f9117673-2f6e-4ddc-af9d-2d4ed8be8e98", + "uuid": "60866bd8-2ffb-4c0d-9410-f03e3cda8395", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-test.js", - "file": "/test/v2.0-data-sites-{siteid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-sites-test.js", + "file": "/test/v2.0-data-contacts-{contactid}-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of sites.\"", - "fullTitle": "tests for /v2.0/data/sites/{siteid} tests for get should respond 200 for \"An array of sites.\"", + "title": "should respond 200 for \"A Neotoma sites object.\"", + "fullTitle": "tests for /v2.0/data/contacts/{contactid}/sites tests for get should respond 200 for \"A Neotoma sites object.\"", "timedOut": false, - "duration": 495, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "874ea886-5491-4a86-b2c8-d6592b5568cb", - "parentUUID": "f9117673-2f6e-4ddc-af9d-2d4ed8be8e98", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/8319/sites', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "e2fb3635-799a-4a61-bc24-0e99f244b927", + "parentUUID": "60866bd8-2ffb-4c0d-9410-f03e3cda8395", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "874ea886-5491-4a86-b2c8-d6592b5568cb" + "passes": [], + "failures": [ + "e2fb3635-799a-4a61-bc24-0e99f244b927" ], - "failures": [], "pending": [], "skipped": [], - "duration": 495, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4110,49 +4473,53 @@ "_timeout": 900000 }, { - "uuid": "7eb3b8f7-947b-4432-befb-2632a9035eef", - "title": "tests for /v2.0/data/datasets/{datasetid}/taxa", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-taxa-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-taxa-test.js", + "uuid": "3d928e0f-e1ee-4aad-9fd7-30e902a29a47", + "title": "tests for /v2.0/apps/datasettypes", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-datasettypes-test.js", + "file": "/test/v2.0-apps-datasettypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "8adfe029-1941-4f73-b08d-283657d093e9", + "uuid": "12a39bdc-c44b-49a1-bef6-ddcfb518cc52", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-taxa-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-taxa-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-datasettypes-test.js", + "file": "/test/v2.0-apps-datasettypes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Taxa\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/taxa tests for get should respond 200 for \"Taxa\"", + "title": "should respond 200 for \"A table of Neotoma collection types.\"", + "fullTitle": "tests for /v2.0/apps/datasettypes tests for get should respond 200 for \"A table of Neotoma collection types.\"", "timedOut": false, - "duration": 128, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/taxa', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "807355a4-f29b-4f11-a1d4-36a7b68c95d4", - "parentUUID": "8adfe029-1941-4f73-b08d-283657d093e9", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/datasettypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "825ce652-03f4-4089-beb0-01019a041813", + "parentUUID": "12a39bdc-c44b-49a1-bef6-ddcfb518cc52", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "807355a4-f29b-4f11-a1d4-36a7b68c95d4" + "passes": [], + "failures": [ + "825ce652-03f4-4089-beb0-01019a041813" ], - "failures": [], "pending": [], "skipped": [], - "duration": 128, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4168,49 +4535,53 @@ "_timeout": 900000 }, { - "uuid": "d1343aa7-54a0-4db8-a18c-d4dd23ba47a2", - "title": "tests for /v1.5/data/geopoliticalunits/{gpid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-{gpid}-test.js", - "file": "/test/v1.5-data-geopoliticalunits-{gpid}-test.js", + "uuid": "e3b40413-52e6-4369-81e2-7f2cdb6a687e", + "title": "tests for /v2.0/data/datasets", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-test.js", + "file": "/test/v2.0-data-datasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "3636acec-7915-418e-bdf6-a180dcd8ad9a", + "uuid": "67e7ae1a-1a22-452a-b77a-fa07c0ca82ca", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-{gpid}-test.js", - "file": "/test/v1.5-data-geopoliticalunits-{gpid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-test.js", + "file": "/test/v2.0-data-datasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of geopolitical units.\"", - "fullTitle": "tests for /v1.5/data/geopoliticalunits/{gpid} tests for get should respond 200 for \"An array of geopolitical units.\"", + "title": "should respond 200 for \"An array of datasets.\"", + "fullTitle": "tests for /v2.0/data/datasets tests for get should respond 200 for \"An array of datasets.\"", "timedOut": false, - "duration": 117, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits/7129', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "72b72f64-59f3-4521-bc66-f8d6807e6fb5", - "parentUUID": "3636acec-7915-418e-bdf6-a180dcd8ad9a", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets', { \n 'qs': {\"sitename\":\"pariatur tempor\",\"database\":\"Pollen Monitoring Programme\",\"datasettype\":\"vertebrate fauna\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"siteid\":37798,\"datasetid\":20069323,\"doi\":\"10$930055/_.4HBW:Q(Y\",\"gpid\":5392,\"keyword\":\"bottom\",\"contactid\":4719,\"taxa\":\"sit in et culpa deserunt\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":8142805,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "d0d144d8-a0c9-490d-82b7-102c83f9cb14", + "parentUUID": "67e7ae1a-1a22-452a-b77a-fa07c0ca82ca", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "72b72f64-59f3-4521-bc66-f8d6807e6fb5" + "passes": [], + "failures": [ + "d0d144d8-a0c9-490d-82b7-102c83f9cb14" ], - "failures": [], "pending": [], "skipped": [], - "duration": 117, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4226,49 +4597,165 @@ "_timeout": 900000 }, { - "uuid": "c7cf7f34-79a6-476f-a514-81a3050cd507", - "title": "tests for /v2.0/data/datasets/{datasetid}/projects", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-projects-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-projects-test.js", + "uuid": "4759e7f5-ebe9-481f-b61c-aa64e5410004", + "title": "Get geopolitical data:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/geopolitical.js", + "file": "/test/geopolitical.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "An empty query returns a valid response.", + "fullTitle": "Get geopolitical data: An empty query returns a valid response.", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/geopoliticalunits/')\n .set('Accept', 'application/json')\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "cf85d1c7-0dde-4792-8615-f23aaefb40c4", + "parentUUID": "4759e7f5-ebe9-481f-b61c-aa64e5410004", + "isHook": false, + "skipped": false + }, + { + "title": "The default limit of 25 should be reached for country level data:", + "fullTitle": "Get geopolitical data: The default limit of 25 should be reached for country level data:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/geopoliticalunits/?rank=1')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.equal(res.body.data.length, 25);\n done();\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/geopolitical.js:34:26)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "36cbfca8-0ea1-4a4b-9774-c1af6da4f672", + "parentUUID": "4759e7f5-ebe9-481f-b61c-aa64e5410004", + "isHook": false, + "skipped": false + }, + { + "title": "Changing the limit should change the number of countries retrieved:", + "fullTitle": "Get geopolitical data: Changing the limit should change the number of countries retrieved:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/geopoliticalunits/?rank=1&limit=30')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.equal(res.body.data.length, 30);\n done();\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/geopolitical.js:43:26)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "3efa2e33-d832-4c73-a7ea-12575e900952", + "parentUUID": "4759e7f5-ebe9-481f-b61c-aa64e5410004", + "isHook": false, + "skipped": false + }, + { + "title": "A single geopolitical unit (12) should be returned.", + "fullTitle": "Get geopolitical data: A single geopolitical unit (12) should be returned.", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/geopoliticalunits/12')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n assert.equal(res.body.data[0]['geopoliticalid'], 12);\n done();\n });", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'body')", + "estack": "TypeError: Cannot read properties of undefined (reading 'body')\n at Test. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/geopolitical.js:52:26)\n at Test.assert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:204:10)\n at localAssert (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:138:14)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/lib/test.js:156:7\n at Request.callback (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:857:3)\n at ClientRequest. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/supertest/node_modules/superagent/lib/node/index.js:780:10)\n at ClientRequest.emit (node:events:507:28)\n at emitErrorEvent (node:_http_client:104:11)\n at Socket.socketErrorListener (node:_http_client:518:5)\n at Socket.emit (node:events:507:28)\n at emitErrorNT (node:internal/streams/destroy:170:8)\n at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)", + "diff": null + }, + "uuid": "1798e452-ebc3-45b8-ba47-7fc844db08c0", + "parentUUID": "4759e7f5-ebe9-481f-b61c-aa64e5410004", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "cf85d1c7-0dde-4792-8615-f23aaefb40c4", + "36cbfca8-0ea1-4a4b-9774-c1af6da4f672", + "3efa2e33-d832-4c73-a7ea-12575e900952", + "1798e452-ebc3-45b8-ba47-7fc844db08c0" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 5000 + }, + { + "uuid": "2017a5e7-565c-4af8-b13f-7a8ee660476b", + "title": "tests for /v2.0/data/datasets/{datasetid}/sites", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-sites-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "62c9041d-0c27-46c9-8a2e-6768174e43f1", + "uuid": "7b905b3a-0af4-4821-90b2-a76fa4c14ed1", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-projects-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-projects-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-sites-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-sites-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Projects\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/projects tests for get should respond 200 for \"Projects\"", + "title": "should respond 200 for \"Site\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/sites tests for get should respond 200 for \"Site\"", "timedOut": false, - "duration": 169, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/projects', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "6956cccd-adba-49ab-a04f-c8c551f59612", - "parentUUID": "62c9041d-0c27-46c9-8a2e-6768174e43f1", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/sites', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "d7c6e87c-ac22-432f-8f50-1c68693db8e9", + "parentUUID": "7b905b3a-0af4-4821-90b2-a76fa4c14ed1", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "6956cccd-adba-49ab-a04f-c8c551f59612" + "passes": [], + "failures": [ + "d7c6e87c-ac22-432f-8f50-1c68693db8e9" ], - "failures": [], "pending": [], "skipped": [], - "duration": 169, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4284,49 +4771,53 @@ "_timeout": 900000 }, { - "uuid": "62ccd9ab-1b36-40c8-bbb2-04e0d3a0d175", - "title": "tests for /v2.0/data/summary/dsdbmonth", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dsdbmonth-test.js", - "file": "/test/v2.0-data-summary-dsdbmonth-test.js", + "uuid": "fe6c2426-f9a0-462c-8334-97c71da8c6b3", + "title": "tests for /v2.0/data/speleothems/{collectionunitid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-speleothems-{collectionunitid}-test.js", + "file": "/test/v2.0-data-speleothems-{collectionunitid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "8db81a91-0578-47d7-8670-4530e6c6124b", + "uuid": "3872dfaf-cc19-4da0-8e2d-33005b2d03b7", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dsdbmonth-test.js", - "file": "/test/v2.0-data-summary-dsdbmonth-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-speleothems-{collectionunitid}-test.js", + "file": "/test/v2.0-data-speleothems-{collectionunitid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A count of the datasets added by database for the requested period.\"", - "fullTitle": "tests for /v2.0/data/summary/dsdbmonth tests for get should respond 200 for \"A count of the datasets added by database for the requested period.\"", + "title": "should respond 200 for \"Metadata associated with speleothems submitted through SISAL.\"", + "fullTitle": "tests for /v2.0/data/speleothems/{collectionunitid} tests for get should respond 200 for \"Metadata associated with speleothems submitted through SISAL.\"", "timedOut": false, - "duration": 377, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/dsdbmonth', { \n 'qs': {\"start\": 1,\"end\": 10},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "d9ea056e-ab76-45ee-ad3d-9260cea26bcc", - "parentUUID": "8db81a91-0578-47d7-8670-4530e6c6124b", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/speleothems/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "f3ef33aa-f11e-418e-a89e-44aa36970abd", + "parentUUID": "3872dfaf-cc19-4da0-8e2d-33005b2d03b7", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "d9ea056e-ab76-45ee-ad3d-9260cea26bcc" + "passes": [], + "failures": [ + "f3ef33aa-f11e-418e-a89e-44aa36970abd" ], - "failures": [], "pending": [], "skipped": [], - "duration": 377, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4342,49 +4833,53 @@ "_timeout": 900000 }, { - "uuid": "ea42243e-0c52-4fe9-91d1-87adad98dc33", - "title": "tests for /v2.0/data/datasets/{datasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-test.js", + "uuid": "b3083dfb-035b-4342-83bb-cef07f8520aa", + "title": "tests for /v2.0/data/chronologies/{chronid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-chronologies-{chronid}-test.js", + "file": "/test/v2.0-data-chronologies-{chronid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "265865d1-2ece-4028-a5dc-ba1960e4252b", + "uuid": "8dcc9cac-f9cd-4469-a74b-98546f047156", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-chronologies-{chronid}-test.js", + "file": "/test/v2.0-data-chronologies-{chronid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of datasets.\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid} tests for get should respond 200 for \"An array of datasets.\"", + "title": "should respond 200 for \"A Neotoma chronology object.\"", + "fullTitle": "tests for /v2.0/data/chronologies/{chronid} tests for get should respond 200 for \"A Neotoma chronology object.\"", "timedOut": false, - "duration": 1245, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "67d707a9-cad2-4199-80f9-d4200a76aa23", - "parentUUID": "265865d1-2ece-4028-a5dc-ba1960e4252b", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/chronologies/4270', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ca5c2f9f-a479-4418-aae1-59814978414f", + "parentUUID": "8dcc9cac-f9cd-4469-a74b-98546f047156", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "67d707a9-cad2-4199-80f9-d4200a76aa23" + "passes": [], + "failures": [ + "ca5c2f9f-a479-4418-aae1-59814978414f" ], - "failures": [], "pending": [], "skipped": [], - "duration": 1245, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4398,51 +4893,55 @@ "root": false, "rootEmpty": false, "_timeout": 900000 - }, - { - "uuid": "59c3c501-a203-419b-bfb3-63482a3bddfe", - "title": "tests for /v1.5/dbtables/{table}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-dbtables-{table}-test.js", - "file": "/test/v1.5-dbtables-{table}-test.js", + }, + { + "uuid": "3952b34a-ca7d-42ed-aedc-60875cbd00e5", + "title": "tests for /v2.0/data/contacts", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-test.js", + "file": "/test/v2.0-data-contacts-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "8f4909ed-0bde-4c8b-9f71-677ef7567321", + "uuid": "935a6b48-d7a4-4cbe-863c-f63e77006806", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-dbtables-{table}-test.js", - "file": "/test/v1.5-dbtables-{table}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-test.js", + "file": "/test/v2.0-data-contacts-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returned table.\"", - "fullTitle": "tests for /v1.5/dbtables/{table} tests for get should respond 200 for \"Returned table.\"", + "title": "should respond 200 for \"contact\"", + "fullTitle": "tests for /v2.0/data/contacts tests for get should respond 200 for \"contact\"", "timedOut": false, - "duration": 74, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/dbtables/geochrontypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "0c5686dc-ab14-434d-bff5-ad7d4d40ec34", - "parentUUID": "8f4909ed-0bde-4c8b-9f71-677ef7567321", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts', { \n 'qs': {\"contactid\":3930,\"familyname\":\"MGqwj\",\"contactname\":\"JoaJZgLpAM\",\"contactstatus\":\"extant\",\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "16a2c424-26d2-48fc-8888-e8258df05254", + "parentUUID": "935a6b48-d7a4-4cbe-863c-f63e77006806", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "0c5686dc-ab14-434d-bff5-ad7d4d40ec34" + "passes": [], + "failures": [ + "16a2c424-26d2-48fc-8888-e8258df05254" ], - "failures": [], "pending": [], "skipped": [], - "duration": 74, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4458,49 +4957,53 @@ "_timeout": 900000 }, { - "uuid": "b9494a1c-fcdb-4d04-be0e-ac245da8204d", - "title": "tests for /v1.5/data/occurrence/{occurrenceid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-occurrence-{occurrenceid}-test.js", - "file": "/test/v1.5-data-occurrence-{occurrenceid}-test.js", + "uuid": "fae92834-d632-4316-8cd6-2244782633e7", + "title": "tests for /v2.0/data/publications/{publicationid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-{publicationid}-test.js", + "file": "/test/v2.0-data-publications-{publicationid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "148da618-aeea-4a1d-bb1e-f5f3a2a741cd", + "uuid": "477b8f27-eb4a-470b-97a4-2a312c9dec71", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-occurrence-{occurrenceid}-test.js", - "file": "/test/v1.5-data-occurrence-{occurrenceid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-publications-{publicationid}-test.js", + "file": "/test/v2.0-data-publications-{publicationid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A single occurrence object.\"", - "fullTitle": "tests for /v1.5/data/occurrence/{occurrenceid} tests for get should respond 200 for \"A single occurrence object.\"", + "title": "should respond 200 for \"A list of publications.\"", + "fullTitle": "tests for /v2.0/data/publications/{publicationid} tests for get should respond 200 for \"A list of publications.\"", "timedOut": false, - "duration": 108, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/data/occurrence/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "af88d399-2c73-4515-b552-e2d52c7453b9", - "parentUUID": "148da618-aeea-4a1d-bb1e-f5f3a2a741cd", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/publications/5598', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "38fbbb44-7a7c-47c0-b323-567d3eed91d2", + "parentUUID": "477b8f27-eb4a-470b-97a4-2a312c9dec71", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "af88d399-2c73-4515-b552-e2d52c7453b9" + "passes": [], + "failures": [ + "38fbbb44-7a7c-47c0-b323-567d3eed91d2" ], - "failures": [], "pending": [], "skipped": [], - "duration": 108, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4516,49 +5019,53 @@ "_timeout": 900000 }, { - "uuid": "bfdec21a-1ffa-4828-b120-a89417fd4ee6", - "title": "tests for /v2.0/data/aggregatedatasets/{aggdatasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", - "file": "/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", + "uuid": "b7580419-af58-4275-921a-344c7b44d2b8", + "title": "tests for /v2.0/data/geopoliticalunits/{gpid}/datasets", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", + "file": "/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "b2cf7500-51ab-4717-b088-b8d4b8c540bf", + "uuid": "68318955-0892-4c05-a217-203dab286fdd", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", - "file": "/test/v2.0-data-aggregatedatasets-{aggdatasetid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", + "file": "/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { "title": "should respond 200 for \"An array of datasets.\"", - "fullTitle": "tests for /v2.0/data/aggregatedatasets/{aggdatasetid} tests for get should respond 200 for \"An array of datasets.\"", + "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid}/datasets tests for get should respond 200 for \"An array of datasets.\"", "timedOut": false, - "duration": 105, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/aggregatedatasets/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "f51d6c83-5153-405b-97ae-6d9999e31b50", - "parentUUID": "b2cf7500-51ab-4717-b088-b8d4b8c540bf", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/7445/datasets', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "372bb63a-4a95-4d3d-a4a7-aed888602416", + "parentUUID": "68318955-0892-4c05-a217-203dab286fdd", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "f51d6c83-5153-405b-97ae-6d9999e31b50" + "passes": [], + "failures": [ + "372bb63a-4a95-4d3d-a4a7-aed888602416" ], - "failures": [], "pending": [], "skipped": [], - "duration": 105, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4574,316 +5081,115 @@ "_timeout": 900000 }, { - "uuid": "36ee89a5-1664-496e-9291-ac9b829c1687", - "title": "Get occurrence data any number of ways:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/occurrence.js", - "file": "/test/occurrence.js", + "uuid": "c1b7613b-4da5-4e07-86c9-107cc4a53153", + "title": "tests for /v1.5/data/occurrence/{occurrenceid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-occurrence-{occurrenceid}-test.js", + "file": "/test/v1.5-data-occurrence-{occurrenceid}-test.js", "beforeHooks": [], "afterHooks": [], - "tests": [ - { - "title": "Get occurrence by singular id & return same id:", - "fullTitle": "Get occurrence data any number of ways: Get occurrence by singular id & return same id:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(function(res) {\n return res.body['data'][0]['occurrence'] === 12;\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "fffa3df5-c751-41dd-9b8f-73639b021818", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Get the Flyover test call:", - "fullTitle": "Get occurrence data any number of ways: Get the Flyover test call:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences?taxonname=rhinocerotidae,megacerops,moeritherium,ceratogaulus,gomphotherium,deinotherium,condylarthra,paraceratherium,mesonychia,pantodonta,hyaenodon,thylacosmilus,glyptodon,castoroides,toxodon,megatherium,arctodus,smilodon,mammuthus,mammut,coelodonta,megaloceras,gigantopithecus,phlegethontia,temnospondyli,lepospondyli,ichthyosauria,sauropterygia,mosasauroidea,pterosauromorpha,titanoboa,megalania,placodus,tanystropheidae,hyperodapedon,stagonolepis,scutosaurus,pareiasauria,archelon,stupendemys,protostega,placodermi,leedsichthys,onychodontiformes,acanthostega,ichthyostega,crassigyrinus,ornithosuchus,erpetosuchidae,protosuchus,dakosaurus,geosaurus,deinosuchus&lower=true&limit=999999&loc=POLYGON((-122.56 39.94,-115.21 41.96,-107.99 43.42,-100.51 44.41,-92.85 44.91,-83.49 44.84,-74.25 44.02,-70.19 43.38,-69.36 42.75,-69.02 41.76,-69.13 41.07,-69.5 40.47,-70.07 40.06,-70.75 39.9,-78.36 40.86,-85.79 41.33,-93.27 41.3,-100.68 40.78,-105.86 40.12,-111.42 39.12,-116.79 37.86,-122.28 36.29,-122.98 36.35,-123.61 36.67,-124.06 37.21,-124.27 37.88,-124.21 38.58,-123.89 39.2,-123.35 39.65,-122.56 39.94))')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "f16014d2-e1ab-4a9c-a2cf-824c40ba83b1", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Failing Canis test works:", - "fullTitle": "Get occurrence data any number of ways: Failing Canis test works:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "// This casuses timeout fails for some reason. It's frustrating.\napi.get('v2.0/data/occurrences?taxonname=Canis&lower=true&limit=999999')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "8d5a6103-3de7-4544-a9f6-fb978e2d41bb", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Get occurrence by taxon:", - "fullTitle": "Get occurrence data any number of ways: Get occurrence by taxon:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/taxa/12/occurrences')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "3956a44b-ed7e-413d-b821-e3cbff566ae3", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Break occurrences by flipping altitudes:", - "fullTitle": "Get occurrence data any number of ways: Break occurrences by flipping altitudes:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?altmax=3000&altmin=5000')\n .set('Accept', 'application/json')\n .expect(500);\ndone();", - "err": {}, - "uuid": "c3a65e98-34b5-4c74-a96e-08ae6a12bff3", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Break occurrences by flipping ages:", - "fullTitle": "Get occurrence data any number of ways: Break occurrences by flipping ages:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?ageyoung=5000&ageold=3000')\n .set('Accept', 'application/json')\n .expect(500);\ndone();", - "err": {}, - "uuid": "cd218e02-1c5a-4bc5-8cd1-a487bd4924f7", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Occurrences filter by age:", - "fullTitle": "Get occurrence data any number of ways: Occurrences filter by age:", - "timedOut": false, - "duration": 1, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?ageyoung=3000&ageold=5000')\n .set('Accept', 'application/json')\n .expect(function(res) {\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "be9a3fd8-024e-4b1f-a163-289d19740e3a", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Get occurrences with comma separated fields:", - "fullTitle": "Get occurrence data any number of ways: Get occurrences with comma separated fields:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/' +\n '?siteid=12,13,14,15&taxonname=Betula&limit=200')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const allSite = res.body['data'];\n const siteids = [];\n for (let i = 0; i < allSite.length; i++) {\n siteids.push(allSite[i]['site']['siteid']);\n };\n const uniqueSites = Array.from(new Set(siteids)).sort(function(a, b) {\n return a - b;\n });\n return (uniqueSites.every((item) => [12, 13, 14, 15].includes(item)));\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "1af2ba38-ecc5-441f-acc5-872acfa6f62d", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Get occurrences with comma separated taxa:", - "fullTitle": "Get occurrence data any number of ways: Get occurrences with comma separated taxa:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?taxonname=Picea,Abies&limit=25')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return (res.body.data.length > 0);\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "16ac4403-c7f3-4d8f-aa29-a5343d744b91", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Get hierarchical occurrences with comma separated taxa:", - "fullTitle": "Get occurrence data any number of ways: Get hierarchical occurrences with comma separated taxa:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?taxonname=Picea,Abies&limit=25&lower=true')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return (res.body.data.length > 0);\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "023b8919-7a23-430f-9098-876562e84540", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Get occurrences returns lower taxa:", - "fullTitle": "Get occurrence data any number of ways: Get occurrences returns lower taxa:", - "timedOut": false, - "duration": 1, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?taxonname=Myrica&lower=true&limit=200')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const allTaxa = res.body['data'];\n const taxaids = [];\n for (let i = 0; i < allTaxa.length; i++) {\n taxaids.push(allTaxa[i]['sample']['taxonname']);\n };\n const uniqueTaxa = Array.from(new Set(taxaids)).sort();\n return uniqueTaxa.length > 1;\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "7346c1d9-08e3-4b08-a0bb-f130ebcdddc6", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, - { - "title": "Get occurrences with mammals and lower taxa works:", - "fullTitle": "Get occurrence data any number of ways: Get occurrences with mammals and lower taxa works:", - "timedOut": false, - "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?taxonname=Homo&lower=true&limit=25')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const allTaxa = res.body['data'];\n const taxaids = [];\n for (let i = 0; i < allTaxa.length; i++) {\n taxaids.push(allTaxa[i]['sample']['taxonname']);\n };\n const uniqueTaxa = Array.from(new Set(taxaids)).sort();\n return uniqueTaxa.length > 1 & allTaxa.length > 0;\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "43a2d8b5-a096-4595-a1d3-a00deee4a6ad", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false - }, + "tests": [], + "suites": [ { - "title": "Get occurrences using taxon and age bounds:", - "fullTitle": "Get occurrence data any number of ways: Get occurrences using taxon and age bounds:", - "timedOut": false, + "uuid": "1b7a64cf-bb4a-4e33-bb04-496bed0b9e20", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-occurrence-{occurrenceid}-test.js", + "file": "/test/v1.5-data-occurrence-{occurrenceid}-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"A single occurrence object.\"", + "fullTitle": "tests for /v1.5/data/occurrence/{occurrenceid} tests for get should respond 200 for \"A single occurrence object.\"", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v1.5/data/occurrence/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "d08d060c-27a1-40f4-a3a5-346a97f9863b", + "parentUUID": "1b7a64cf-bb4a-4e33-bb04-496bed0b9e20", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "d08d060c-27a1-40f4-a3a5-346a97f9863b" + ], + "pending": [], + "skipped": [], "duration": 0, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/occurrences/?ageyoung=2000&ageold=3000&taxonname=Pinus')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length > 0;\n })\n .expect(200);\ndone();", - "err": {}, - "uuid": "61294dd7-0a37-4f2b-a4b9-8cf50fee666e", - "parentUUID": "36ee89a5-1664-496e-9291-ac9b829c1687", - "isHook": false, - "skipped": false + "root": false, + "rootEmpty": false, + "_timeout": 900000 } ], - "suites": [], - "passes": [ - "fffa3df5-c751-41dd-9b8f-73639b021818", - "f16014d2-e1ab-4a9c-a2cf-824c40ba83b1", - "8d5a6103-3de7-4544-a9f6-fb978e2d41bb", - "3956a44b-ed7e-413d-b821-e3cbff566ae3", - "c3a65e98-34b5-4c74-a96e-08ae6a12bff3", - "cd218e02-1c5a-4bc5-8cd1-a487bd4924f7", - "be9a3fd8-024e-4b1f-a163-289d19740e3a", - "1af2ba38-ecc5-441f-acc5-872acfa6f62d", - "16ac4403-c7f3-4d8f-aa29-a5343d744b91", - "023b8919-7a23-430f-9098-876562e84540", - "7346c1d9-08e3-4b08-a0bb-f130ebcdddc6", - "43a2d8b5-a096-4595-a1d3-a00deee4a6ad", - "61294dd7-0a37-4f2b-a4b9-8cf50fee666e" - ], + "passes": [], "failures": [], "pending": [], "skipped": [], - "duration": 2, + "duration": 0, "root": false, "rootEmpty": false, - "_timeout": 30000 + "_timeout": 900000 }, { - "uuid": "158216ed-59ec-4ffb-9c5b-baee24efeb4c", - "title": "tests for /v2.0/data/downloads/{datasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-downloads-{datasetid}-test.js", - "file": "/test/v2.0-data-downloads-{datasetid}-test.js", + "uuid": "0e537564-5218-4f70-b319-cc81a290dce1", + "title": "tests for /v1.5/dbtables/{table}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-dbtables-{table}-test.js", + "file": "/test/v1.5-dbtables-{table}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "849767df-879b-4ec5-afc0-666189245dc0", + "uuid": "1a317474-1f9b-4395-8868-8a51450c7ad8", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-downloads-{datasetid}-test.js", - "file": "/test/v2.0-data-downloads-{datasetid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-dbtables-{table}-test.js", + "file": "/test/v1.5-dbtables-{table}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returned download object.\"", - "fullTitle": "tests for /v2.0/data/downloads/{datasetid} tests for get should respond 200 for \"Returned download object.\"", + "title": "should respond 200 for \"Returned table.\"", + "fullTitle": "tests for /v1.5/dbtables/{table} tests for get should respond 200 for \"Returned table.\"", "timedOut": false, - "duration": 7166, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/downloads/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "fb1d5f80-6053-4f96-84c5-b5e89f307830", - "parentUUID": "849767df-879b-4ec5-afc0-666189245dc0", + "code": "var response = request('get', 'http://localhost:3001/v1.5/dbtables/geochrontypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "017a93a8-1b5c-4451-a138-a03de021561e", + "parentUUID": "1a317474-1f9b-4395-8868-8a51450c7ad8", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "fb1d5f80-6053-4f96-84c5-b5e89f307830" + "passes": [], + "failures": [ + "017a93a8-1b5c-4451-a138-a03de021561e" ], - "failures": [], "pending": [], "skipped": [], - "duration": 7166, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -4899,361 +5205,367 @@ "_timeout": 900000 }, { - "uuid": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "title": "Get publication data any number of ways:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/publications.js", - "file": "/test/publications.js", + "uuid": "0fba9208-8a89-4f46-affa-857a37715ad5", + "title": "tests for /v2.0/data/datasets/db", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-db-test.js", + "file": "/test/v2.0-data-datasets-db-test.js", "beforeHooks": [], "afterHooks": [], - "tests": [ - { - "title": "Get publication by singular id & return same id:", - "fullTitle": "Get publication data any number of ways: Get publication by singular id & return same id:", - "timedOut": false, - "duration": 77, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/publications/12')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data[0].publication.publicationid === 12;\n })\n .expect(200, done);", - "err": {}, - "uuid": "6ba2557b-d822-44fb-bc1b-d0b1032e1636", - "parentUUID": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "isHook": false, - "skipped": false - }, - { - "title": "Get publication by comma sepatarated ids:", - "fullTitle": "Get publication data any number of ways: Get publication by comma sepatarated ids:", - "timedOut": false, - "duration": 76, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/publications/12,13')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.map((x) => x.publicationid) == [12, 13];\n })\n .expect(200, done);", - "err": {}, - "uuid": "c9da47a8-12cc-4d8e-ae1a-8541c9cea640", - "parentUUID": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "isHook": false, - "skipped": false - }, - { - "title": "Get publication by querying author:", - "fullTitle": "Get publication data any number of ways: Get publication by querying author:", - "timedOut": false, - "duration": 309, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/publications?familyname=Grimm')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.result.length > 0;\n })\n .expect(200, done);", - "err": {}, - "uuid": "90bbc6c5-46da-4720-9310-a5b925d1fc68", - "parentUUID": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "isHook": false, - "skipped": false - }, - { - "title": "Get publications using pubs with missing links:", - "fullTitle": "Get publication data any number of ways: Get publications using pubs with missing links:", - "timedOut": false, - "duration": 89, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/publications?publicationid=12,14,1412,99999')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.result.length > 0;\n })\n .expect(200, done);", - "err": {}, - "uuid": "e55ff303-7026-42ea-9170-5188dcdec387", - "parentUUID": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "isHook": false, - "skipped": false - }, - { - "title": "Get publication by site id:", - "fullTitle": "Get publication data any number of ways: Get publication by site id:", - "timedOut": false, - "duration": 84, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/sites/12/publications')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return res.body.data.length > 0;\n })\n .expect(200, done);", - "err": {}, - "uuid": "ef0303e0-1197-462a-aa0e-aad136ccc2f3", - "parentUUID": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "isHook": false, - "skipped": false - }, - { - "title": "Get publication by site id finds pubs for all sites:", - "fullTitle": "Get publication data any number of ways: Get publication by site id finds pubs for all sites:", - "timedOut": false, - "duration": 83, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/sites/12,13,14,15/publications')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const flatten = (list) => list.reduce(\n (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [],\n );\n const sites = [12, 13, 14, 15];\n const siteids = flatten(res.body.data.map((x) => x.siteid));\n return sites.every((x) => siteids.includes(x));\n })\n .expect(200, done);", - "err": {}, - "uuid": "f0dfa1ed-c8e7-44e6-83b7-f5209421642c", - "parentUUID": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "isHook": false, - "skipped": false - }, + "tests": [], + "suites": [ { - "title": "Get publication by dataset id finds pubs for all datasets:", - "fullTitle": "Get publication data any number of ways: Get publication by dataset id finds pubs for all datasets:", - "timedOut": false, - "duration": 90, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/datasets/12,13,2201,6000/publications')\n .set('Accept', 'application/json')\n .expect(function(res) {\n const flatten = (list) => list.reduce(\n (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [],\n );\n const datasets = [12, 6000, 13, 2201];\n const datasetids = flatten(res.body.data.map((x) => x.datasetid));\n return datasets.every((x) => datasetids.includes(x));\n })\n .expect(200, done);", - "err": {}, - "uuid": "79257859-85e7-47de-b885-f73536c06127", - "parentUUID": "ad1ae0e8-cdcd-400d-a128-ff4776501cb9", - "isHook": false, - "skipped": false + "uuid": "e3554883-a2d5-4fdc-907e-76eeb35f9c01", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-db-test.js", + "file": "/test/v2.0-data-datasets-db-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"Datasets\"", + "fullTitle": "tests for /v2.0/data/datasets/db tests for get should respond 200 for \"Datasets\"", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/db', { \n 'qs': {\"limit\": 10,\"offset\": 0,\"database\":\"North American Pollen Database\"},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "cdaace30-ed4b-4e13-8b3e-a271bb0736fe", + "parentUUID": "e3554883-a2d5-4fdc-907e-76eeb35f9c01", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "cdaace30-ed4b-4e13-8b3e-a271bb0736fe" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 900000 } ], - "suites": [], - "passes": [ - "6ba2557b-d822-44fb-bc1b-d0b1032e1636", - "c9da47a8-12cc-4d8e-ae1a-8541c9cea640", - "90bbc6c5-46da-4720-9310-a5b925d1fc68", - "e55ff303-7026-42ea-9170-5188dcdec387", - "ef0303e0-1197-462a-aa0e-aad136ccc2f3", - "f0dfa1ed-c8e7-44e6-83b7-f5209421642c", - "79257859-85e7-47de-b885-f73536c06127" + "passes": [], + "failures": [], + "pending": [], + "skipped": [], + "duration": 0, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + }, + { + "uuid": "04806d92-01e1-4bd6-9b9e-2c926e5d4caf", + "title": "tests for /v2.0/apps/constdb/datasets", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasets-test.js", + "file": "/test/v2.0-apps-constdb-datasets-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [], + "suites": [ + { + "uuid": "ab42d8a5-12f7-499a-a241-14a63ce24394", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasets-test.js", + "file": "/test/v2.0-apps-constdb-datasets-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"Returns the set of datasets contained within a constituent database, identified by the constituent database identifier. Used for quick landing page generation. \"", + "fullTitle": "tests for /v2.0/apps/constdb/datasets tests for get should respond 200 for \"Returns the set of datasets contained within a constituent database, identified by the constituent database identifier. Used for quick landing page generation. \"", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasets', { \n 'qs': {\"dbid\":29},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "74c16519-7430-4189-b03c-95c9e4153863", + "parentUUID": "ab42d8a5-12f7-499a-a241-14a63ce24394", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "74c16519-7430-4189-b03c-95c9e4153863" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + } ], + "passes": [], "failures": [], "pending": [], "skipped": [], - "duration": 808, + "duration": 0, "root": false, "rootEmpty": false, - "_timeout": 15000 + "_timeout": 900000 }, { - "uuid": "2a7b481c-9542-47d3-ada9-ff140ebd74b4", - "title": "Get site data any number of ways:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/sites.js", - "file": "/test/sites.js", + "uuid": "ab555bc5-2878-4dde-967d-203368d22eef", + "title": "Get aeDNA assays by datasetid:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/assays.js", + "file": "/test/assays.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "Get site by singular id & return same id:", - "fullTitle": "Get site data any number of ways: Get site by singular id & return same id:", + "title": "every assay carries the FAIRe project terms:", + "fullTitle": "Get aeDNA assays by datasetid: every assay carries the FAIRe project terms:", "timedOut": false, - "duration": 111, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/sites/12')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(res.body['data'][0]['siteid'] === 12 & Object.keys(res.body['data'][0]).length > 0);\n done();\n });", - "err": {}, - "uuid": "a096ba33-f5cf-4c3e-bbb7-52bbd7f1d1be", - "parentUUID": "2a7b481c-9542-47d3-ada9-ff140ebd74b4", - "isHook": false, - "skipped": false - }, - { - "title": "Get site by altitude:", - "fullTitle": "Get site data any number of ways: Get site by altitude:", - "timedOut": true, - "duration": 5002, + "duration": 1, "state": "failed", "speed": null, "pass": false, "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/sites/?altmax=5000&altmin=3000')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(Object.keys(res.body['data'][0]).length > 0);\n done();\n });", + "code": "api.get('v2.0/data/datasets/500/assays')\n .set('Accept', 'application/json')\n .expect(200)\n .expect(function(res) {\n const assays = res.body.data.assays;\n expect(assays).to.be.an('array');\n assays.forEach(function(assay) {\n // sterilise_method / neg_cont / pos_cont -> projectMetadata D6/D7/D8.\n expect(assay).to.have.property('sterilisemethod');\n expect(assay).to.have.property('negcont');\n expect(assay).to.have.property('poscont');\n });\n })\n .end(done);", "err": { - "message": "Error: Timeout of 5000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/sites.js)", - "estack": "Error: Timeout of 5000ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/sites.js)\n at createTimeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/errors.js:386:15)\n at Runnable._timeoutError (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:431:10)\n at Timeout. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/mocha/lib/runnable.js:246:24)\n at listOnTimeout (node:internal/timers:614:17)\n at process.processTimers (node:internal/timers:549:7)", + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", "diff": null }, - "uuid": "bc523478-05dd-4416-b1c4-d94a05572eb9", - "parentUUID": "2a7b481c-9542-47d3-ada9-ff140ebd74b4", - "isHook": false, - "skipped": false - }, - { - "title": "Break sites by flipping altitudes:", - "fullTitle": "Get site data any number of ways: Break sites by flipping altitudes:", - "timedOut": false, - "duration": 5, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/sites/?altmax=3000&altmin=5000')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(res.body.status === 'failure');\n done();\n });", - "err": {}, - "uuid": "175599f3-27bb-434c-9a79-c73b243c43eb", - "parentUUID": "2a7b481c-9542-47d3-ada9-ff140ebd74b4", - "isHook": false, - "skipped": false - }, - { - "title": "Break sites by passing invalid siteid:", - "fullTitle": "Get site data any number of ways: Break sites by passing invalid siteid:", - "timedOut": false, - "duration": 556, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2.0/data/sites/abcd')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(500, done);\n done();\n });", - "err": {}, - "uuid": "099f294a-156d-4ebc-90b2-5e7eefc958b6", - "parentUUID": "2a7b481c-9542-47d3-ada9-ff140ebd74b4", + "uuid": "76cb0d82-fdcc-419a-8823-a767fcfe93b4", + "parentUUID": "ab555bc5-2878-4dde-967d-203368d22eef", "isHook": false, "skipped": false }, { - "title": "Get site by contact information for multiple authors:", - "fullTitle": "Get site data any number of ways: Get site by contact information for multiple authors:", + "title": "a dataset with no assays returns an empty array, not an error:", + "fullTitle": "Get aeDNA assays by datasetid: a dataset with no assays returns an empty array, not an error:", "timedOut": false, - "duration": 374, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "api.get('v2.0/data/contacts/12,13/sites')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length === 2;\n })\n .expect(200, done);", - "err": {}, - "uuid": "c65fee66-10e5-4b23-a466-caf30cbc8543", - "parentUUID": "2a7b481c-9542-47d3-ada9-ff140ebd74b4", + "code": "api.get('v2.0/data/datasets/500/assays')\n .set('Accept', 'application/json')\n .expect(200)\n .expect(function(res) {\n expect(res.body.data.assays).to.be.an('array');\n })\n .end(done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "088fd66a-1453-4368-8d3a-408c843d6e54", + "parentUUID": "ab555bc5-2878-4dde-967d-203368d22eef", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "a096ba33-f5cf-4c3e-bbb7-52bbd7f1d1be", - "175599f3-27bb-434c-9a79-c73b243c43eb", - "099f294a-156d-4ebc-90b2-5e7eefc958b6", - "c65fee66-10e5-4b23-a466-caf30cbc8543" - ], + "passes": [], "failures": [ - "bc523478-05dd-4416-b1c4-d94a05572eb9" + "76cb0d82-fdcc-419a-8823-a767fcfe93b4", + "088fd66a-1453-4368-8d3a-408c843d6e54" ], "pending": [], "skipped": [], - "duration": 6048, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 5000 }, { - "uuid": "d513ae07-6663-419e-84dc-d29cec6ece5a", - "title": "Any path goes to the api documentation:", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/neotoma_test.js", - "file": "/test/neotoma_test.js", + "uuid": "44f7f968-f1b2-47c5-b839-314068a2d8b5", + "title": "tests for /v1.5/data/datasets/{datasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-datasets-{datasetid}-test.js", + "file": "/test/v1.5-data-datasets-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], - "tests": [ + "tests": [], + "suites": [ { - "title": "`api-docs` redirects to the api documentation.", - "fullTitle": "Any path goes to the api documentation: `api-docs` redirects to the api documentation.", - "timedOut": false, - "duration": 2, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "api.get('v2')\n .set('Accept', 'application/json')\n .expect(302, done);", - "err": {}, - "uuid": "44ace4d7-4aa6-4eef-8d22-5a66808c5afb", - "parentUUID": "d513ae07-6663-419e-84dc-d29cec6ece5a", - "isHook": false, - "skipped": false + "uuid": "778d5d29-5563-40cf-b8d0-7820b4ab5c4a", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-datasets-{datasetid}-test.js", + "file": "/test/v1.5-data-datasets-{datasetid}-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"An array of datasets.\"", + "fullTitle": "tests for /v1.5/data/datasets/{datasetid} tests for get should respond 200 for \"An array of datasets.\"", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v1.5/data/datasets/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "3f88f077-e821-4e3f-bfe4-03400e707341", + "parentUUID": "778d5d29-5563-40cf-b8d0-7820b4ab5c4a", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "3f88f077-e821-4e3f-bfe4-03400e707341" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 900000 } ], - "suites": [], - "passes": [ - "44ace4d7-4aa6-4eef-8d22-5a66808c5afb" + "passes": [], + "failures": [], + "pending": [], + "skipped": [], + "duration": 0, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + }, + { + "uuid": "fa862ae2-e148-40e6-af45-e08bf09ec259", + "title": "tests for /v2.0/apps/constdb/datasetages", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetages-test.js", + "file": "/test/v2.0-apps-constdb-datasetages-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [], + "suites": [ + { + "uuid": "3405b133-9ff2-4c15-85c5-43049a1dbea1", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetages-test.js", + "file": "/test/v2.0-apps-constdb-datasetages-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", + "fullTitle": "tests for /v2.0/apps/constdb/datasetages tests for get should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetages', { \n 'qs': {\"dbid\":33},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "955ea27b-d1ed-479d-a971-b588b23cd709", + "parentUUID": "3405b133-9ff2-4c15-85c5-43049a1dbea1", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "955ea27b-d1ed-479d-a971-b588b23cd709" + ], + "pending": [], + "skipped": [], + "duration": 0, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + } ], + "passes": [], "failures": [], "pending": [], "skipped": [], - "duration": 2, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 }, { - "uuid": "57513529-8168-4861-97cc-dc843209b3ec", - "title": "tests for /v2.0/apps/constdb/datasets", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasets-test.js", - "file": "/test/v2.0-apps-constdb-datasets-test.js", + "uuid": "3f229cc1-cee9-4b62-b492-16e0c9aa19ef", + "title": "tests for /v1.5/data/geopoliticalunits/{gpid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-{gpid}-test.js", + "file": "/test/v1.5-data-geopoliticalunits-{gpid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "3c4f4f2b-1d40-4852-b2cf-13fe6d9e8a10", + "uuid": "6095069f-5dc9-4f67-aecd-8c698dc83da0", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasets-test.js", - "file": "/test/v2.0-apps-constdb-datasets-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-geopoliticalunits-{gpid}-test.js", + "file": "/test/v1.5-data-geopoliticalunits-{gpid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returns the set of datasets contained within a constituent database, identified by the constituent database identifier. Used for quick landing page generation. \"", - "fullTitle": "tests for /v2.0/apps/constdb/datasets tests for get should respond 200 for \"Returns the set of datasets contained within a constituent database, identified by the constituent database identifier. Used for quick landing page generation. \"", + "title": "should respond 200 for \"An array of geopolitical units.\"", + "fullTitle": "tests for /v1.5/data/geopoliticalunits/{gpid} tests for get should respond 200 for \"An array of geopolitical units.\"", "timedOut": false, - "duration": 78, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasets', { \n 'qs': {\"dbid\":18},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "b27a423a-2e29-48fd-a657-9df122978a98", - "parentUUID": "3c4f4f2b-1d40-4852-b2cf-13fe6d9e8a10", + "code": "var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits/5027', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "900bb9f8-8ffb-492b-b165-612309a618b3", + "parentUUID": "6095069f-5dc9-4f67-aecd-8c698dc83da0", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "b27a423a-2e29-48fd-a657-9df122978a98" + "passes": [], + "failures": [ + "900bb9f8-8ffb-492b-b165-612309a618b3" ], - "failures": [], "pending": [], "skipped": [], - "duration": 78, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5269,49 +5581,53 @@ "_timeout": 900000 }, { - "uuid": "e9dc010d-170f-4524-86b0-37b555e853e3", - "title": "tests for /v2.0/data/contacts/{contactid}/sites", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-sites-test.js", - "file": "/test/v2.0-data-contacts-{contactid}-sites-test.js", + "uuid": "b4b24f95-bd4d-417c-b6ca-160814bf5bf9", + "title": "tests for /v2.0/data/datasets/{datasetid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "2e5e4203-1a87-416b-9c18-5a5f2ea6984c", + "uuid": "90895b20-d4f6-4a36-b934-a192ba26779e", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-sites-test.js", - "file": "/test/v2.0-data-contacts-{contactid}-sites-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A Neotoma sites object.\"", - "fullTitle": "tests for /v2.0/data/contacts/{contactid}/sites tests for get should respond 200 for \"A Neotoma sites object.\"", + "title": "should respond 200 for \"An array of datasets.\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid} tests for get should respond 200 for \"An array of datasets.\"", "timedOut": false, - "duration": 99, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/6654/sites', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "4fa9cab2-7b85-4954-87e2-2cd9a94bb753", - "parentUUID": "2e5e4203-1a87-416b-9c18-5a5f2ea6984c", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "876d0eb0-f64b-49b4-8efc-6b64149b3c57", + "parentUUID": "90895b20-d4f6-4a36-b934-a192ba26779e", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "4fa9cab2-7b85-4954-87e2-2cd9a94bb753" + "passes": [], + "failures": [ + "876d0eb0-f64b-49b4-8efc-6b64149b3c57" ], - "failures": [], "pending": [], "skipped": [], - "duration": 99, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5327,49 +5643,53 @@ "_timeout": 900000 }, { - "uuid": "a214fb0a-e249-4314-9934-b851bb27275c", - "title": "tests for /v2.0/data/speleothems/{collectionunitid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-speleothems-{collectionunitid}-test.js", - "file": "/test/v2.0-data-speleothems-{collectionunitid}-test.js", + "uuid": "4d391fce-734d-4995-b5f1-596284bb6ed8", + "title": "tests for /v2.0/apps/constdb/datasetuploads", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetuploads-test.js", + "file": "/test/v2.0-apps-constdb-datasetuploads-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "53a7091f-4a58-4e8b-bbd6-c4338558958a", + "uuid": "8db9fbc0-26a6-4805-b866-4e3cb782515e", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-speleothems-{collectionunitid}-test.js", - "file": "/test/v2.0-data-speleothems-{collectionunitid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-datasetuploads-test.js", + "file": "/test/v2.0-apps-constdb-datasetuploads-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Metadata associated with speleothems submitted through SISAL.\"", - "fullTitle": "tests for /v2.0/data/speleothems/{collectionunitid} tests for get should respond 200 for \"Metadata associated with speleothems submitted through SISAL.\"", + "title": "should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", + "fullTitle": "tests for /v2.0/apps/constdb/datasetuploads tests for get should respond 200 for \"Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. \"", "timedOut": false, - "duration": 101, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/speleothems/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "bf6cca29-3264-4838-8486-a99976e3a70a", - "parentUUID": "53a7091f-4a58-4e8b-bbd6-c4338558958a", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetuploads', { \n 'qs': {\"dbid\":4},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "dc999188-d79a-45b5-a5f7-a3d3b528adfe", + "parentUUID": "8db9fbc0-26a6-4805-b866-4e3cb782515e", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "bf6cca29-3264-4838-8486-a99976e3a70a" + "passes": [], + "failures": [ + "dc999188-d79a-45b5-a5f7-a3d3b528adfe" ], - "failures": [], "pending": [], "skipped": [], - "duration": 101, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5385,49 +5705,115 @@ "_timeout": 900000 }, { - "uuid": "fa92c019-b324-478b-8db3-d28904c284bb", - "title": "tests for /v2.0/apps/datasettypes", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-datasettypes-test.js", - "file": "/test/v2.0-apps-datasettypes-test.js", + "uuid": "0735bda5-f0ee-46e6-92b3-93127074cc8d", + "title": "tests for /v2.0/data/datasets/{datasetid}/lithology", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-lithology-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-lithology-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "13b7dd54-073d-4052-8f0e-405c36bbcb35", + "uuid": "bb6f707a-2035-41b7-bf84-2cf19dcc2556", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-datasettypes-test.js", - "file": "/test/v2.0-apps-datasettypes-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-lithology-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-lithology-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A table of Neotoma collection types.\"", - "fullTitle": "tests for /v2.0/apps/datasettypes tests for get should respond 200 for \"A table of Neotoma collection types.\"", + "title": "should respond 200 for \"Lithology\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/lithology tests for get should respond 200 for \"Lithology\"", "timedOut": false, - "duration": 112, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/datasettypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "93991a2c-1fa5-4cac-8af8-26eebb4687ae", - "parentUUID": "13b7dd54-073d-4052-8f0e-405c36bbcb35", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/lithology', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "caca6ebe-267a-4151-a024-8371cd368039", + "parentUUID": "bb6f707a-2035-41b7-bf84-2cf19dcc2556", + "isHook": false, + "skipped": false + } + ], + "suites": [], + "passes": [], + "failures": [ + "caca6ebe-267a-4151-a024-8371cd368039" + ], + "pending": [], + "skipped": [], + "duration": 1, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + } + ], + "passes": [], + "failures": [], + "pending": [], + "skipped": [], + "duration": 0, + "root": false, + "rootEmpty": false, + "_timeout": 900000 + }, + { + "uuid": "85beb164-a6f7-4e74-a6ab-6dccabb411a4", + "title": "tests for /v2.0/data/datasets/{datasetid}/taxa", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-taxa-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-taxa-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [], + "suites": [ + { + "uuid": "b8aa503f-a1c1-49d0-99d3-9eb81d34ff2f", + "title": "tests for get", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-taxa-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-taxa-test.js", + "beforeHooks": [], + "afterHooks": [], + "tests": [ + { + "title": "should respond 200 for \"Taxa\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/taxa tests for get should respond 200 for \"Taxa\"", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/taxa', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "5c947028-851e-44d6-9255-5397b5a780e9", + "parentUUID": "b8aa503f-a1c1-49d0-99d3-9eb81d34ff2f", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "93991a2c-1fa5-4cac-8af8-26eebb4687ae" + "passes": [], + "failures": [ + "5c947028-851e-44d6-9255-5397b5a780e9" ], - "failures": [], "pending": [], "skipped": [], - "duration": 112, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5443,49 +5829,53 @@ "_timeout": 900000 }, { - "uuid": "da45889e-f0a3-4603-8141-84a2190e7975", - "title": "tests for /v2.0/data/sites", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-test.js", - "file": "/test/v2.0-data-sites-test.js", + "uuid": "7ac7eecd-ba28-4481-81a1-16eab5aaebdd", + "title": "tests for /v2.0/data/summary/dstypemonth", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dstypemonth-test.js", + "file": "/test/v2.0-data-summary-dstypemonth-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "8c755e8f-4df1-4965-a807-243b1ed5fafd", + "uuid": "47db416d-93f7-4e7a-b68f-1b710ecb963d", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-test.js", - "file": "/test/v2.0-data-sites-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-summary-dstypemonth-test.js", + "file": "/test/v2.0-data-summary-dstypemonth-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of sites.\"", - "fullTitle": "tests for /v2.0/data/sites tests for get should respond 200 for \"An array of sites.\"", + "title": "should respond 200 for \"A count of the datasets added by datasettype for the requested period.\"", + "fullTitle": "tests for /v2.0/data/summary/dstypemonth tests for get should respond 200 for \"A count of the datasets added by datasettype for the requested period.\"", "timedOut": false, - "duration": 729, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites', { \n 'qs': {\"sitename\":\"ex ea nostrud\",\"database\":\"Indo-Pacific Pollen Database\",\"datasettype\":\"energy dispersive X-ray spectroscopy (EDS/EDX)\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"siteid\":24072,\"datasetid\":1420415,\"doi\":\"10s728234426/YV6:IWR;;\",\"gpid\":5392,\"keyword\":\"interglacial\",\"contactid\":20081,\"taxa\":\"eu\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":15801863,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "55184b95-0451-4062-8d40-33d33d6990ab", - "parentUUID": "8c755e8f-4df1-4965-a807-243b1ed5fafd", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/summary/dstypemonth', { \n 'qs': {\"start\": 1,\"end\": 10},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "25bd3977-e93c-4963-82cb-c554ce5d2e3b", + "parentUUID": "47db416d-93f7-4e7a-b68f-1b710ecb963d", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "55184b95-0451-4062-8d40-33d33d6990ab" + "passes": [], + "failures": [ + "25bd3977-e93c-4963-82cb-c554ce5d2e3b" ], - "failures": [], "pending": [], "skipped": [], - "duration": 729, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5501,49 +5891,53 @@ "_timeout": 900000 }, { - "uuid": "bc4de0c9-9126-40ad-9922-dac2d506460f", - "title": "tests for /v2.0/data/spatial/faunal", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-faunal-test.js", - "file": "/test/v2.0-data-spatial-faunal-test.js", + "uuid": "bd74aa99-080c-4d9f-8e50-8029fba69fdb", + "title": "tests for /v2.0/data/sites/{siteid}/chronologies", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-chronologies-test.js", + "file": "/test/v2.0-data-sites-{siteid}-chronologies-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "960d6443-c628-4d3e-966d-812c904521aa", + "uuid": "8746f9ed-2ba7-48a9-8f5e-af6d4c7f546a", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-faunal-test.js", - "file": "/test/v2.0-data-spatial-faunal-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-chronologies-test.js", + "file": "/test/v2.0-data-sites-{siteid}-chronologies-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An object containing all matched species names, identifiers and a GeoJSON polygon representing the UNIONed ranges for the selected species. All data is derived from:
* Mammal Diversity Database. (2020). Mammal Diversity Database (Version 1.2) [Data set]. Zenodo. DOI: [10.5281/zenodo.4139818](https://doi.org/10.5281/zenodo.4139818).
* Map of Life. (2021). Mammal range maps harmonised to the Mammals Diversity Database [Data set]. Map of Life. [10.48600/MOL-48VZ-P413](https://doi.org/10.48600/MOL-48VZ-P413) \"", - "fullTitle": "tests for /v2.0/data/spatial/faunal tests for get should respond 200 for \"An object containing all matched species names, identifiers and a GeoJSON polygon representing the UNIONed ranges for the selected species. All data is derived from:
* Mammal Diversity Database. (2020). Mammal Diversity Database (Version 1.2) [Data set]. Zenodo. DOI: [10.5281/zenodo.4139818](https://doi.org/10.5281/zenodo.4139818).
* Map of Life. (2021). Mammal range maps harmonised to the Mammals Diversity Database [Data set]. Map of Life. [10.48600/MOL-48VZ-P413](https://doi.org/10.48600/MOL-48VZ-P413) \"", + "title": "should respond 200 for \"chronology\"", + "fullTitle": "tests for /v2.0/data/sites/{siteid}/chronologies tests for get should respond 200 for \"chronology\"", "timedOut": false, - "duration": 91, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/faunal', { \n 'qs': {\"sciname\":\"esse\",\"proj\": 4326,\"prec\": 1000},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "fb3877c1-f4a6-48a2-a787-97e76e030411", - "parentUUID": "960d6443-c628-4d3e-966d-812c904521aa", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/chronologies', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "dadc1dfd-698f-457a-9263-447e7dfc74cd", + "parentUUID": "8746f9ed-2ba7-48a9-8f5e-af6d4c7f546a", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "fb3877c1-f4a6-48a2-a787-97e76e030411" + "passes": [], + "failures": [ + "dadc1dfd-698f-457a-9263-447e7dfc74cd" ], - "failures": [], "pending": [], "skipped": [], - "duration": 91, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5559,49 +5953,53 @@ "_timeout": 900000 }, { - "uuid": "fa08e4dc-ec68-4c23-b05c-0c642d59175c", - "title": "tests for /v1.5/apps/collectionTypes", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-collectionTypes-test.js", - "file": "/test/v1.5-apps-collectionTypes-test.js", + "uuid": "f1271ee6-0989-4e4e-970f-48c5ec6dac29", + "title": "tests for /v2.0/apps/taphonomysystems", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taphonomysystems-test.js", + "file": "/test/v2.0-apps-taphonomysystems-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "6a3bd9f1-5958-4979-9e49-e727e7aa9488", + "uuid": "36bf1068-2edf-4717-ad22-4a4332530bea", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-collectionTypes-test.js", - "file": "/test/v1.5-apps-collectionTypes-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taphonomysystems-test.js", + "file": "/test/v2.0-apps-taphonomysystems-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returns the set of collectiontypes recorded in Neotoma.\"", - "fullTitle": "tests for /v1.5/apps/collectionTypes tests for get should respond 200 for \"Returns the set of collectiontypes recorded in Neotoma.\"", + "title": "should respond 200 for \"A table of Neotoma collection types.\"", + "fullTitle": "tests for /v2.0/apps/taphonomysystems tests for get should respond 200 for \"A table of Neotoma collection types.\"", "timedOut": false, - "duration": 68, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/collectionTypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "1f2fb06a-c172-46eb-830f-3905051e783b", - "parentUUID": "6a3bd9f1-5958-4979-9e49-e727e7aa9488", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taphonomysystems', { \n 'qs': {\"datasettypeid\":26},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "24fe7ef4-b6f0-49d7-8d02-a6cb605f5185", + "parentUUID": "36bf1068-2edf-4717-ad22-4a4332530bea", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "1f2fb06a-c172-46eb-830f-3905051e783b" + "passes": [], + "failures": [ + "24fe7ef4-b6f0-49d7-8d02-a6cb605f5185" ], - "failures": [], "pending": [], "skipped": [], - "duration": 68, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5617,49 +6015,53 @@ "_timeout": 900000 }, { - "uuid": "2063622c-a231-4e42-9fe6-be3dc0debba5", - "title": "tests for /v2.0/data/aedna/sequences/{datasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-sequences-{datasetid}-test.js", - "file": "/test/v2.0-data-aedna-sequences-{datasetid}-test.js", + "uuid": "001f3a4e-6c54-41b2-bff0-d4d419294342", + "title": "tests for /v1.5/data/contacts/{contactid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-contacts-{contactid}-test.js", + "file": "/test/v1.5-data-contacts-{contactid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "c4ac23cb-f524-4def-a31c-5247968892c3", + "uuid": "a60cbf4b-ba96-4627-b572-951473a1d7b1", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-aedna-sequences-{datasetid}-test.js", - "file": "/test/v2.0-data-aedna-sequences-{datasetid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-contacts-{contactid}-test.js", + "file": "/test/v1.5-data-contacts-{contactid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"aeDNA sequences grouped by taxon for the dataset.\"", - "fullTitle": "tests for /v2.0/data/aedna/sequences/{datasetid} tests for get should respond 200 for \"aeDNA sequences grouped by taxon for the dataset.\"", + "title": "should respond 200 for \"Contact\"", + "fullTitle": "tests for /v1.5/data/contacts/{contactid} tests for get should respond 200 for \"Contact\"", "timedOut": false, - "duration": 93, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/aedna/sequences/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "f92dc5e7-2404-4371-8858-6c7ec87afbeb", - "parentUUID": "c4ac23cb-f524-4def-a31c-5247968892c3", + "code": "var response = request('get', 'http://localhost:3001/v1.5/data/contacts/-71846374', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "749551c6-d035-4b91-b5dd-90f3dc189a0c", + "parentUUID": "a60cbf4b-ba96-4627-b572-951473a1d7b1", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "f92dc5e7-2404-4371-8858-6c7ec87afbeb" + "passes": [], + "failures": [ + "749551c6-d035-4b91-b5dd-90f3dc189a0c" ], - "failures": [], "pending": [], "skipped": [], - "duration": 93, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5675,49 +6077,53 @@ "_timeout": 900000 }, { - "uuid": "db26b31a-67a2-493f-8378-0a95f6235f05", - "title": "tests for /v1.5/data/downloads/{datasetid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-downloads-{datasetid}-test.js", - "file": "/test/v1.5-data-downloads-{datasetid}-test.js", + "uuid": "9a5f38e0-7ad9-40a1-9f52-8cdc4dbc5f80", + "title": "tests for /v2.0/data/spatial/lakes", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-lakes-test.js", + "file": "/test/v2.0-data-spatial-lakes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "2ce11dbf-4752-4b02-bd87-baeda722da7b", + "uuid": "7f05bfd6-a2f2-477f-864a-8c307f4efb60", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-downloads-{datasetid}-test.js", - "file": "/test/v1.5-data-downloads-{datasetid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-spatial-lakes-test.js", + "file": "/test/v2.0-data-spatial-lakes-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returned download object.\"", - "fullTitle": "tests for /v1.5/data/downloads/{datasetid} tests for get should respond 200 for \"Returned download object.\"", + "title": "should respond 200 for \"An object containing all matched lakes within some buffer distance of a site. Data derived from the [HydroLakes database](https://www.hydrosheds.org/products/hydrolakes):
* Messager, M.L., Lehner, B., Grill, G., Nedeva, I., Schmitt, O. (2016). Estimating the volume and age of water stored in global lakes using a geo-statistical approach. *Nature Communications*, 7: 13603. doi: [10.1038/ncomms13603](https://doi.org/10.1038/ncomms13603) \"", + "fullTitle": "tests for /v2.0/data/spatial/lakes tests for get should respond 200 for \"An object containing all matched lakes within some buffer distance of a site. Data derived from the [HydroLakes database](https://www.hydrosheds.org/products/hydrolakes):
* Messager, M.L., Lehner, B., Grill, G., Nedeva, I., Schmitt, O. (2016). Estimating the volume and age of water stored in global lakes using a geo-statistical approach. *Nature Communications*, 7: 13603. doi: [10.1038/ncomms13603](https://doi.org/10.1038/ncomms13603) \"", "timedOut": false, - "duration": 749, - "state": "passed", - "speed": "medium", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/data/downloads/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "49a3be2f-1d51-4e72-8b74-1216ac8050ce", - "parentUUID": "2ce11dbf-4752-4b02-bd87-baeda722da7b", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/spatial/lakes', { \n 'qs': {\"siteid\":26056,\"buffer\":8474,\"prec\": 1000,\"proj\": 4326},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "9a79db24-8450-492f-9902-4331067c7f41", + "parentUUID": "7f05bfd6-a2f2-477f-864a-8c307f4efb60", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "49a3be2f-1d51-4e72-8b74-1216ac8050ce" + "passes": [], + "failures": [ + "9a79db24-8450-492f-9902-4331067c7f41" ], - "failures": [], "pending": [], "skipped": [], - "duration": 749, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5733,49 +6139,53 @@ "_timeout": 900000 }, { - "uuid": "6eee8822-364e-435a-89ca-f066732cac0e", - "title": "tests for /v1.5/data/sites/{siteid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-sites-{siteid}-test.js", - "file": "/test/v1.5-data-sites-{siteid}-test.js", + "uuid": "0de0fbc9-95c7-4ba2-82fc-e561644cfc94", + "title": "tests for /v2.0/data/datasets_elc", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-test.js", + "file": "/test/v2.0-data-datasets_elc-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "fe17e7a6-49e6-475e-b584-8b3bb8df66e5", + "uuid": "888f5522-227d-46de-b395-e486387d0fe3", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-data-sites-{siteid}-test.js", - "file": "/test/v1.5-data-sites-{siteid}-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets_elc-test.js", + "file": "/test/v2.0-data-datasets_elc-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of site elements.\"", - "fullTitle": "tests for /v1.5/data/sites/{siteid} tests for get should respond 200 for \"An array of site elements.\"", + "title": "should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", + "fullTitle": "tests for /v2.0/data/datasets_elc tests for get should respond 200 for \"A Neotoma datasets object suitable for the EarthLife Consortium API.\"", "timedOut": false, - "duration": 75, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/data/sites/660', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "73556f3e-413e-47e9-a8af-9e740f5f1f21", - "parentUUID": "fe17e7a6-49e6-475e-b584-8b3bb8df66e5", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets_elc', { \n 'qs': {\"siteid\":5842,\"contactid\":15659,\"datasettype\":\"diatom surface sample\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageyoung\": 1000,\"ageold\": 10000,\"ageof\":8754269},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "ee0725b1-6b0a-4df8-b688-c618786e68d5", + "parentUUID": "888f5522-227d-46de-b395-e486387d0fe3", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "73556f3e-413e-47e9-a8af-9e740f5f1f21" + "passes": [], + "failures": [ + "ee0725b1-6b0a-4df8-b688-c618786e68d5" ], - "failures": [], "pending": [], "skipped": [], - "duration": 75, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5791,49 +6201,53 @@ "_timeout": 900000 }, { - "uuid": "8a49fc15-d96c-4df2-aa44-094c46fe017c", - "title": "tests for /v2.0/apps/taphonomysystems", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taphonomysystems-test.js", - "file": "/test/v2.0-apps-taphonomysystems-test.js", + "uuid": "76afe5f2-1d59-4582-9545-88e6197ebd13", + "title": "tests for /v2.0/data/occurrences", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-test.js", + "file": "/test/v2.0-data-occurrences-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "5f5d8c06-a296-438f-b95d-166b0243cbd5", + "uuid": "3b687dcd-eb12-4c34-a52b-9ca7a6e49128", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-taphonomysystems-test.js", - "file": "/test/v2.0-apps-taphonomysystems-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-test.js", + "file": "/test/v2.0-data-occurrences-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A table of Neotoma collection types.\"", - "fullTitle": "tests for /v2.0/apps/taphonomysystems tests for get should respond 200 for \"A table of Neotoma collection types.\"", + "title": "should respond 200 for \"occurrence\"", + "fullTitle": "tests for /v2.0/data/occurrences tests for get should respond 200 for \"occurrence\"", "timedOut": false, - "duration": 76, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/taphonomysystems', { \n 'qs': {\"datasettypeid\":28},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "d813fea9-11c4-4589-84f9-449be4f0b8db", - "parentUUID": "5f5d8c06-a296-438f-b95d-166b0243cbd5", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/occurrences', { \n 'qs': {\"taxonname\":\"pariatur eu cillum laboris\",\"taxonid\":27771,\"siteid\":30886,\"sitename\":\"eiusmod\",\"datasettype\":\"ostracode\",\"altmin\": 10,\"altmax\": 100,\"loc\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"crs\\\":{\\\"type\\\":\\\"name\\\",\\\"properties\\\":{\\\"name\\\":\\\"EPSG:4326\\\"}},\\\"coordinates\\\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}\",\"ageof\":1083090,\"ageyoung\": 1000,\"ageold\": 10000,\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "d3d8d275-36f7-4bc1-8555-42c8dcb26f82", + "parentUUID": "3b687dcd-eb12-4c34-a52b-9ca7a6e49128", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "d813fea9-11c4-4589-84f9-449be4f0b8db" + "passes": [], + "failures": [ + "d3d8d275-36f7-4bc1-8555-42c8dcb26f82" ], - "failures": [], "pending": [], "skipped": [], - "duration": 76, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5849,49 +6263,53 @@ "_timeout": 900000 }, { - "uuid": "cb1d6f03-f0eb-44e8-b8e0-0f27b0ef60a4", - "title": "tests for /v2.0/data/geopoliticalunits/{gpid}/datasets", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", - "file": "/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", + "uuid": "26a9fdc0-fe55-4ae7-a501-49141836e239", + "title": "tests for /v2.0/data/datasets/{datasetid}/contacts", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-contacts-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-contacts-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "f4fca9e6-585e-4ef2-9884-066484d15f87", + "uuid": "00b82459-aca9-47aa-8320-a39e186eedaf", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", - "file": "/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-contacts-test.js", + "file": "/test/v2.0-data-datasets-{datasetid}-contacts-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"An array of datasets.\"", - "fullTitle": "tests for /v2.0/data/geopoliticalunits/{gpid}/datasets tests for get should respond 200 for \"An array of datasets.\"", + "title": "should respond 200 for \"contact\"", + "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/contacts tests for get should respond 200 for \"contact\"", "timedOut": false, - "duration": 132, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/4173/datasets', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "33984b99-d0eb-42fd-be96-6a55270cb914", - "parentUUID": "f4fca9e6-585e-4ef2-9884-066484d15f87", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/contacts', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "7ccd2c04-4476-4f59-8b79-da048e4e6fed", + "parentUUID": "00b82459-aca9-47aa-8320-a39e186eedaf", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "33984b99-d0eb-42fd-be96-6a55270cb914" + "passes": [], + "failures": [ + "7ccd2c04-4476-4f59-8b79-da048e4e6fed" ], - "failures": [], "pending": [], "skipped": [], - "duration": 132, + "duration": 1, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5907,49 +6325,53 @@ "_timeout": 900000 }, { - "uuid": "7f9846bb-9243-45d0-bb79-691b308f8760", - "title": "tests for /v1.5/apps/DatasetTypes", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-DatasetTypes-test.js", - "file": "/test/v1.5-apps-DatasetTypes-test.js", + "uuid": "a689a42e-6011-41ea-bdb4-2cd5cda3fd39", + "title": "tests for /v2.0/apps/constdb", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-test.js", + "file": "/test/v2.0-apps-constdb-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "89bf8e25-0c72-40cb-b0dd-9d66bcf637bd", + "uuid": "47770c2b-c5d0-4ad6-ba37-e01f7b82e887", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v1.5-apps-DatasetTypes-test.js", - "file": "/test/v1.5-apps-DatasetTypes-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-constdb-test.js", + "file": "/test/v2.0-apps-constdb-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"Returns the set of dataset types supported by Neotoma.\"", - "fullTitle": "tests for /v1.5/apps/DatasetTypes tests for get should respond 200 for \"Returns the set of dataset types supported by Neotoma.\"", + "title": "should respond 200 for \"Returns metadata about each [constituent database](https://www.neotomadb.org/data/constituent-databases) in Neotoma, including Summary Information about dataset types within the database and the age spans of the records in the database. Constituent databases \"", + "fullTitle": "tests for /v2.0/apps/constdb tests for get should respond 200 for \"Returns metadata about each [constituent database](https://www.neotomadb.org/data/constituent-databases) in Neotoma, including Summary Information about dataset types within the database and the age spans of the records in the database. Constituent databases \"", "timedOut": false, - "duration": 117, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v1.5/apps/DatasetTypes', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "a5c010d8-4119-47c1-8149-24ece9986253", - "parentUUID": "89bf8e25-0c72-40cb-b0dd-9d66bcf637bd", + "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/constdb', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "cdef738a-5834-4a62-8e05-3693f22c61fe", + "parentUUID": "47770c2b-c5d0-4ad6-ba37-e01f7b82e887", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "a5c010d8-4119-47c1-8149-24ece9986253" + "passes": [], + "failures": [ + "cdef738a-5834-4a62-8e05-3693f22c61fe" ], - "failures": [], "pending": [], "skipped": [], - "duration": 117, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -5965,49 +6387,53 @@ "_timeout": 900000 }, { - "uuid": "300c3efd-6920-41b5-bf98-9d2c19f43b69", - "title": "tests for /v2.0/apps/depositionalenvironments/root", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depositionalenvironments-root-test.js", - "file": "/test/v2.0-apps-depositionalenvironments-root-test.js", + "uuid": "08a25127-e625-4390-a65c-51fc1fbfcd25", + "title": "tests for /v2.0/data/contacts/{contactid}", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-test.js", + "file": "/test/v2.0-data-contacts-{contactid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [], "suites": [ { - "uuid": "e608aa8e-0733-43ac-9f24-3a98a6cabb91", + "uuid": "6d9c7d5d-23b4-4a35-a06c-47a163fa147d", "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-apps-depositionalenvironments-root-test.js", - "file": "/test/v2.0-apps-depositionalenvironments-root-test.js", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-contacts-{contactid}-test.js", + "file": "/test/v2.0-data-contacts-{contactid}-test.js", "beforeHooks": [], "afterHooks": [], "tests": [ { - "title": "should respond 200 for \"A table of Neotoma collection types.\"", - "fullTitle": "tests for /v2.0/apps/depositionalenvironments/root tests for get should respond 200 for \"A table of Neotoma collection types.\"", + "title": "should respond 200 for \"A Neotoma contacts object.\"", + "fullTitle": "tests for /v2.0/data/contacts/{contactid} tests for get should respond 200 for \"A Neotoma contacts object.\"", "timedOut": false, - "duration": 69, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, "pending": false, "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/apps/depositionalenvironments/root', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "196822e3-aa85-4cf7-bf51-83f9260950ef", - "parentUUID": "e608aa8e-0733-43ac-9f24-3a98a6cabb91", + "code": "var response = request('get', 'http://localhost:3001/v2.0/data/contacts/500', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", + "err": { + "message": "TypeError: Cannot read properties of undefined (reading 'statusCode')", + "estack": "TypeError: Cannot read properties of undefined (reading 'statusCode')\n at Assertion. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/lib/assertions/statuscode.js:15:45)\n at ctx. (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai/lib/chai/utils/addMethod.js:41:25)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/chakram/node_modules/chai-as-promised/lib/chai-as-promised.js:308:26\n at _fulfilled (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:854:54)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:883:30\n at Promise.promise.promiseDispatch (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:816:13)\n at /Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:624:44\n at runSingle (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:137:13)\n at flush (/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/node_modules/q/q.js:125:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:85:11)", + "diff": null + }, + "uuid": "206fea48-76f2-4ecd-86d8-49825b15c58a", + "parentUUID": "6d9c7d5d-23b4-4a35-a06c-47a163fa147d", "isHook": false, "skipped": false } ], "suites": [], - "passes": [ - "196822e3-aa85-4cf7-bf51-83f9260950ef" + "passes": [], + "failures": [ + "206fea48-76f2-4ecd-86d8-49825b15c58a" ], - "failures": [], "pending": [], "skipped": [], - "duration": 69, + "duration": 0, "root": false, "rootEmpty": false, "_timeout": 900000 @@ -6023,178 +6449,343 @@ "_timeout": 900000 }, { - "uuid": "3355fe9b-8ec3-4c17-bca1-903b851b027b", - "title": "tests for /v2.0/data/sites/{siteid}/datasets", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets-test.js", - "file": "/test/v2.0-data-sites-{siteid}-datasets-test.js", + "uuid": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "title": "Get contact data:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/contacts.js", + "file": "/test/contacts.js", "beforeHooks": [], "afterHooks": [], - "tests": [], - "suites": [ + "tests": [ + { + "title": "The default limit of 25 should be reached for contact data:", + "fullTitle": "Get contact data: The default limit of 25 should be reached for contact data:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/contacts/?contactstatus=retired')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 25);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "33133530-4d62-43b7-a5fa-71aefc1dfb20", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false + }, + { + "title": "The example in the swagger should return an object:", + "fullTitle": "Get contact data: The example in the swagger should return an object:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/contacts?familyname=Grimm&contactstatus=active&limit=25')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data[0]['familyname'], 'Grimm');\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "fe8edae3-5a84-4502-b4a8-0fdfebc70901", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false + }, + { + "title": "Contact queries should be case insensitive:", + "fullTitle": "Get contact data: Contact queries should be case insensitive:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/contacts/?contactstatus=Retired')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 25);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "416d94b0-782c-4cb5-879a-694d37391f3a", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false + }, + { + "title": "Changing the limit should change the number of contacts retrieved:", + "fullTitle": "Get contact data: Changing the limit should change the number of contacts retrieved:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/contacts/?status=retired&limit=30')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 30);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "2b0e1e2b-e04a-449d-b5c1-f63cf048d4f5", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false + }, + { + "title": "A single contact (12) should be returned.", + "fullTitle": "Get contact data: A single contact (12) should be returned.", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/contacts/12')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data[0]['contactid'], 12);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "a59f112e-c7c2-4b97-90a1-0b7f9891e568", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false + }, { - "uuid": "acc3e0a7-a314-48f1-b192-f2bce7772cc0", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-sites-{siteid}-datasets-test.js", - "file": "/test/v2.0-data-sites-{siteid}-datasets-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"An array of datasets.\"", - "fullTitle": "tests for /v2.0/data/sites/{siteid}/datasets tests for get should respond 200 for \"An array of datasets.\"", - "timedOut": false, - "duration": 1563, - "state": "passed", - "speed": "slow", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/datasets', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "82ae4cd2-b7a0-4357-b16a-ad4e7f4ce26e", - "parentUUID": "acc3e0a7-a314-48f1-b192-f2bce7772cc0", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "82ae4cd2-b7a0-4357-b16a-ad4e7f4ce26e" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 1563, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - } - ], - "passes": [], - "failures": [], - "pending": [], - "skipped": [], - "duration": 0, - "root": false, - "rootEmpty": false, - "_timeout": 900000 - }, - { - "uuid": "1d462c53-67dc-4b86-bfb8-145a81a2ae6d", - "title": "tests for /v2.0/data/occurrences/{occurrenceid}", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-{occurrenceid}-test.js", - "file": "/test/v2.0-data-occurrences-{occurrenceid}-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [], - "suites": [ + "title": "All contacts from datasets should be returned.", + "fullTitle": "Get contact data: All contacts from datasets should be returned.", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/12,13/contacts')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(res.body.data.length, 2);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "8c77e93f-18f3-40e3-9a9b-0c9b8bf4319c", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false + }, { - "uuid": "17c636ae-f677-45c1-8c6f-bbd4b0643965", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-occurrences-{occurrenceid}-test.js", - "file": "/test/v2.0-data-occurrences-{occurrenceid}-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"occurrence\"", - "fullTitle": "tests for /v2.0/data/occurrences/{occurrenceid} tests for get should respond 200 for \"occurrence\"", - "timedOut": false, - "duration": 81, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/occurrences/500', { \n 'qs': {\"limit\": 10,\"offset\": 0},\n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "46835e7d-508d-4b39-9ad8-c9df1868ae16", - "parentUUID": "17c636ae-f677-45c1-8c6f-bbd4b0643965", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "46835e7d-508d-4b39-9ad8-c9df1868ae16" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 81, - "root": false, - "rootEmpty": false, - "_timeout": 900000 + "title": "The length of returned contacts should be equivalent to the number of datasets.", + "fullTitle": "Get contact data: The length of returned contacts should be equivalent to the number of datasets.", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/12,13/contacts')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n const test = [];\n assert.strictEqual(test.length, 0);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "276b9317-6a31-442e-98d3-d7325590d8b1", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false + }, + { + "title": "The length of returned contacts should be equivalent to the number of sites.", + "fullTitle": "Get contact data: The length of returned contacts should be equivalent to the number of sites.", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/datasets/102,1435,1,27/contacts')\n .set('Accept', 'application/json')\n .end(function(err, res) {\n if (err) return done(err);\n assert.strictEqual(Object.keys(res.body.data).length, 4);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "324e4110-9186-41f5-8fa5-6dd7159aee86", + "parentUUID": "26e20343-4c54-4d2a-88f6-27f39b6a824b", + "isHook": false, + "skipped": false } ], + "suites": [], "passes": [], - "failures": [], + "failures": [ + "33133530-4d62-43b7-a5fa-71aefc1dfb20", + "fe8edae3-5a84-4502-b4a8-0fdfebc70901", + "416d94b0-782c-4cb5-879a-694d37391f3a", + "2b0e1e2b-e04a-449d-b5c1-f63cf048d4f5", + "a59f112e-c7c2-4b97-90a1-0b7f9891e568", + "8c77e93f-18f3-40e3-9a9b-0c9b8bf4319c", + "276b9317-6a31-442e-98d3-d7325590d8b1", + "324e4110-9186-41f5-8fa5-6dd7159aee86" + ], "pending": [], "skipped": [], - "duration": 0, + "duration": 2, "root": false, "rootEmpty": false, - "_timeout": 900000 + "_timeout": 5000 }, { - "uuid": "c5654fdb-5d38-4a54-bd8b-e432251becc6", - "title": "tests for /v2.0/data/datasets/{datasetid}/assays", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-assays-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-assays-test.js", + "uuid": "7ae8febd-9fc6-4101-8471-e2c4e0acc58e", + "title": "Get site data any number of ways:", + "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/sites.js", + "file": "/test/sites.js", "beforeHooks": [], "afterHooks": [], - "tests": [], - "suites": [ + "tests": [ { - "uuid": "2272f730-4e77-417f-906c-b5e8b5cf2933", - "title": "tests for get", - "fullFile": "/Users/sedv8808/HT-Data/UWisc/01_API/api_nodetest/test/v2.0-data-datasets-{datasetid}-assays-test.js", - "file": "/test/v2.0-data-datasets-{datasetid}-assays-test.js", - "beforeHooks": [], - "afterHooks": [], - "tests": [ - { - "title": "should respond 200 for \"Assays\"", - "fullTitle": "tests for /v2.0/data/datasets/{datasetid}/assays tests for get should respond 200 for \"Assays\"", - "timedOut": false, - "duration": 79, - "state": "passed", - "speed": "fast", - "pass": true, - "fail": false, - "pending": false, - "context": null, - "code": "var response = request('get', 'http://localhost:3001/v2.0/data/datasets/500/assays', { \n 'time': true\n});\nexpect(response).to.have.status(200);\nreturn chakram.wait();", - "err": {}, - "uuid": "5c8d3d61-6435-4747-b571-cc8053555741", - "parentUUID": "2272f730-4e77-417f-906c-b5e8b5cf2933", - "isHook": false, - "skipped": false - } - ], - "suites": [], - "passes": [ - "5c8d3d61-6435-4747-b571-cc8053555741" - ], - "failures": [], - "pending": [], - "skipped": [], - "duration": 79, - "root": false, - "rootEmpty": false, - "_timeout": 900000 + "title": "Get site by singular id & return same id:", + "fullTitle": "Get site data any number of ways: Get site by singular id & return same id:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/sites/12')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(res.body['data'][0]['siteid'] === 12 & Object.keys(res.body['data'][0]).length > 0);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "03eff3e1-bc64-4d42-af3c-8b3d909f23e9", + "parentUUID": "7ae8febd-9fc6-4101-8471-e2c4e0acc58e", + "isHook": false, + "skipped": false + }, + { + "title": "Get site by altitude:", + "fullTitle": "Get site data any number of ways: Get site by altitude:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/sites/?altmax=5000&altmin=3000')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(Object.keys(res.body['data'][0]).length > 0);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "2ee5acee-cc53-4d66-8285-d5a693fdd711", + "parentUUID": "7ae8febd-9fc6-4101-8471-e2c4e0acc58e", + "isHook": false, + "skipped": false + }, + { + "title": "Break sites by flipping altitudes:", + "fullTitle": "Get site data any number of ways: Break sites by flipping altitudes:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/sites/?altmax=3000&altmin=5000')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(res.body.status === 'failure');\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "7516eace-275a-46dc-94b6-97589175a3da", + "parentUUID": "7ae8febd-9fc6-4101-8471-e2c4e0acc58e", + "isHook": false, + "skipped": false + }, + { + "title": "Break sites by passing invalid siteid:", + "fullTitle": "Get site data any number of ways: Break sites by passing invalid siteid:", + "timedOut": false, + "duration": 1, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/sites/abcd')\n .set('Accept', 'application/json')\n .end((err, res) => {\n if (err) return done(err);\n expect(500, done);\n done();\n });", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "7781d720-f292-4cbe-980a-45817e86cf2d", + "parentUUID": "7ae8febd-9fc6-4101-8471-e2c4e0acc58e", + "isHook": false, + "skipped": false + }, + { + "title": "Get site by contact information for multiple authors:", + "fullTitle": "Get site data any number of ways: Get site by contact information for multiple authors:", + "timedOut": false, + "duration": 0, + "state": "failed", + "speed": null, + "pass": false, + "fail": true, + "pending": false, + "context": null, + "code": "api.get('v2.0/data/contacts/12,13/sites')\n .set('Accept', 'application/json')\n .expect(function(res) {\n return Object.keys(res.body['data'][0]).length === 2;\n })\n .expect(200, done);", + "err": { + "message": "AggregateError [ECONNREFUSED]: ", + "estack": "AggregateError [ECONNREFUSED]: \n at internalConnectMultiple (node:net:1139:18)\n at afterConnectMultiple (node:net:1712:7)", + "diff": null + }, + "uuid": "9c1b1631-a54b-459a-b7d8-8269488416d2", + "parentUUID": "7ae8febd-9fc6-4101-8471-e2c4e0acc58e", + "isHook": false, + "skipped": false } ], + "suites": [], "passes": [], - "failures": [], + "failures": [ + "03eff3e1-bc64-4d42-af3c-8b3d909f23e9", + "2ee5acee-cc53-4d66-8285-d5a693fdd711", + "7516eace-275a-46dc-94b6-97589175a3da", + "7781d720-f292-4cbe-980a-45817e86cf2d", + "9c1b1631-a54b-459a-b7d8-8269488416d2" + ], "pending": [], "skipped": [], - "duration": 0, + "duration": 2, "root": false, "rootEmpty": false, - "_timeout": 900000 + "_timeout": 5000 } ], "passes": [], From e6b0cbf3bd359a66056d49e01a1da0868ca17efa Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 14 Oct 2026 15:20:21 -0700 Subject: [PATCH 03/16] TA-11 Modifying session usage in DB so that when a person logs in again, there are no multiple sessionuuids --- v2.0/helpers/validation/expireotherlogins.sql | 9 +++ v2.0/helpers/validation/findactivelogin.sql | 16 ++++ v2.0/helpers/validation/sessionlogin.js | 75 +++++++++++++++++++ v2.0/helpers/validation/validateuser.js | 16 +++- 4 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 v2.0/helpers/validation/expireotherlogins.sql create mode 100644 v2.0/helpers/validation/findactivelogin.sql create mode 100644 v2.0/helpers/validation/sessionlogin.js diff --git a/v2.0/helpers/validation/expireotherlogins.sql b/v2.0/helpers/validation/expireotherlogins.sql new file mode 100644 index 0000000..3bc4cf5 --- /dev/null +++ b/v2.0/helpers/validation/expireotherlogins.sql @@ -0,0 +1,9 @@ +-- Expire every live session for an ORCID iD except `keep`. Pass keep = NULL to +-- expire all of them (used just before minting a replacement). +-- Only expiresat is set. loggedoutat is left alone on purpose: it means "the user +-- clicked Logout", so a NULL there on an expired row marks one the API retired. +UPDATE ap.orcidlogins +SET expiresat = now() +WHERE orcidid = ${orcidid} + AND expiresat > now() + AND sessionuuid IS DISTINCT FROM ${keep}::uuid; diff --git a/v2.0/helpers/validation/findactivelogin.sql b/v2.0/helpers/validation/findactivelogin.sql new file mode 100644 index 0000000..a9b676e --- /dev/null +++ b/v2.0/helpers/validation/findactivelogin.sql @@ -0,0 +1,16 @@ +-- The live session for an ORCID iD, if there is one. "Live" is expiresat > now(): +-- logout sets expiresat = now() as well, so that one condition covers expired, +-- logged-out and rotated-out sessions. LIMIT 1 + ORDER BY keeps this from +-- throwing if an older bug (or a bad restore) left duplicate live rows behind: +-- the one that lasts longest wins. +-- `reusable` is computed here, in the database's clock, so there is no skew +-- between the API host and Postgres: sessions with under 24h left are not handed +-- back, otherwise the user would be logged out in the middle of their work. +SELECT sessionuuid, + expiresat, + expiresat > now() + interval '24 hours' AS reusable +FROM ap.orcidlogins +WHERE orcidid = ${orcidid} + AND expiresat > now() +ORDER BY expiresat DESC, sessionuuid +LIMIT 1; diff --git a/v2.0/helpers/validation/sessionlogin.js b/v2.0/helpers/validation/sessionlogin.js new file mode 100644 index 0000000..391e645 --- /dev/null +++ b/v2.0/helpers/validation/sessionlogin.js @@ -0,0 +1,75 @@ +'use strict'; +// Decides which session a successful ORCID login gets. +// +// This used to be "INSERT a new row every time", so anyone who didn't click Logout +// (or who logged in from a second tab or device) left another working 7-day key +// behind in ap.orcidlogins. Every live sessionuuid is a bearer credential, so the +// rule now is: one live session per ORCID iD. +// +// - A live session with more than 24h left is handed back as it is. No new key, +// and its expiry is not extended. +// - Otherwise (none, or about to expire) every live session for that iD is +// expired and one new session is minted. +// - On either path any other live sessions for the iD are expired, which also +// tidies up duplicates that already exist. +// +// It all runs in one transaction behind an advisory lock on the ORCID iD. Without +// the lock two simultaneous logins (a double click, two tabs) would both find +// nothing and both insert. + +const {sql} = require('../../../src/neotomaapi.js'); + +const findactivelogin = sql('../v2.0/helpers/validation/findactivelogin.sql'); +const expireotherlogins = sql('../v2.0/helpers/validation/expireotherlogins.sql'); +const insertuserlogin = sql('../v2.0/helpers/validation/newlogin.sql'); + +// Two-key form so this lock can't collide with an advisory lock taken elsewhere +// for an unrelated purpose that happens to hash to the same integer. +const LOCKSQL = 'SELECT pg_advisory_xact_lock(hashtext(\'ap.orcidlogins\'), ' + + 'hashtext($1))'; + +/** + * Get the session an ORCID iD should use, reusing a live one when possible. + * @param {object} db A pg-promise database object. + * @param {object} login The login details. + * @param {string} login.orcidid The full ORCID iD, as stored in ap.orcidlogins. + * @param {string} login.ipaddr The IP address the login came from. + * @param {string|null} login.orcidname The person's name, for the new row only. + * @return {Promise} {sessionuuid, expiresat, reused} + * **/ +async function getOrCreateSession(db, {orcidid, ipaddr, orcidname}) { + return db.tx(async (t) => { + // any(), not none(): a SELECT always returns its (void) row, and none() + // throws when handed one. + await t.any(LOCKSQL, [orcidid]); + + const existing = await t.oneOrNone(findactivelogin, {orcidid}); + + if (existing && existing.reusable) { + const retired = await t.result(expireotherlogins, + {orcidid: orcidid, keep: existing.sessionuuid}); + // Counts only: a sessionuuid is a credential and doesn't belong in logs. + console.log('session reused; ' + retired.rowCount + + ' duplicate live session(s) expired'); + return { + sessionuuid: existing.sessionuuid, + expiresat: existing.expiresat, + reused: true, + }; + } + + const retired = await t.result(expireotherlogins, + {orcidid: orcidid, keep: null}); + const created = await t.one(insertuserlogin, + {orcidid: orcidid, ipaddr: ipaddr, orcidname: orcidname}); + console.log('session created; ' + retired.rowCount + + ' earlier live session(s) expired'); + return { + sessionuuid: created.sessionuuid, + expiresat: created.expiresat, + reused: false, + }; + }); +} + +module.exports.getOrCreateSession = getOrCreateSession; diff --git a/v2.0/helpers/validation/validateuser.js b/v2.0/helpers/validation/validateuser.js index fcfd011..172957d 100644 --- a/v2.0/helpers/validation/validateuser.js +++ b/v2.0/helpers/validation/validateuser.js @@ -9,10 +9,12 @@ // passed as `Authorization: Bearer ` and checked by sessionauth.js. // Session lifetime is set in newlogin.sql — currently 1 week — and its expiry is // returned alongside the UUID so clients don't have to guess. +// Logging in again does not mint another key: sessionlogin.js hands back the +// person's live session unless it is about to expire. const {sql} = require('../../../src/neotomaapi.js'); -const insertuserlogin = sql('../v2.0/helpers/validation/newlogin.sql'); +const {getOrCreateSession} = require('./sessionlogin.js'); const stewardbyorcid = sql('../v2.0/helpers/validation/stewardbyorcid.sql'); // How long we're willing to wait on orcid.org. fetch() has no overall timeout of @@ -93,7 +95,9 @@ const checktoken = async function(req, res, next) { }); } - const uuidres = await db.one(insertuserlogin, + // A returning user gets their live session back rather than a new key; only + // when there isn't one worth reusing is a new session minted. + const session = await getOrCreateSession(db, {'orcidid': orcidid, 'ipaddr': ipaddr, 'orcidname': result['name'] || [result['given_name'], result['family_name']].filter(Boolean).join(' ') || @@ -104,9 +108,13 @@ const checktoken = async function(req, res, next) { status: 'success', data: { user: result, - neotoken: uuidres, + neotoken: { + sessionuuid: session.sessionuuid, + expiresat: session.expiresat, + }, }, - message: 'Neotoma token expires in 1wk', + message: 'Neotoma session is valid until ' + + new Date(session.expiresat).toISOString(), }); } catch (err) { // An aborted fetch lands here rather than returning a response, so it needs From 415154653a9a8ed88c6b7575c946e6edc595947b Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 14 Oct 2026 15:21:39 -0700 Subject: [PATCH 04/16] TA-11 Update test folder in NODE API as well as package.json and .gitignore --- .gitignore | 2 ++ package.json | 1 + test/assays.js | 2 +- test/v1.5-data-contacts-{contactid}-test.js | 2 +- test/v1.5-data-geopoliticalunits-test.js | 2 +- test/v1.5-data-geopoliticalunits-{gpid}-test.js | 2 +- test/v2.0-apps-constdb-datasetages-test.js | 2 +- test/v2.0-apps-constdb-datasets-test.js | 2 +- test/v2.0-apps-constdb-datasetuploads-test.js | 2 +- test/v2.0-apps-depenvt-test.js | 2 +- test/v2.0-apps-taphonomysystems-test.js | 2 +- test/v2.0-data-chronologies-{chronid}-test.js | 2 +- test/v2.0-data-contacts-test.js | 2 +- test/v2.0-data-contacts-{contactid}-sites-test.js | 2 +- test/v2.0-data-datasets-db-test.js | 2 +- test/v2.0-data-datasets-test.js | 2 +- test/v2.0-data-datasets_elc-test.js | 2 +- test/v2.0-data-dbtables-test.js | 2 +- test/v2.0-data-dbtables-{table}-test.js | 4 ++-- test/v2.0-data-geopoliticalunits-test.js | 2 +- test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js | 2 +- test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js | 2 +- test/v2.0-data-geopoliticalunits-{gpid}-test.js | 2 +- test/v2.0-data-occurrences-test.js | 2 +- test/v2.0-data-pollen-test.js | 2 +- test/v2.0-data-publications-test.js | 2 +- test/v2.0-data-publications-{publicationid}-test.js | 2 +- test/v2.0-data-sites-test.js | 2 +- test/v2.0-data-sites-{siteid}-datasets_elc-test.js | 2 +- test/v2.0-data-spatial-faunal-test.js | 2 +- test/v2.0-data-spatial-icesheet-test.js | 2 +- test/v2.0-data-spatial-lakes-test.js | 2 +- test/v2.0-data-taxa-test.js | 2 +- 33 files changed, 35 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 74c7350..0c6abda 100755 --- a/.gitignore +++ b/.gitignore @@ -113,5 +113,7 @@ build_deploy.sh output.txt +docs/ +test/unit/ .yarn/ tasks/ \ No newline at end of file diff --git a/package.json b/package.json index a6ae629..5f0ed2d 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "start": "NODE_ENV=production nodemon --legacy-watch app.js", "dev": "NODE_ENV=development nodemon --legacy-watch app.js", "test": "APIPATH=${APIPATH:-http://localhost:3001/} node ./node_modules/mocha/bin/mocha --config=test/.mocharc.yml --reporter-options reportDir=public,reportFilename=tests", + "test:unit": "node ./node_modules/mocha/bin/mocha --no-config --recursive --reporter spec --timeout 10000 test/unit", "build:openapi": "(cd ./openapi && node ./scripts/build-openapi.js)", "validate:openapi": "yarn build:openapi && bash genoatt.sh && sleep 4 && bash runmochabatch.sh" }, diff --git a/test/assays.js b/test/assays.js index 13b8d1b..53b0393 100644 --- a/test/assays.js +++ b/test/assays.js @@ -28,7 +28,7 @@ describe('Get aeDNA assays by datasetid:', function() { this.timeout(5000); it('every assay carries the FAIRe project terms:', function(done) { - api.get('v2.0/data/datasets/74666/assays') + api.get('v2.0/data/datasets/500/assays') .set('Accept', 'application/json') .expect(200) .expect(function(res) { diff --git a/test/v1.5-data-contacts-{contactid}-test.js b/test/v1.5-data-contacts-{contactid}-test.js index 247b4a9..5232f62 100644 --- a/test/v1.5-data-contacts-{contactid}-test.js +++ b/test/v1.5-data-contacts-{contactid}-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v1.5/data/contacts/{contactid}', function() { describe('tests for get', function() { it('should respond 200 for "Contact"', function() { - var response = request('get', 'http://localhost:3001/v1.5/data/contacts/-90664163', { + var response = request('get', 'http://localhost:3001/v1.5/data/contacts/-71846374', { 'time': true }); diff --git a/test/v1.5-data-geopoliticalunits-test.js b/test/v1.5-data-geopoliticalunits-test.js index 96689a0..06a471c 100644 --- a/test/v1.5-data-geopoliticalunits-test.js +++ b/test/v1.5-data-geopoliticalunits-test.js @@ -8,7 +8,7 @@ describe('tests for /v1.5/data/geopoliticalunits', function() { describe('tests for get', function() { it('should respond 200 for "An array of geopolitical units."', function() { var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits', { - 'qs': {"gpid":5392,"gpname":"Canada","rank":3,"lower":false}, + 'qs': {"gpid":5392,"gpname":"Canada","rank":4,"lower":true}, 'time': true }); diff --git a/test/v1.5-data-geopoliticalunits-{gpid}-test.js b/test/v1.5-data-geopoliticalunits-{gpid}-test.js index bf077dc..f33b511 100644 --- a/test/v1.5-data-geopoliticalunits-{gpid}-test.js +++ b/test/v1.5-data-geopoliticalunits-{gpid}-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v1.5/data/geopoliticalunits/{gpid}', function() { describe('tests for get', function() { it('should respond 200 for "An array of geopolitical units."', function() { - var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits/4789', { + var response = request('get', 'http://localhost:3001/v1.5/data/geopoliticalunits/5027', { 'time': true }); diff --git a/test/v2.0-apps-constdb-datasetages-test.js b/test/v2.0-apps-constdb-datasetages-test.js index 728a91b..20e27a7 100644 --- a/test/v2.0-apps-constdb-datasetages-test.js +++ b/test/v2.0-apps-constdb-datasetages-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/apps/constdb/datasetages', function() { describe('tests for get', function() { it('should respond 200 for "Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. "', function() { var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetages', { - 'qs': {"dbid":20}, + 'qs': {"dbid":33}, 'time': true }); diff --git a/test/v2.0-apps-constdb-datasets-test.js b/test/v2.0-apps-constdb-datasets-test.js index b6cee0a..7060767 100644 --- a/test/v2.0-apps-constdb-datasets-test.js +++ b/test/v2.0-apps-constdb-datasets-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/apps/constdb/datasets', function() { describe('tests for get', function() { it('should respond 200 for "Returns the set of datasets contained within a constituent database, identified by the constituent database identifier. Used for quick landing page generation. "', function() { var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasets', { - 'qs': {"dbid":26}, + 'qs': {"dbid":29}, 'time': true }); diff --git a/test/v2.0-apps-constdb-datasetuploads-test.js b/test/v2.0-apps-constdb-datasetuploads-test.js index b0f812f..6111928 100644 --- a/test/v2.0-apps-constdb-datasetuploads-test.js +++ b/test/v2.0-apps-constdb-datasetuploads-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/apps/constdb/datasetuploads', function() { describe('tests for get', function() { it('should respond 200 for "Returns an ordered array (from earliest to latest) of upload counts by month (YYYY/MM/DD; all days as 01). Months with no uploads are excluded. "', function() { var response = request('get', 'http://localhost:3001/v2.0/apps/constdb/datasetuploads', { - 'qs': {"dbid":25}, + 'qs': {"dbid":4}, 'time': true }); diff --git a/test/v2.0-apps-depenvt-test.js b/test/v2.0-apps-depenvt-test.js index 6224bea..0597c97 100644 --- a/test/v2.0-apps-depenvt-test.js +++ b/test/v2.0-apps-depenvt-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/apps/depenvt', function() { describe('tests for get', function() { it('should respond 200 for "This returns the information about depositional environment for selected dataset/collection unit/site."', function() { var response = request('get', 'http://localhost:3001/v2.0/apps/depenvt', { - 'qs': {"siteid":1610,"datasetid":80118037,"collectionunitid":46745}, + 'qs': {"siteid":29633,"datasetid":16224114,"collectionunitid":7475}, 'time': true }); diff --git a/test/v2.0-apps-taphonomysystems-test.js b/test/v2.0-apps-taphonomysystems-test.js index becf6f1..ea8b92f 100644 --- a/test/v2.0-apps-taphonomysystems-test.js +++ b/test/v2.0-apps-taphonomysystems-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/apps/taphonomysystems', function() { describe('tests for get', function() { it('should respond 200 for "A table of Neotoma collection types."', function() { var response = request('get', 'http://localhost:3001/v2.0/apps/taphonomysystems', { - 'qs': {"datasettypeid":30}, + 'qs': {"datasettypeid":26}, 'time': true }); diff --git a/test/v2.0-data-chronologies-{chronid}-test.js b/test/v2.0-data-chronologies-{chronid}-test.js index 19e8cf5..ac8ac9d 100644 --- a/test/v2.0-data-chronologies-{chronid}-test.js +++ b/test/v2.0-data-chronologies-{chronid}-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v2.0/data/chronologies/{chronid}', function() { describe('tests for get', function() { it('should respond 200 for "A Neotoma chronology object."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/chronologies/500', { + var response = request('get', 'http://localhost:3001/v2.0/data/chronologies/4270', { 'time': true }); diff --git a/test/v2.0-data-contacts-test.js b/test/v2.0-data-contacts-test.js index 3211969..17681ab 100644 --- a/test/v2.0-data-contacts-test.js +++ b/test/v2.0-data-contacts-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/contacts', function() { describe('tests for get', function() { it('should respond 200 for "contact"', function() { var response = request('get', 'http://localhost:3001/v2.0/data/contacts', { - 'qs': {"contactid":5583,"familyname":"Uum-WPAgUA","contactname":"m","contactstatus":"unknown","limit": 10,"offset": 0}, + 'qs': {"contactid":3930,"familyname":"MGqwj","contactname":"JoaJZgLpAM","contactstatus":"extant","limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-contacts-{contactid}-sites-test.js b/test/v2.0-data-contacts-{contactid}-sites-test.js index 158e71e..384f07f 100644 --- a/test/v2.0-data-contacts-{contactid}-sites-test.js +++ b/test/v2.0-data-contacts-{contactid}-sites-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v2.0/data/contacts/{contactid}/sites', function() { describe('tests for get', function() { it('should respond 200 for "A Neotoma sites object."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/contacts/9929/sites', { + var response = request('get', 'http://localhost:3001/v2.0/data/contacts/8319/sites', { 'time': true }); diff --git a/test/v2.0-data-datasets-db-test.js b/test/v2.0-data-datasets-db-test.js index 3703055..e37e91f 100644 --- a/test/v2.0-data-datasets-db-test.js +++ b/test/v2.0-data-datasets-db-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/datasets/db', function() { describe('tests for get', function() { it('should respond 200 for "Datasets"', function() { var response = request('get', 'http://localhost:3001/v2.0/data/datasets/db', { - 'qs': {"limit": 10,"offset": 0,"database":"Neotoma Testate Amoebae Database"}, + 'qs': {"limit": 10,"offset": 0,"database":"North American Pollen Database"}, 'time': true }); diff --git a/test/v2.0-data-datasets-test.js b/test/v2.0-data-datasets-test.js index 57902bc..fcfcf88 100644 --- a/test/v2.0-data-datasets-test.js +++ b/test/v2.0-data-datasets-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/datasets', function() { describe('tests for get', function() { it('should respond 200 for "An array of datasets."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/datasets', { - 'qs': {"sitename":"in nisi amet deserunt ea","database":"Chinese Pollen Database","datasettype":"chironomid","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","siteid":26747,"datasetid":69182564,"doi":"10A45156150/-","gpid":5392,"keyword":"bottom","contactid":6816,"taxa":"adipisicing laborum deserunt sunt","ageyoung": 1000,"ageold": 10000,"ageof":1987576,"limit": 10,"offset": 0}, + 'qs': {"sitename":"pariatur tempor","database":"Pollen Monitoring Programme","datasettype":"vertebrate fauna","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","siteid":37798,"datasetid":20069323,"doi":"10$930055/_.4HBW:Q(Y","gpid":5392,"keyword":"bottom","contactid":4719,"taxa":"sit in et culpa deserunt","ageyoung": 1000,"ageold": 10000,"ageof":8142805,"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-datasets_elc-test.js b/test/v2.0-data-datasets_elc-test.js index ee4155f..aaad71c 100644 --- a/test/v2.0-data-datasets_elc-test.js +++ b/test/v2.0-data-datasets_elc-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/datasets_elc', function() { describe('tests for get', function() { it('should respond 200 for "A Neotoma datasets object suitable for the EarthLife Consortium API."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/datasets_elc', { - 'qs': {"siteid":24832,"contactid":6896,"datasettype":"geochemistry","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","ageyoung": 1000,"ageold": 10000,"ageof":6017958}, + 'qs': {"siteid":5842,"contactid":15659,"datasettype":"diatom surface sample","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","ageyoung": 1000,"ageold": 10000,"ageof":8754269}, 'time': true }); diff --git a/test/v2.0-data-dbtables-test.js b/test/v2.0-data-dbtables-test.js index 6993f45..e3eee3a 100644 --- a/test/v2.0-data-dbtables-test.js +++ b/test/v2.0-data-dbtables-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/dbtables', function() { describe('tests for get', function() { it('should respond 200 for "Returned table."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/dbtables', { - 'qs': {"table":"fugiat","count":false,"limit": 10,"offset": 0}, + 'qs': {"table":"minim adipisicing","count":true,"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-dbtables-{table}-test.js b/test/v2.0-data-dbtables-{table}-test.js index df53212..4ecf00f 100644 --- a/test/v2.0-data-dbtables-{table}-test.js +++ b/test/v2.0-data-dbtables-{table}-test.js @@ -7,8 +7,8 @@ var expect = chakram.expect; describe('tests for /v2.0/data/dbtables/{table}', function() { describe('tests for get', function() { it('should respond 200 for "Returned table."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/dbtables/deseruntaliquapariatur', { - 'qs': {"count":false,"limit": 10,"offset": 0}, + var response = request('get', 'http://localhost:3001/v2.0/data/dbtables/fugiatincididuntexid', { + 'qs': {"count":true,"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-geopoliticalunits-test.js b/test/v2.0-data-geopoliticalunits-test.js index a2901a6..2745352 100644 --- a/test/v2.0-data-geopoliticalunits-test.js +++ b/test/v2.0-data-geopoliticalunits-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/geopoliticalunits', function() { describe('tests for get', function() { it('should respond 200 for "An array of geopolitical units."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits', { - 'qs': {"gpid":5392,"gpname":"Canada","rank":4,"lower":true}, + 'qs': {"gpid":5392,"gpname":"Canada","rank":3,"lower":false}, 'time': true }); diff --git a/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js b/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js index 2cdb76b..2ba8193 100644 --- a/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js +++ b/test/v2.0-data-geopoliticalunits-{gpid}-datasets-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v2.0/data/geopoliticalunits/{gpid}/datasets', function() { describe('tests for get', function() { it('should respond 200 for "An array of datasets."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/500/datasets', { + var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/7445/datasets', { 'qs': {"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js b/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js index b8e1726..b6daea6 100644 --- a/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js +++ b/test/v2.0-data-geopoliticalunits-{gpid}-sites-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v2.0/data/geopoliticalunits/{gpid}/sites', function() { describe('tests for get', function() { it('should respond 200 for "An array of sites."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/1467/sites', { + var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/2029/sites', { 'qs': {"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-geopoliticalunits-{gpid}-test.js b/test/v2.0-data-geopoliticalunits-{gpid}-test.js index c74eaf7..d642bbe 100644 --- a/test/v2.0-data-geopoliticalunits-{gpid}-test.js +++ b/test/v2.0-data-geopoliticalunits-{gpid}-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v2.0/data/geopoliticalunits/{gpid}', function() { describe('tests for get', function() { it('should respond 200 for "An array of geopolitical units."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/5778', { + var response = request('get', 'http://localhost:3001/v2.0/data/geopoliticalunits/1434', { 'time': true }); diff --git a/test/v2.0-data-occurrences-test.js b/test/v2.0-data-occurrences-test.js index 2efbc80..17b4122 100644 --- a/test/v2.0-data-occurrences-test.js +++ b/test/v2.0-data-occurrences-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/occurrences', function() { describe('tests for get', function() { it('should respond 200 for "occurrence"', function() { var response = request('get', 'http://localhost:3001/v2.0/data/occurrences', { - 'qs': {"taxonname":"magna irure anim consectetur ullamco","taxonid":21012,"siteid":49855,"sitename":"mollit","datasettype":"stable isotope","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","ageof":2647566,"ageyoung": 1000,"ageold": 10000,"limit": 10,"offset": 0}, + 'qs': {"taxonname":"pariatur eu cillum laboris","taxonid":27771,"siteid":30886,"sitename":"eiusmod","datasettype":"ostracode","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","ageof":1083090,"ageyoung": 1000,"ageold": 10000,"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-pollen-test.js b/test/v2.0-data-pollen-test.js index b18144c..52cfe6b 100644 --- a/test/v2.0-data-pollen-test.js +++ b/test/v2.0-data-pollen-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/pollen', function() { describe('tests for get', function() { it('should respond 200 for "A record of all pollen samples in time/space for a particular taxon."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/pollen', { - 'qs': {"taxonname":"et ad non irure quis","taxonid":45362,"siteid":39084,"sitename":"eiusmod esse ipsum","datasettype":"geochronologic","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","ageof":5395162,"ageyoung": 1000,"ageold": 10000,"limit": 10,"offset": 0}, + 'qs': {"taxonname":"esse incididunt dolor eu","taxonid":39814,"siteid":23882,"sitename":"in officia nulla","datasettype":"geochronologic","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","ageof":23767246,"ageyoung": 1000,"ageold": 10000,"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-publications-test.js b/test/v2.0-data-publications-test.js index 7763d66..05fab03 100644 --- a/test/v2.0-data-publications-test.js +++ b/test/v2.0-data-publications-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/publications', function() { describe('tests for get', function() { it('should respond 200 for "A list of publications."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/publications', { - 'qs': {"publicationid":3227,"datasetid":62171686,"siteid":15473,"familyname":"Tm-","pubtype":"Other Edited","year":1958,"search":"dolor laboris ullamco ut","limit": 10,"offset": 0}, + 'qs': {"publicationid":9035,"datasetid":12074338,"siteid":31854,"familyname":"%qP","pubtype":"Master's Thesis","year":1622,"search":"ipsum aliqua tempor commodo","limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-publications-{publicationid}-test.js b/test/v2.0-data-publications-{publicationid}-test.js index 7126513..f79f967 100644 --- a/test/v2.0-data-publications-{publicationid}-test.js +++ b/test/v2.0-data-publications-{publicationid}-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v2.0/data/publications/{publicationid}', function() { describe('tests for get', function() { it('should respond 200 for "A list of publications."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/publications/500', { + var response = request('get', 'http://localhost:3001/v2.0/data/publications/5598', { 'time': true }); diff --git a/test/v2.0-data-sites-test.js b/test/v2.0-data-sites-test.js index f49834c..e903de5 100644 --- a/test/v2.0-data-sites-test.js +++ b/test/v2.0-data-sites-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/sites', function() { describe('tests for get', function() { it('should respond 200 for "An array of sites."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/sites', { - 'qs': {"sitename":"dolore","database":"Alpine Pollen Database","datasettype":"vertebrate fauna","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","siteid":34594,"datasetid":20523832,"doi":"10u7613/HNFJAT","gpid":5392,"keyword":"beyond radiocarbon","contactid":17893,"taxa":"laborum Excepteur ut enim","ageyoung": 1000,"ageold": 10000,"ageof":608776,"limit": 10,"offset": 0}, + 'qs': {"sitename":"eiusmod magna ea non","database":"Canadian Museum of Nature-Delorme Ostracoda-Surface Samples","datasettype":"physical sedimentology","altmin": 10,"altmax": 100,"loc":"{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}},\"coordinates\":[[[13.4,55.92],[13.5,55.92],[13.5,55.95],[13.4,55.95],[13.4,55.92]]]}","siteid":12024,"datasetid":10862338,"doi":"108997793/60W554Q","gpid":5392,"keyword":"pre-European","contactid":8422,"taxa":"cillum aliqua ex","ageyoung": 1000,"ageold": 10000,"ageof":15621576,"limit": 10,"offset": 0}, 'time': true }); diff --git a/test/v2.0-data-sites-{siteid}-datasets_elc-test.js b/test/v2.0-data-sites-{siteid}-datasets_elc-test.js index a7ad152..7150e27 100644 --- a/test/v2.0-data-sites-{siteid}-datasets_elc-test.js +++ b/test/v2.0-data-sites-{siteid}-datasets_elc-test.js @@ -7,7 +7,7 @@ var expect = chakram.expect; describe('tests for /v2.0/data/sites/{siteid}/datasets_elc', function() { describe('tests for get', function() { it('should respond 200 for "An array of datasets."', function() { - var response = request('get', 'http://localhost:3001/v2.0/data/sites/8024/datasets_elc', { + var response = request('get', 'http://localhost:3001/v2.0/data/sites/500/datasets_elc', { 'time': true }); diff --git a/test/v2.0-data-spatial-faunal-test.js b/test/v2.0-data-spatial-faunal-test.js index d0d8cff..7d65da9 100644 --- a/test/v2.0-data-spatial-faunal-test.js +++ b/test/v2.0-data-spatial-faunal-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/spatial/faunal', function() { describe('tests for get', function() { it('should respond 200 for "An object containing all matched species names, identifiers and a GeoJSON polygon representing the UNIONed ranges for the selected species. All data is derived from:
* Mammal Diversity Database. (2020). Mammal Diversity Database (Version 1.2) [Data set]. Zenodo. DOI: [10.5281/zenodo.4139818](https://doi.org/10.5281/zenodo.4139818).
* Map of Life. (2021). Mammal range maps harmonised to the Mammals Diversity Database [Data set]. Map of Life. [10.48600/MOL-48VZ-P413](https://doi.org/10.48600/MOL-48VZ-P413) "', function() { var response = request('get', 'http://localhost:3001/v2.0/data/spatial/faunal', { - 'qs': {"sciname":"irure","proj": 4326,"prec": 1000}, + 'qs': {"sciname":"minim Excepteur","proj": 4326,"prec": 1000}, 'time': true }); diff --git a/test/v2.0-data-spatial-icesheet-test.js b/test/v2.0-data-spatial-icesheet-test.js index 394d00b..4dd742d 100644 --- a/test/v2.0-data-spatial-icesheet-test.js +++ b/test/v2.0-data-spatial-icesheet-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/spatial/icesheet', function() { describe('tests for get', function() { it('should respond 200 for "An object containing glacial extents for the selected time period (in **calibrated radiocarbon years**). "', function() { var response = request('get', 'http://localhost:3001/v2.0/data/spatial/icesheet', { - 'qs': {"age":16220,"proj": 4326,"prec": 1000}, + 'qs': {"age":9672,"proj": 4326,"prec": 1000}, 'time': true }); diff --git a/test/v2.0-data-spatial-lakes-test.js b/test/v2.0-data-spatial-lakes-test.js index ad5b324..a1bfc2a 100644 --- a/test/v2.0-data-spatial-lakes-test.js +++ b/test/v2.0-data-spatial-lakes-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/spatial/lakes', function() { describe('tests for get', function() { it('should respond 200 for "An object containing all matched lakes within some buffer distance of a site. Data derived from the [HydroLakes database](https://www.hydrosheds.org/products/hydrolakes):
* Messager, M.L., Lehner, B., Grill, G., Nedeva, I., Schmitt, O. (2016). Estimating the volume and age of water stored in global lakes using a geo-statistical approach. *Nature Communications*, 7: 13603. doi: [10.1038/ncomms13603](https://doi.org/10.1038/ncomms13603) "', function() { var response = request('get', 'http://localhost:3001/v2.0/data/spatial/lakes', { - 'qs': {"siteid":48315,"buffer":8389,"prec": 1000,"proj": 4326}, + 'qs': {"siteid":26056,"buffer":8474,"prec": 1000,"proj": 4326}, 'time': true }); diff --git a/test/v2.0-data-taxa-test.js b/test/v2.0-data-taxa-test.js index c8892ae..019251e 100644 --- a/test/v2.0-data-taxa-test.js +++ b/test/v2.0-data-taxa-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/taxa', function() { describe('tests for get', function() { it('should respond 200 for "A taxon or array of taxa."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/taxa', { - 'qs': {"taxonname":"ullamco amet","taxagroup":"veniam adipisicing labore dolor nisi","ecolgroup":"esse voluptate cupidatat dolor","status":0,"limit": 10,"offset": 0}, + 'qs': {"taxonname":"ut culpa eiusmod laborum","taxagroup":"ut et aliqua","ecolgroup":"velit consectetur ea in minim","status":true,"limit": 10,"offset": 0}, 'time': true }); From 26a956f5a5e6927f3e0d245cf4979bd18001ae69 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 11:10:57 -0700 Subject: [PATCH 05/16] NLP-30 Fixing landing pages for issue Alison reported: The /v2.0/apps/constdb summary (dbsummary.sql) counted rows of ap.querytable rather than distinct sites and datasets, and read from that cache table. For NODE (databaseid 41) this gave 810,714 rows for 4,224 datasets, so the landing page showed e.g. 666,024 surface samples instead of ~4,135 datasets / 3,920 sites. Two causes: - COUNT(siteid) / COUNT(*) replaced COUNT(DISTINCT ...) in f6264de. - ap.querytable is upserted on (datasetid, chronologyid) and never pruned, so it keeps rows for deleted datasets, datasets removed from a database, and superseded chronologies. --- v2.0/helpers/landing/dbsummary.sql | 19 ++++++++++++------- v2.0/helpers/landing/landing.js | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/v2.0/helpers/landing/dbsummary.sql b/v2.0/helpers/landing/dbsummary.sql index f330f46..b917f2d 100644 --- a/v2.0/helpers/landing/dbsummary.sql +++ b/v2.0/helpers/landing/dbsummary.sql @@ -7,18 +7,21 @@ WITH constdb AS ( 'url', cdb.url, 'contact',cnt.contactname, 'email', cnt.email) as database, - qt.siteid, - qt.datasetid, - qt.datasettype + cu.siteid, + ds.datasetid, + dst.datasettype from ndb.constituentdatabases AS cdb - left join ap.querytable as qt on cdb.databaseid = qt.databaseid + left join ndb.datasetdatabases as dsdb on cdb.databaseid = dsdb.databaseid + left join ndb.datasets as ds on ds.datasetid = dsdb.datasetid + left join ndb.collectionunits as cu on cu.collectionunitid = ds.collectionunitid + left join ndb.datasettypes as dst on dst.datasettypeid = ds.datasettypeid left join ndb.contacts as cnt on cdb.contactid = cnt.contactid WHERE (${dbid} IS NULL OR cdb.databaseid = ${dbid}) ), sites as ( select dst.databaseid, dst.database, - COUNT(dst.siteid) as sitecount + COUNT(DISTINCT dst.siteid)::int as sitecount from constdb as dst group by @@ -28,7 +31,9 @@ WITH constdb AS ( select st.database, st.sitecount, - jsonb_build_object('datasettype', cdb.datasettype, 'datasets', COUNT(*)) as datasettypes + CASE WHEN cdb.datasettype IS NULL THEN NULL + ELSE jsonb_build_object('datasettype', cdb.datasettype, 'datasets', COUNT(DISTINCT cdb.datasetid)::int) + END as datasettypes from sites as st inner join constdb as cdb on cdb.databaseid = st.databaseid group by cdb.datasettype, @@ -38,7 +43,7 @@ WITH constdb AS ( SELECT database, sitecount, - array_agg(datasettypes) AS datasettypes + array_agg(datasettypes) FILTER (WHERE datasettypes IS NOT NULL) AS datasettypes from grouped group by database, diff --git a/v2.0/helpers/landing/landing.js b/v2.0/helpers/landing/landing.js index b19cc96..f49bb97 100644 --- a/v2.0/helpers/landing/landing.js +++ b/v2.0/helpers/landing/landing.js @@ -193,7 +193,7 @@ function databasesummaries(req, res, next) { const paramgrab = getparam(req); if (!paramgrab.success) { - res.status(500) + return res.status(500) .json({ status: 'failure', data: null, From c7e4604548c0685c13cb28a31aec98f67970aea0 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 11:28:15 -0700 Subject: [PATCH 06/16] Send a single response from taxonquery so a failed query no longer crashes the API --- v2.0/helpers/taxa/taxa.js | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/v2.0/helpers/taxa/taxa.js b/v2.0/helpers/taxa/taxa.js index 6a1bfff..4570325 100755 --- a/v2.0/helpers/taxa/taxa.js +++ b/v2.0/helpers/taxa/taxa.js @@ -118,24 +118,18 @@ function taxonquery(req, res, next) { } } - db.any(taxonsql, outobj) + // Returned so a failure here reaches the .catch below. A .catch + // placed before the success .then would send a 500 and then try to + // send a 200 on the same response, which throws ERR_HTTP_HEADERS_SENT + // as an unhandled rejection and kills the process. + return db.any(taxonsql, outobj) .then(function(data) { if (outobj.lower) { outobj.taxonid = data.map((x) => x.taxonid); - data = db.any(taxonsqlr, outobj) - .then(function(data) { - return data; - }); + return db.any(taxonsqlr, outobj); } return data; }) - .catch(function(err) { - res.status(500) - .json({ - status: 'failure', - data: err.message, - }); - }) .then(function(data) { res.status(200) .json({ @@ -146,6 +140,7 @@ function taxonquery(req, res, next) { }); }) .catch(function(err) { + if (res.headersSent) return; res.status(500) .json({ status: 'failure', From 4a98b1d2777f31944771651fa9907fb3341e6c9c Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 11:29:15 -0700 Subject: [PATCH 07/16] Log unhandled rejections and uncaught exceptions before exiting --- app.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app.js b/app.js index 7b417b6..09c663f 100755 --- a/app.js +++ b/app.js @@ -222,4 +222,16 @@ app.listen(apiPort, () => { console.log(`Neotoma API listening on port ${apiPort} (NODE_ENV=${process.env.NODE_ENV})`); }); +// Log the reason before the process dies. Node exits on these, and under +// `node app.js` (no nodemon) App Runner then restarts the container promptly. +// Message and stack only: error objects from pg can carry query parameters. +process.on('unhandledRejection', (reason) => { + console.error('unhandledRejection:', reason && reason.stack ? reason.stack : String(reason)); + process.exit(1); +}); +process.on('uncaughtException', (err) => { + console.error('uncaughtException:', err && err.stack ? err.stack : String(err)); + process.exit(1); +}); + module.exports = app; From 0191e5365d9c00f01e2781d3f85cb65041a11a06 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 11:30:30 -0700 Subject: [PATCH 08/16] Send a single response from taxonquery so a failed query no longer crashes the API --- test/v2.0-data-taxa-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/v2.0-data-taxa-test.js b/test/v2.0-data-taxa-test.js index 323e5eb..4330f0e 100644 --- a/test/v2.0-data-taxa-test.js +++ b/test/v2.0-data-taxa-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/taxa', function() { describe('tests for get', function() { it('should respond 200 for "A taxon or array of taxa."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/taxa', { - 'qs': {"taxonname":"non dolor consequat","taxagroup":"in consectetur","ecolgroup":"et ut ex","status":true,"limit": 10,"offset": 0}, + 'qs': {"taxonname":"deserunt Lorem commodo elit","taxagroup":"reprehenderit fugiat officia","ecolgroup":"et ex pariatur amet","status":false,"limit":1854,"offset":3271281}, 'time': true }); From d6027548e2729b7fc1bee7661ab06a94a8db2aa8 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 11:34:21 -0700 Subject: [PATCH 09/16] Make nodemon exit on crash so crashed production instances restart --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 536dea2..c3dd727 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "license": "MIT", "private": true, "scripts": { - "start": "NODE_ENV=production nodemon --legacy-watch app.js", + "start": "NODE_ENV=production nodemon --legacy-watch --exitcrash app.js", "dev": "NODE_ENV=development nodemon --legacy-watch app.js", "test": "node ./node_modules/mocha/bin/mocha --config=test/.mocharc.yml --reporter-options reportDir=public,reportFilename=tests", "build:openapi": "(cd ./openapi && node ./scripts/build-openapi.js)", From dd22521a21c508c8d433e3bb64e9b9ae59c8fef7 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 11:40:02 -0700 Subject: [PATCH 10/16] Restore v2.0-data-taxa-test.js to the production version --- test/v2.0-data-taxa-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/v2.0-data-taxa-test.js b/test/v2.0-data-taxa-test.js index 4330f0e..323e5eb 100644 --- a/test/v2.0-data-taxa-test.js +++ b/test/v2.0-data-taxa-test.js @@ -8,7 +8,7 @@ describe('tests for /v2.0/data/taxa', function() { describe('tests for get', function() { it('should respond 200 for "A taxon or array of taxa."', function() { var response = request('get', 'http://localhost:3001/v2.0/data/taxa', { - 'qs': {"taxonname":"deserunt Lorem commodo elit","taxagroup":"reprehenderit fugiat officia","ecolgroup":"et ex pariatur amet","status":false,"limit":1854,"offset":3271281}, + 'qs': {"taxonname":"non dolor consequat","taxagroup":"in consectetur","ecolgroup":"et ut ex","status":true,"limit": 10,"offset": 0}, 'time': true }); From ef23d980e4ee8bd9b58566c7aee39ce070ce6a6e Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 12:44:11 -0700 Subject: [PATCH 11/16] Make node 22 the right one accross scripts --- .github/workflows/test.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 762de87..02efe5c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,14 +30,20 @@ jobs: - name: Checkout code uses: actions/checkout@v5 + # package.json pins "packageManager": "yarn@4.12.0". The runner's global + # Yarn is 1.22.x, which refuses such a project, so Corepack has to be on + # before setup-node runs `yarn` for its cache. + - name: Enable Corepack + run: corepack enable + - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '22' # keep in step with FROM node:22-alpine in the Dockerfile cache: 'yarn' - name: Install dependencies - run: yarn install --frozen-lockfile + run: yarn install --immutable # genoatt.sh and runmochabatch.sh invoke `oatts` and `mocha` bare. Those resolve # under `yarn run` but not under `run: bash …`, so put the bin dir on PATH. From dea6ecdf773129927e75f9628176f13c0f8a5bb4 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 12:48:29 -0700 Subject: [PATCH 12/16] Error responses in the v2.0 handlers put the database error in data, and several also carried an unrelated generic (for example Must pass either queries or a comma separated integer sequence. on a SQL failure). They now send { status: 'failure', data: null, message: } which is the shape taxonquery already uses after the taxa crash fix. Responses that carried extra fields ( in occurrence.js) keep them. --- v2.0/handlers/apps_handlers.js | 24 ++++++++++++------- v2.0/handlers/dbtables_handlers.js | 6 +++-- v2.0/helpers/chronology/chronology.js | 9 ++++--- v2.0/helpers/contacts/contacts.js | 18 +++++++++----- v2.0/helpers/dataset_elc/datasets.js | 3 ++- v2.0/helpers/datasets/datasets.js | 24 +++++++++---------- v2.0/helpers/dbtables/dbtables.js | 4 ++-- v2.0/helpers/depenvt/depenvt.js | 3 ++- v2.0/helpers/download/download.js | 4 ++-- .../geopoliticalunits/geopoliticalunits.js | 9 ++++--- v2.0/helpers/occurrence/occurrence.js | 10 ++++---- v2.0/helpers/summary/summary.js | 16 ++++++------- v2.0/helpers/taxa/taxa.js | 7 +++--- v2.0/oxcal/oxcal.js | 8 +++---- 14 files changed, 86 insertions(+), 59 deletions(-) diff --git a/v2.0/handlers/apps_handlers.js b/v2.0/handlers/apps_handlers.js index 33dbc77..86fe69f 100755 --- a/v2.0/handlers/apps_handlers.js +++ b/v2.0/handlers/apps_handlers.js @@ -89,7 +89,8 @@ function collectiontypes(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -115,7 +116,8 @@ function datasettypes(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -141,7 +143,8 @@ function taxaindatasets(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -167,7 +170,8 @@ function taxagrouptypes(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -193,7 +197,8 @@ function keywords(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -219,7 +224,8 @@ function authorpis(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -258,7 +264,8 @@ function taphonomysystems(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -286,7 +293,8 @@ function depositionalenvironments(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } diff --git a/v2.0/handlers/dbtables_handlers.js b/v2.0/handlers/dbtables_handlers.js index d18dee4..0064fb5 100755 --- a/v2.0/handlers/dbtables_handlers.js +++ b/v2.0/handlers/dbtables_handlers.js @@ -61,7 +61,8 @@ function getNDBtable (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } @@ -81,7 +82,8 @@ function tablenames (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } diff --git a/v2.0/helpers/chronology/chronology.js b/v2.0/helpers/chronology/chronology.js index 018966f..37e4224 100755 --- a/v2.0/helpers/chronology/chronology.js +++ b/v2.0/helpers/chronology/chronology.js @@ -39,7 +39,8 @@ function chronologybyid (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } @@ -76,7 +77,8 @@ function chronologybydsid (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } @@ -111,7 +113,8 @@ function chronologybystid (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } diff --git a/v2.0/helpers/contacts/contacts.js b/v2.0/helpers/contacts/contacts.js index 8ff64ae..d082285 100755 --- a/v2.0/helpers/contacts/contacts.js +++ b/v2.0/helpers/contacts/contacts.js @@ -59,7 +59,8 @@ function contacts(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); }; @@ -108,7 +109,8 @@ function contactsbyid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -157,7 +159,8 @@ function contactsbydataid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -205,7 +208,8 @@ function contactclassbydsid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -252,7 +256,8 @@ function contactsbysiteid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -286,7 +291,8 @@ function publicationsbycontactid(req, res, next) { .catch(function(err) { res.status(500).json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } diff --git a/v2.0/helpers/dataset_elc/datasets.js b/v2.0/helpers/dataset_elc/datasets.js index ba84b04..23018e0 100644 --- a/v2.0/helpers/dataset_elc/datasets.js +++ b/v2.0/helpers/dataset_elc/datasets.js @@ -158,7 +158,8 @@ function datasetquery (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } diff --git a/v2.0/helpers/datasets/datasets.js b/v2.0/helpers/datasets/datasets.js index 0c32245..449277c 100755 --- a/v2.0/helpers/datasets/datasets.js +++ b/v2.0/helpers/datasets/datasets.js @@ -66,8 +66,8 @@ function datasetsbygeopol(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Error in passing query.', + data: null, + message: err.message, }); }); } @@ -116,8 +116,8 @@ function datasetbyid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.' + data: null, + message: err.message }); next(err) }); @@ -168,8 +168,8 @@ function datasetsbyaggid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.', + data: null, + message: err.message, }); next(err); }); @@ -218,8 +218,8 @@ function datasetbydb(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.' + data: null, + message: err.message }); next(err) }); @@ -267,8 +267,8 @@ function datasetbysiteid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.' + data: null, + message: err.message }); next(err) }); @@ -322,8 +322,8 @@ function datasetbypi(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.', + data: null, + message: err.message, }); next(err); }); diff --git a/v2.0/helpers/dbtables/dbtables.js b/v2.0/helpers/dbtables/dbtables.js index 1e6d3d9..39bd0f7 100755 --- a/v2.0/helpers/dbtables/dbtables.js +++ b/v2.0/helpers/dbtables/dbtables.js @@ -70,8 +70,8 @@ function dbtables(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Ran into an error.', + data: null, + message: err.message, }); } }); diff --git a/v2.0/helpers/depenvt/depenvt.js b/v2.0/helpers/depenvt/depenvt.js index eafbb20..02a7f46 100644 --- a/v2.0/helpers/depenvt/depenvt.js +++ b/v2.0/helpers/depenvt/depenvt.js @@ -42,7 +42,8 @@ function depenvbyid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); }; diff --git a/v2.0/helpers/download/download.js b/v2.0/helpers/download/download.js index de31041..089599d 100644 --- a/v2.0/helpers/download/download.js +++ b/v2.0/helpers/download/download.js @@ -145,8 +145,8 @@ function downloadbyid (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'SQL Error.' + data: null, + message: err.message }); }); } diff --git a/v2.0/helpers/geopoliticalunits/geopoliticalunits.js b/v2.0/helpers/geopoliticalunits/geopoliticalunits.js index af8104b..ba5989d 100755 --- a/v2.0/helpers/geopoliticalunits/geopoliticalunits.js +++ b/v2.0/helpers/geopoliticalunits/geopoliticalunits.js @@ -49,7 +49,8 @@ function geopoliticalbyid (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } @@ -112,7 +113,8 @@ function geopoliticalunits (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } @@ -155,7 +157,8 @@ function geopolbysite (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message + data: null, + message: err.message }); }); } else { diff --git a/v2.0/helpers/occurrence/occurrence.js b/v2.0/helpers/occurrence/occurrence.js index fb8762e..45dbd94 100755 --- a/v2.0/helpers/occurrence/occurrence.js +++ b/v2.0/helpers/occurrence/occurrence.js @@ -114,7 +114,8 @@ function occurrencequery(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, params: outobj, }); }); @@ -132,7 +133,8 @@ function occurrencequery(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, params: outobj, }); }); @@ -167,8 +169,8 @@ function occurrencebytaxon(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.', + data: null, + message: err.message, }); }); }; diff --git a/v2.0/helpers/summary/summary.js b/v2.0/helpers/summary/summary.js index 1a9f0a3..b71939b 100644 --- a/v2.0/helpers/summary/summary.js +++ b/v2.0/helpers/summary/summary.js @@ -39,8 +39,8 @@ function datasettypesbymonths(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.', + data: null, + message: err.message, }); }); } @@ -82,8 +82,8 @@ function rawbymonth(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.', + data: null, + message: err.message, }); }); } @@ -125,8 +125,8 @@ function datasetdbsbymonths(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.', + data: null, + message: err.message, }); }); } @@ -170,8 +170,8 @@ function sparklines(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.', + data: null, + message: err.message, }); }); } diff --git a/v2.0/helpers/taxa/taxa.js b/v2.0/helpers/taxa/taxa.js index 4570325..23adcdc 100755 --- a/v2.0/helpers/taxa/taxa.js +++ b/v2.0/helpers/taxa/taxa.js @@ -47,7 +47,8 @@ function taxonbydsid(req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, + data: null, + message: err.message, }); }); } @@ -195,8 +196,8 @@ function externaltaxonquery (req, res, next) { res.status(500) .json({ status: 'failure', - data: err.message, - message: 'Must pass either queries or a comma separated integer sequence.' + data: null, + message: err.message }); next(err) }); diff --git a/v2.0/oxcal/oxcal.js b/v2.0/oxcal/oxcal.js index fe9c66c..f5addde 100644 --- a/v2.0/oxcal/oxcal.js +++ b/v2.0/oxcal/oxcal.js @@ -74,8 +74,8 @@ function calibrate(req, res, next) { res.status(500) .json({ status: 'error', - data: err.message, - message: 'Hit an unexpected error' + data: null, + message: err.message }); next(err) }) @@ -127,8 +127,8 @@ function calibrate(req, res, next) { res.status(500) .json({ status: 'error', - data: err.message, - message: 'Hit an unexpected error' + data: null, + message: err.message }); next(err) }) From 369f944e2bfb9f37ef694eb5594f546178b98db2 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 12:57:38 -0700 Subject: [PATCH 13/16] script was not properly cleaning old files --- openapi/scripts/build-openapi.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openapi/scripts/build-openapi.js b/openapi/scripts/build-openapi.js index 2e2f755..61ec2e7 100644 --- a/openapi/scripts/build-openapi.js +++ b/openapi/scripts/build-openapi.js @@ -40,6 +40,11 @@ function buildOpenAPI() { function findYamlElements(dir) { // self note: you can `push()` to a const array. const yamlElements = []; + // Git does not keep empty folders, so a section with no files yet (for + // example components/responses) is absent from a fresh checkout. + if (!fs.existsSync(dir)) { + return yamlElements; + } const items = fs.readdirSync(dir); items.forEach((item) => { const fullPath = path.join(dir, item); From 63580776cdf0d5d1d35dc0600f88e9da29418885 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 13:06:27 -0700 Subject: [PATCH 14/16] Test only the server that was just deployed --- .github/workflows/test.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 02efe5c..1e6d2aa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,7 +4,7 @@ on: workflow_run: workflows: ["Deploy Neotoma API"] types: [completed] - branches: [develop] + branches: [develop, production] workflow_dispatch: jobs: @@ -13,22 +13,25 @@ jobs: if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} timeout-minutes: 25 + # Test only the server that was just deployed: a push to `production` tests + # production, anything else (a push to `develop`, or a manual run started + # from another branch) tests dev. After a deploy the branch is the one that + # triggered the Deploy run; for a manual run it is the branch it started on. strategy: fail-fast: false matrix: - include: - - name: dev - flag: '-d' - host: https://api-dev.neotomadb.org - - name: production - flag: '-p' - host: https://api.neotomadb.org + include: ${{ fromJSON((github.event.workflow_run.head_branch || github.ref_name) == 'production' && '[{"name":"production","flag":"-p","host":"https://api.neotomadb.org"}]' || '[{"name":"dev","flag":"-d","host":"https://api-dev.neotomadb.org"}]') }} name: test (${{ matrix.name }}) steps: - name: Checkout code uses: actions/checkout@v5 + with: + # A workflow_run job checks out the default branch unless told + # otherwise. Check out the commit that was deployed so its own tests + # and openapi.yaml are what runs. + ref: ${{ github.event.workflow_run.head_sha || github.sha }} # package.json pins "packageManager": "yarn@4.12.0". The runner's global # Yarn is 1.22.x, which refuses such a project, so Corepack has to be on From dbd57c2fb44d4ff6ef486a8f7745bd7b6b6d7249 Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 13:26:02 -0700 Subject: [PATCH 15/16] Run build and startup checks on pushes as well as pull requests The checks job now also runs on pushes to develop and production. It is renamed from pr-checks to checks since it is no longer PR-only. --- .github/workflows/test.yml | 72 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e6d2aa..721a0f6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,6 +5,14 @@ on: workflows: ["Deploy Neotoma API"] types: [completed] branches: [develop, production] + # The `checks` job runs on every pull request into develop or production (so + # develop -> production too) and on every push to those branches. The `test` + # job does not: it tests a deployed server, and neither a pull request nor a + # push that has not been deployed yet is running anywhere. + pull_request: + branches: [develop, production] + push: + branches: [develop, production] workflow_dispatch: jobs: @@ -82,3 +90,67 @@ jobs: with: name: test-report-${{ matrix.name }} path: public/tests.html + + # Checks that need no database, so they test the pushed or proposed code on + # the runner. The mocha suite needs a live API and database, so it only runs + # after a deploy (the `test` job above). + checks: + name: Checks (syntax, OpenAPI spec, startup) + if: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }} + runs-on: ubuntu-latest + timeout-minutes: 10 + permissions: + contents: read + concurrency: + # A newer push to a pull request replaces that pull request's older run. + # Every push to develop/production gets its own group (the run id), so + # nothing is cancelled and every commit has a result. + group: checks-${{ github.event_name == 'pull_request' && github.ref || github.run_id }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + + steps: + - name: Checkout code + uses: actions/checkout@v5 + + - name: Enable Corepack + run: corepack enable + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' # keep in step with FROM node:22-alpine in the Dockerfile + cache: 'yarn' + + - name: Install dependencies + run: yarn install --immutable + + - name: Check JavaScript syntax + run: find app.js database src v1.5 v2.0 openapi/scripts -name '*.js' -print0 | xargs -0 -n1 node --check + + - name: Build the OpenAPI spec and check openapi.yaml is up to date + run: | + yarn build:openapi + if ! git diff --exit-code -- openapi.yaml; then + echo "::error file=openapi.yaml::openapi.yaml is out of date. Run 'yarn build:openapi' and commit the result." + exit 1 + fi + + - name: Start the API without a database and check /healthcheck + env: + APIPORT: '3999' + NODE_ENV: development + run: | + node app.js > app.log 2>&1 & + pid=$! + for i in $(seq 1 30); do + if curl -sf http://127.0.0.1:3999/healthcheck/ > /dev/null; then + echo "healthcheck answered after ${i}s" + kill "$pid" + exit 0 + fi + sleep 1 + done + echo "::error::The API did not answer /healthcheck/ within 30 s" + cat app.log + kill "$pid" 2>/dev/null || true + exit 1 From 468eecf58a1b7680535749c397ddbac73d49647c Mon Sep 17 00:00:00 2001 From: Socorro DominguezVidana Date: Wed, 21 Oct 2026 13:32:03 -0700 Subject: [PATCH 16/16] Best labeling of checks --- .github/workflows/test.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 721a0f6..a47363c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,11 @@ jobs: matrix: include: ${{ fromJSON((github.event.workflow_run.head_branch || github.ref_name) == 'production' && '[{"name":"production","flag":"-p","host":"https://api.neotomadb.org"}]' || '[{"name":"dev","flag":"-d","host":"https://api-dev.neotomadb.org"}]') }} - name: test (${{ matrix.name }}) + # A fixed name: when this job is skipped (push and pull_request runs) GitHub + # never expands the matrix, so a name that used matrix.name showed up as the + # raw "${{ matrix.name }}" text. The target (dev or production) is in the + # step names and the test-report artifact name instead. + name: Test deployed server steps: - name: Checkout code