From 3f079d09a855253841d6b42678827b645c776716 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 27 May 2024 16:58:55 +1000 Subject: [PATCH] Migrate from postman to bruno for integration tests (#2197) * Initial bruno test commit * Added set cookie pre request scripts for the rest of the tests that require them * Fixed List Attachments for Datarecord test * Added OpenID Connect tests * Added docker compose to run bruno tests. Fixed up configuration to work with bruno method of running CLI tool * Added config to run bruno tests on CircleCI * Tidied up writing of test report * Removed Solr test as it should really be done as part of the Mocha tests * Added npm install command required to get mocha inside node_modules. * Added missing tests from current develop branch postman * Ported final tests from postman to bruno * Updated mocha tests to use latest mongo image * Fixed mongodb docker label * run bruno and remove postman Signed-off-by: Mark Cottman-Fields * run bruno and remove postman Signed-off-by: Mark Cottman-Fields * ensure junit output dirs are available Signed-off-by: Mark Cottman-Fields * reuse npm run instead of duplicate docker compose command Signed-off-by: Mark Cottman-Fields * make .tmp folders consistently created in top-level dir Signed-off-by: Mark Cottman-Fields --------- Signed-off-by: Mark Cottman-Fields Co-authored-by: Andrew Brazzatti Co-authored-by: andrewbrazzatti --- .circleci/config.yml | 20 +- config/env/integrationtest.js | 8 +- package-lock.json | 2644 +++--- package.json | 8 +- support/development/prepareLocalDev.sh | 8 +- ...se.newman.yml => docker-compose.bruno.yml} | 49 +- .../docker-compose.mocha.yml | 16 +- .../integration-testing/docker-compose.yml | 2 +- .../keycloakdb/data/h2/keycloakdb.lock.db | 6 - .../keycloakdb/data/h2/keycloakdb.mv.db | Bin 1114112 -> 1114112 bytes .../keycloakdb/data/h2/keycloakdb.trace.db | 765 ++ .../Add attachment to Datarecord.bru | 39 + .../Create Datarecord for Attachments.bru | 127 + .../Create RDMP For Deletion.bru | 76 + .../1 - Record Management/Create RDMP.bru | 81 + .../Create Temporary Datapub.bru | 215 + .../Create record type Existing Locations.bru | 48 + .../Delete Record Again.bru | 27 + .../1 - Record Management/Delete Record.bru | 27 + .../Destroy Deleted Record.bru | 22 + .../Export RDMP Records.bru | 40 + .../Get Attachment for Datarecord.bru | 29 + .../Get RDMP-s Metadata - Updated Test.bru | 27 + .../Get RDMP-s Metadata.bru | 27 + .../Get RDMP-s ObjectMetadata.bru | 29 + ... RDMP-s Record Audit with Date filters.bru | 34 + .../Get RDMP-s Record Audit.bru | 36 + .../Give role edit permissions to RDMP.bru | 35 + .../Give role view permissions to RDMP.bru | 35 + .../Give user edit permissions to RDMP.bru | 35 + ...view permissions to Existing Locations.bru | 35 + .../List Attachments for Datarecord.bru | 28 + .../List Deleted RDMPs.bru | 37 + .../1 - Record Management/List RDMPs.bru | 37 + .../Remove role edit permissions to RDMP.bru | 35 + .../Remove role view permissions to RDMP.bru | 35 + .../Remove user edit permissions to RDMP.bru | 35 + ...view permissions to Existing Locations.bru | 35 + .../Restore Deleted Record.bru | 22 + ...ransition Workflow of Data publication.bru | 29 + ...date RDMP Metadata that does not exist.bru | 75 + .../Update RDMP Metadata.bru | 75 + ...t to retrieve user that does not exist.bru | 49 + .../Create API Researcher User.bru | 44 + ...Generate API Researcher User API Token.bru | 32 + .../Get Admin User Details.bru | 47 + .../2 - User Management/List Users.bru | 34 + .../Revoke API Researcher User API Token.bru | 32 + .../Update API Researcher User.bru | 42 + .../1 - REST API/3 - Search/Index Record.bru | 25 + .../1 - REST API/3 - Search/Remove All.bru | 27 + .../1 - REST API/3 - Search/Search Index.bru | 30 + .../4 - Form Management/Get Form.bru | 30 + .../4 - Form Management/List Forms.bru | 27 + .../Get Record Type.bru | 30 + .../List Record Types.bru | 27 + .../Refresh Cached Resources.bru | 22 + .../7 - App Config/Get App Config.bru | 26 + .../7 - App Config/Update App Config.bru | 44 + ...her user from the user management page.bru | 68 + .../Create data publication.bru | 237 + .../Create data record via form.bru | 145 + .../Create new researcher user.bru | 63 + .../Dashboard List RDMP Records.bru | 53 + .../Delete the created data record.bru | 33 + .../Download attachment.bru | 26 + .../1 - Admin User Tests/Export RDMP Data.bru | 70 + .../First Phase of attachment upload.bru | 48 + ...nerate API key for new researcher user.bru | 57 + .../Get App Config Form - System Messages.bru | 57 + .../Get App Config View - System Messages.bru | 46 + .../Get Dashboard Type Consolidated.bru | 39 + .../Get Dashboard Type Standard.bru | 39 + .../Get Dashboard Type Workspace.bru | 39 + .../Get DataPublication Workflow Steps.bru | 47 + .../Get DataRecord Type info.bru | 47 + .../Get all Record Types Info.bru | 46 + .../Get edit form config for RDMP.bru | 51 + ...cher user no longer has librarian role.bru | 60 + .../Get list of users and roles.bru | 60 + ...sers list and find new researcher user.bru | 63 + .../Get view form config for RDMP.bru | 52 + .../List Dashboard Types.bru | 41 + .../Login via Internal authentication.bru | 50 + .../Logout Admin User.bru | 38 + .../Migrate data publication to reviewing.bru | 240 + ...ve Librarian role from Researcher User.bru | 62 + .../1 - Admin User Tests/Report.bru | 48 + .../Save App Config - System Messages.bru | 65 + .../Save attachment on Data Record.bru | 160 + .../1 - Admin User Tests/Search Index.bru | 49 + .../Second Phase of attachment upload.bru | 52 + .../Try to create same researcher user.bru | 69 + ...ate RDMP Metadata using AJAX form call.bru | 89 + .../Update researcher user-s password.bru | 70 + ...ew form config for RDMP - Unauthorised.bru | 33 + .../Create data publication.bru | 236 + .../Create data record via form.bru | 144 + ...l authentication using researcher data.bru | 51 + ...g researcheruser with invalid password.bru | 52 + .../Logout Researcher User.bru | 38 + .../Migrate data publication to reviewing.bru | 240 + ...pdate data publication after in review.bru | 231 + .../3 - OpenID Connect/Begin OIDC login.bru | 46 + .../Keycloak login action.bru | 46 + .../Keycloak login page.bru | 43 + .../3 - OpenID Connect/Load login page.bru | 40 + .../RedBox OIDC return login.bru | 44 + .../RedBox OIDC return welcome page.bru | 47 + test/bruno/4 - General/Get logo.bru | 24 + test/bruno/4 - General/Get stylesheet.bru | 26 + test/{postman => bruno}/attachment.png | Bin test/bruno/bruno.json | 14 + test/bruno/environments/development.bru | 5 + test/bruno/environments/int-test.bru | 6 + test/bruno/package-lock.json | 193 + test/bruno/package.json | 5 + test/postman/local.environment.json | 59 - test/postman/runNewmanTests.js | 54 - test/postman/test-collection.json | 7594 ----------------- 120 files changed, 8575 insertions(+), 8736 deletions(-) rename support/integration-testing/{docker-compose.newman.yml => docker-compose.bruno.yml} (61%) delete mode 100644 support/integration-testing/keycloakdb/data/h2/keycloakdb.lock.db create mode 100644 test/bruno/1 - REST API/1 - Record Management/Add attachment to Datarecord.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Create Datarecord for Attachments.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Create RDMP For Deletion.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Create RDMP.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Create Temporary Datapub.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Create record type Existing Locations.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Delete Record Again.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Delete Record.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Destroy Deleted Record.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Export RDMP Records.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Get Attachment for Datarecord.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata - Updated Test.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Get RDMP-s ObjectMetadata.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit with Date filters.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Give role edit permissions to RDMP.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Give role view permissions to RDMP.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Give user edit permissions to RDMP.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Give user view permissions to Existing Locations.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/List Attachments for Datarecord.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/List Deleted RDMPs.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/List RDMPs.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Remove role edit permissions to RDMP.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Remove role view permissions to RDMP.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Remove user edit permissions to RDMP.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Remove user view permissions to Existing Locations.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Restore Deleted Record.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Transition Workflow of Data publication.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata that does not exist.bru create mode 100644 test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata.bru create mode 100644 test/bruno/1 - REST API/2 - User Management/Attempt to retrieve user that does not exist.bru create mode 100644 test/bruno/1 - REST API/2 - User Management/Create API Researcher User.bru create mode 100644 test/bruno/1 - REST API/2 - User Management/Generate API Researcher User API Token.bru create mode 100644 test/bruno/1 - REST API/2 - User Management/Get Admin User Details.bru create mode 100644 test/bruno/1 - REST API/2 - User Management/List Users.bru create mode 100644 test/bruno/1 - REST API/2 - User Management/Revoke API Researcher User API Token.bru create mode 100644 test/bruno/1 - REST API/2 - User Management/Update API Researcher User.bru create mode 100644 test/bruno/1 - REST API/3 - Search/Index Record.bru create mode 100644 test/bruno/1 - REST API/3 - Search/Remove All.bru create mode 100644 test/bruno/1 - REST API/3 - Search/Search Index.bru create mode 100644 test/bruno/1 - REST API/4 - Form Management/Get Form.bru create mode 100644 test/bruno/1 - REST API/4 - Form Management/List Forms.bru create mode 100644 test/bruno/1 - REST API/5 - Record Type Management/Get Record Type.bru create mode 100644 test/bruno/1 - REST API/5 - Record Type Management/List Record Types.bru create mode 100644 test/bruno/1 - REST API/6 - Administration/Refresh Cached Resources.bru create mode 100644 test/bruno/1 - REST API/7 - App Config/Get App Config.bru create mode 100644 test/bruno/1 - REST API/7 - App Config/Update App Config.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Add librarian role to researcher user from the user management page.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data publication.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data record via form.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Create new researcher user.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Dashboard List RDMP Records.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Delete the created data record.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Download attachment.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Export RDMP Data.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/First Phase of attachment upload.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Generate API key for new researcher user.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config Form - System Messages.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config View - System Messages.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Consolidated.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Standard.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Workspace.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataPublication Workflow Steps.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataRecord Type info.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get all Record Types Info.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get edit form config for RDMP.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles - Check researcher user no longer has librarian role.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get users list and find new researcher user.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Get view form config for RDMP.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/List Dashboard Types.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Login via Internal authentication.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Logout Admin User.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Migrate data publication to reviewing.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Remove Librarian role from Researcher User.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Report.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Save App Config - System Messages.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Save attachment on Data Record.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Search Index.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Second Phase of attachment upload.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Try to create same researcher user.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Update RDMP Metadata using AJAX form call.bru create mode 100644 test/bruno/2 - AJAX calls/1 - Admin User Tests/Update researcher user-s password.bru create mode 100644 test/bruno/2 - AJAX calls/2 - Guest User Tests/Get view form config for RDMP - Unauthorised.bru create mode 100644 test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data publication.bru create mode 100644 test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data record via form.bru create mode 100644 test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcher data.bru create mode 100644 test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcheruser with invalid password.bru create mode 100644 test/bruno/2 - AJAX calls/3 - Researcher User Tests/Logout Researcher User.bru create mode 100644 test/bruno/2 - AJAX calls/3 - Researcher User Tests/Migrate data publication to reviewing.bru create mode 100644 test/bruno/2 - AJAX calls/3 - Researcher User Tests/Update data publication after in review.bru create mode 100644 test/bruno/3 - OpenID Connect/Begin OIDC login.bru create mode 100644 test/bruno/3 - OpenID Connect/Keycloak login action.bru create mode 100644 test/bruno/3 - OpenID Connect/Keycloak login page.bru create mode 100644 test/bruno/3 - OpenID Connect/Load login page.bru create mode 100644 test/bruno/3 - OpenID Connect/RedBox OIDC return login.bru create mode 100644 test/bruno/3 - OpenID Connect/RedBox OIDC return welcome page.bru create mode 100644 test/bruno/4 - General/Get logo.bru create mode 100644 test/bruno/4 - General/Get stylesheet.bru rename test/{postman => bruno}/attachment.png (100%) create mode 100644 test/bruno/bruno.json create mode 100644 test/bruno/environments/development.bru create mode 100644 test/bruno/environments/int-test.bru create mode 100644 test/bruno/package-lock.json create mode 100644 test/bruno/package.json delete mode 100644 test/postman/local.environment.json delete mode 100644 test/postman/runNewmanTests.js delete mode 100644 test/postman/test-collection.json diff --git a/.circleci/config.yml b/.circleci/config.yml index 9d3a26a58c..70cb81bd0a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -78,7 +78,7 @@ jobs: command: | mkdir -p /tmp/.codecov-cli cd /tmp/.codecov-cli - curl https://keybase.io/codecovsecurity/pgp_keys.asc | gpg --no-default-keyring --keyring trustedkeys.gpg --import # One-time step + curl https://keybase.io/codecovsecurity/pgp_keys.asc | gpg --no-default-keyring --keyring trustedkeys.gpg --import curl -Os https://cli.codecov.io/latest/linux/codecov curl -Os https://cli.codecov.io/latest/linux/codecov.SHA256SUM curl -Os https://cli.codecov.io/latest/linux/codecov.SHA256SUM.sig @@ -86,21 +86,23 @@ jobs: shasum -a 256 -c codecov.SHA256SUM chmod +x codecov - run: - name: Run Postman and Mocha tests with code coverage + name: Run Bruno and Mocha tests with code coverage command: | - sudo mkdir -p .tmp/junit - sudo chmod -R 777 . - cd support/integration-testing + sudo mkdir -p .tmp/junit/backend-bruno + sudo mkdir -p .tmp/junit/backend-mocha sudo mkdir -p .tmp/attachments/staging sudo chmod -R 777 . - docker-compose -f docker-compose.newman.yml up --abort-on-container-exit --exit-code-from redboxportal - docker-compose -f docker-compose.mocha.yml up --abort-on-container-exit --exit-code-from redboxportal + cd support/integration-testing + npm run test:bruno + npm run test:bruno:clean + npm run test:mocha + npm run test:mocha:clean - run: - name: Upload newman and mocha code coverage + name: Upload Bruno and mocha code coverage command: | /tmp/.codecov-cli/codecov --verbose upload-process --fail-on-error --disable-search \ --token "${CODECOV_TOKEN}" --name "job-${CIRCLE_BUILD_NUM}-${CIRCLE_BRANCH}" \ - --flag "backend-newman" --file "./coverage/newman/lcov.info" + --flag "backend-bruno" --file "./coverage/bruno/lcov.info" /tmp/.codecov-cli/codecov --verbose upload-process --fail-on-error --disable-search \ --token "${CODECOV_TOKEN}" --name "job-${CIRCLE_BUILD_NUM}-${CIRCLE_BRANCH}" \ --flag "backend-mocha" --file "./coverage/mocha/lcov.info" diff --git a/config/env/integrationtest.js b/config/env/integrationtest.js index ab13617bce..bcd27421ac 100644 --- a/config/env/integrationtest.js +++ b/config/env/integrationtest.js @@ -29,7 +29,7 @@ module.exports = { log: { level: 'verbose' }, - appUrl:'http://localhost:1500', + appUrl:'http://redboxportal:1500', record:{ baseUrl: { redbox: "http://redbox:9000/redbox", @@ -67,7 +67,7 @@ module.exports = { secretOrKey: 'Y30wY4xv1*6I7yUX%6v*Tzce8OEbVO&@R4hVb%2@Gehtx^xgOqQ97Slv!ZOkfHHmox&x0zAt*0o&4^8$9oW8WTf&r@&d31EFbQZr', jsonWebTokenOptions: { issuer: 'https://rapid.test.aaf.edu.au', - audience: 'http://localhost:1500/default/rdmp/', + audience: 'http://redboxportal:1500/default/rdmp/', ignoreNotBefore: true } } @@ -95,8 +95,8 @@ module.exports = { client: { client_id: 'redbox', client_secret: 'w2snramgGaqehPiujV695iUfKmZAJ147', - redirect_uris: ['http://localhost:1500/user/login_oidc'], - post_logout_redirect_uris: ['http://localhost:1500/default/rdmp/user/logout'], + redirect_uris: ['http://redboxportal:1500/user/login_oidc'], + post_logout_redirect_uris: ['http://redboxportal:1500/default/rdmp/user/logout'], }, params: { scope: 'openid email profile', diff --git a/package-lock.json b/package-lock.json index 2fa238b304..7de36a05e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,521 +94,1762 @@ "istanbul": "^0.4.5", "mocha": "^10.4.0", "mocha-junit-reporter": "^2.2.1", - "newman": "^6.1.2", "supertest": "^7.0.0", "uglify-es": "^3.3.10" } }, - "node_modules/@babel/runtime": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", + "node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "optional": true, + "peer": true, "dependencies": { - "regenerator-runtime": "^0.14.0" + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true, + "peer": true + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true, + "peer": true + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true, + "peer": true + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true, + "peer": true + }, + "node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true, + "peer": true + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.525.0.tgz", + "integrity": "sha512-LxI9rfn6Vy/EX6I7as14PAKqAhUwVQviaMV/xCLQIubgdVj1xfexVURdiSk7GQshpcwtrs+GQWV21yP+3AX/7A==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/credential-provider-node": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, + "node_modules/@aws-sdk/client-sso": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.525.0.tgz", + "integrity": "sha512-6KwGQWFoNLH1UupdWPFdKPfTgjSz1kN8/r8aCzuvvXBe4Pz+iDUZ6FEJzGWNc9AapjvZDNO1hs23slomM9rTaA==", "optional": true, + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=0.1.90" + "node": ">=14.0.0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.525.0.tgz", + "integrity": "sha512-zz13k/6RkjPSLmReSeGxd8wzGiiZa4Odr2Tv3wTcxClM4wOjD+zOgGv4Fe32b9AMqaueiCdjbvdu7AKcYxFA4A==", + "optional": true, + "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=12" + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.525.0" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/@aws-sdk/client-sts": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.525.0.tgz", + "integrity": "sha512-a8NUGRvO6rkfTZCbMaCsjDjLbERCwIUU9dIywFYcRgbFhkupJ7fSaZz3Het98U51M9ZbTEpaTa3fz0HaJv8VJw==", + "optional": true, + "peer": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.525.0" } }, - "node_modules/@faker-js/faker": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz", - "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==", - "dev": true + "node_modules/@aws-sdk/core": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.525.0.tgz", + "integrity": "sha512-E3LtEtMWCriQOFZpVKpLYzbdw/v2PAOEAMhn2VRRZ1g0/g1TXzQrfhEU2yd8l/vQEJaCJ82ooGGg7YECviBUxA==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/core": "^1.3.5", + "@smithy/protocol-http": "^3.2.1", + "@smithy/signature-v4": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@google-cloud/paginator": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", - "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.525.0.tgz", + "integrity": "sha512-0djjCN/zN6QFQt1xU64VBOSRP4wJckU6U7FjLPrGpL6w03hF0dUmVUXjhQZe5WKNPCicVc2S3BYPohl/PzCx1w==", + "optional": true, + "peer": true, "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" + "@aws-sdk/client-cognito-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/@google-cloud/projectify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", - "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.523.0.tgz", + "integrity": "sha512-Y6DWdH6/OuMDoNKVzZlNeBc6f1Yjk1lYMjANKpIhMbkRCvLJw/PYZKOZa8WpXbTYdgg9XLjKybnLIb3ww3uuzA==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, - "node_modules/@google-cloud/promisify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", - "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.525.0.tgz", + "integrity": "sha512-RNWQGuSBQZhl3iqklOslUEfQ4br1V3DCPboMpeqFtddUWJV3m2u2extFur9/4Uy+1EHVF120IwZUKtd8dF+ibw==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/property-provider": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-stream": "^2.1.3", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/@google-cloud/storage": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz", - "integrity": "sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==", + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.525.0.tgz", + "integrity": "sha512-JDnccfK5JRb9jcgpc9lirL9PyCwGIqY0nKdw3LlX5WL5vTpTG4E1q7rLAlpNh7/tFD1n66Itarfv2tsyHMIqCw==", + "optional": true, + "peer": true, "dependencies": { - "@google-cloud/paginator": "^3.0.7", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "duplexify": "^4.0.0", - "ent": "^2.2.0", - "extend": "^3.0.2", - "fast-xml-parser": "^4.2.2", - "gaxios": "^5.0.0", - "google-auth-library": "^8.0.1", - "mime": "^3.0.0", - "mime-types": "^2.0.8", - "p-limit": "^3.0.1", - "retry-request": "^5.0.0", - "teeny-request": "^8.0.0", - "uuid": "^8.0.0" + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.525.0", + "@aws-sdk/credential-provider-web-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/@google-cloud/storage/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.525.0.tgz", + "integrity": "sha512-RJXlO8goGXpnoHQAyrCcJ0QtWEOFa34LSbfdqBIjQX/fwnjUuEmiGdXTV3AZmwYQ7juk49tfBneHbtOP3AGqsQ==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-http": "3.525.0", + "@aws-sdk/credential-provider-ini": "3.525.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.525.0", + "@aws-sdk/credential-provider-web-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.0.0" } }, - "node_modules/@google-cloud/storage/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.523.0.tgz", + "integrity": "sha512-f0LP9KlFmMvPWdKeUKYlZ6FkQAECUeZMmISsv6NKtvPCI9e4O4cLTeR09telwDK8P0HrgcRuZfXM7E30m8re0Q==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.525.0.tgz", + "integrity": "sha512-7V7ybtufxdD3plxeIeB6aqHZeFIUlAyPphXIUgXrGY10iNcosL970rQPBeggsohe4gCM6UvY2TfMeEcr+ZE8FA==", + "optional": true, + "peer": true, "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@aws-sdk/client-sso": "3.525.0", + "@aws-sdk/token-providers": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.525.0.tgz", + "integrity": "sha512-sAukOjR1oKb2JXG4nPpuBFpSwGUhrrY17PG/xbTy8NAoLLhrqRwnErcLfdTfmj6tH+3094k6ws/Sh8a35ae7fA==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=12" + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.525.0.tgz", + "integrity": "sha512-zj439Ok1s44nahIJKpBM4jhAxnSw20flXQpMD2aeGdvUuKm2xmzZP0lX5z9a+XQWFtNh251ZcSt2p+RwtLKtiw==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.525.0", + "@aws-sdk/client-sso": "3.525.0", + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/credential-provider-cognito-identity": "3.525.0", + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-http": "3.525.0", + "@aws-sdk/credential-provider-ini": "3.525.0", + "@aws-sdk/credential-provider-node": "3.525.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.525.0", + "@aws-sdk/credential-provider-web-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.523.0.tgz", + "integrity": "sha512-4g3q7Ta9sdD9TMUuohBAkbx/e3I/juTqfKi7TPgP+8jxcYX72MOsgemAMHuP6CX27eyj4dpvjH+w4SIVDiDSmg==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=12" + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.523.0.tgz", + "integrity": "sha512-PeDNJNhfiaZx54LBaLTXzUaJ9LXFwDFFIksipjqjvxMafnoVcQwKbkoPUWLe5ytT4nnL1LogD3s55mERFUsnwg==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.523.0.tgz", + "integrity": "sha512-nZ3Vt7ehfSDYnrcg/aAfjjvpdE+61B3Zk68i6/hSUIegT3IH9H1vSW67NDKVp+50hcEfzWwM2HMPXxlzuyFyrw==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.525.0.tgz", + "integrity": "sha512-4al/6uO+t/QIYXK2OgqzDKQzzLAYJza1vWFS+S0lJ3jLNGyLB5BMU5KqWjDzevYZ4eCnz2Nn7z0FveUTNz8YdQ==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.525.0.tgz", + "integrity": "sha512-8kFqXk6UyKgTMi7N7QlhA6qM4pGPWbiUXqEY2RgUWngtxqNFGeM9JTexZeuavQI+qLLe09VPShPNX71fEDcM6w==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.525.0.tgz", + "integrity": "sha512-puVjbxuK0Dq7PTQ2HdddHy2eQjOH8GZbump74yWJa6JVpRW84LlOcNmP+79x4Kscvz2ldWB8XDFw/pcCiSDe5A==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.523.0.tgz", + "integrity": "sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.525.0.tgz", + "integrity": "sha512-DIW7WWU5tIGkeeKX6NJUyrEIdWMiqjLQG3XBzaUj+ufIENwNjdAHhlD8l2vX7Yr3JZRT6yN/84wBCj7Tw1xd1g==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "@smithy/util-endpoints": "^1.1.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.523.0.tgz", + "integrity": "sha512-6ZRNdGHX6+HQFqTbIA5+i8RWzxFyxsZv8D3soRfpdyWIKkzhSz8IyRKXRciwKBJDaC7OX2jzGE90wxRQft27nA==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.525.0.tgz", + "integrity": "sha512-88Wjt4efyUSBGcyIuh1dvoMqY1k15jpJc5A/3yi67clBQEFsu9QCodQCQPqmRjV3VRcMtBOk+jeCTiUzTY5dRQ==", + "optional": true, + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", + "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@google-cloud/paginator": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", + "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", + "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@google-cloud/storage": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz", + "integrity": "sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==", + "dependencies": { + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^3.0.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "duplexify": "^4.0.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "fast-xml-parser": "^4.2.2", + "gaxios": "^5.0.0", + "google-auth-library": "^8.0.1", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "retry-request": "^5.0.0", + "teeny-request": "^8.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@google-cloud/storage/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@google-cloud/storage/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.3.tgz", + "integrity": "sha512-SyCxhJfmK6MoLNV5SbDpNdUy9SDv5H7y9/9rl3KpnwgTHWuNNMc87zWqbcIZXNWY+aUjxLGLEcvHoLagG4tWCg==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@researchdatabox/raido-openapi-generated-node": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@researchdatabox/raido-openapi-generated-node/-/raido-openapi-generated-node-0.0.2.tgz", + "integrity": "sha512-Q9h0PYZZBWSELCkBSwGqG//ynOUSAYEwieFM5lfi27A2k1C86ayHoDThbRq7XqGmSbaE+EhmX3lxdiAhkkPNig==" + }, + "node_modules/@researchdatabox/redbox-core-types": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@researchdatabox/redbox-core-types/-/redbox-core-types-1.4.3.tgz", + "integrity": "sha512-Krxi2jxUUH+pl/XmZ5ze7Ko22S5ZLjX0cMLWNsyymavw1/gsXxdaJUgtXUQyFpEMmDlOrDYLn08/1v7Ojctauw==", + "dependencies": { + "@tsconfig/node18": "^18.2.0" + } + }, + "node_modules/@researchdatabox/sails-hook-redbox-storage-mongo": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@researchdatabox/sails-hook-redbox-storage-mongo/-/sails-hook-redbox-storage-mongo-1.4.5.tgz", + "integrity": "sha512-h5Yb40tkk+LozECSIMgQ5vPDD0zeQ8+aoemKv/ALdqj9QNFzet9JekEw8KbubD+/3Xd3NpA4kTM2Zpyah0+lnA==", + "dependencies": { + "json2csv": "^5.0.3", + "lodash": "^4.17.21", + "uuid": "8.3.0" + } + }, + "node_modules/@researchdatabox/sails-hook-redbox-storage-mongo/node_modules/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@researchdatabox/sails-ng-common": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@researchdatabox/sails-ng-common/-/sails-ng-common-0.1.0.tgz", + "integrity": "sha512-276ZEkjYAmjtzJI8F7MLl5tKKVBjEC8MorHfryJja1kWk/KYS5N6n6+22BEOq6FaOnqYzqeLcUbfHLfwuhBkCA==" + }, + "node_modules/@sailshq/binary-search-tree": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@sailshq/binary-search-tree/-/binary-search-tree-0.2.7.tgz", + "integrity": "sha512-4q7A4I0cYzRRrPUA/mZYFQ3My26RAyWQ10IfdgHaBC6M1ZNCUpQnT7vRMZd5KgnlUBl8MSlP4JUbL5heeSHMBw==", + "dependencies": { + "underscore": "1.13.1" + } + }, + "node_modules/@sailshq/lodash": { + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.6.tgz", + "integrity": "sha512-gp2pRE/kyh3DbrQ7MaI65xNcjrToZHRa52XJsNB8kZ0Aj0fcDNQPw8entkcuaaPYzCPxXau4rpOXaw/rl0c/ZQ==" + }, + "node_modules/@sailshq/nedb": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@sailshq/nedb/-/nedb-1.8.2.tgz", + "integrity": "sha512-qCViMLdh5WWIWEP9ARiSZTjQ1fSEwXsd6eYkD04WIrOt6uHRVF9k5bGnDQPKvTdlCVBTzxUZhPb7VC3+BKw21g==", + "dependencies": { + "@sailshq/binary-search-tree": "0.2.7", + "async": "0.2.10", + "localforage": "1.3.0", + "mkdirp": "0.5.6", + "underscore": "1.13.1" + } + }, + "node_modules/@sailshq/nedb/node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", + "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-config-provider": "^2.3.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", + "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", + "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/node-config-provider": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", + "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-node": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", + "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", + "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", + "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", + "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/middleware-serde": "^2.3.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", + "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/node-config-provider": "^2.3.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/service-error-classification": "^2.1.5", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "optional": true, + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", + "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", + "optional": true, + "peer": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@smithy/middleware-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", + "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^6.0.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@smithy/node-config-provider": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", + "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", + "optional": true, + "peer": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@smithy/node-http-handler": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", + "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", + "optional": true, + "peer": true, "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@smithy/abort-controller": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@smithy/property-provider": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", + "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", + "optional": true, + "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@smithy/protocol-http": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", + "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "optional": true, + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@smithy/querystring-builder": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", + "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", + "optional": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/types": "^2.12.0", + "@smithy/util-uri-escape": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@smithy/querystring-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", + "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", + "optional": true, + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "node_modules/@smithy/service-error-classification": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", + "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", + "optional": true, + "peer": true, "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@smithy/types": "^2.12.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", + "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@smithy/signature-v4": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", + "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-uri-escape": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "node_modules/@smithy/smithy-client": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", + "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", + "optional": true, + "peer": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-stream": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "optional": true, + "peer": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.3.tgz", - "integrity": "sha512-SyCxhJfmK6MoLNV5SbDpNdUy9SDv5H7y9/9rl3KpnwgTHWuNNMc87zWqbcIZXNWY+aUjxLGLEcvHoLagG4tWCg==", + "node_modules/@smithy/url-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", + "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", + "optional": true, + "peer": true, "dependencies": { - "sparse-bitfield": "^3.0.3" + "@smithy/querystring-parser": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@smithy/util-base64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", + "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", + "optional": true, + "peer": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" + "node_modules/@smithy/util-body-length-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", + "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@smithy/util-body-length-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", + "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "optional": true, + "peer": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "optional": true, + "peer": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "node_modules/@smithy/util-config-provider": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", + "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", + "optional": true, "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@postman/form-data": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", - "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", - "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6" + "node": ">=14.0.0" } }, - "node_modules/@postman/tough-cookie": { - "version": "4.1.3-postman.1", - "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", - "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", - "dev": true, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", + "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", + "optional": true, + "peer": true, "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "@smithy/property-provider": "^2.2.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" + "node": ">= 10.0.0" } }, - "node_modules/@postman/tunnel-agent": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", - "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", - "dev": true, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", + "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", + "optional": true, + "peer": true, "dependencies": { - "safe-buffer": "^5.0.1" + "@smithy/config-resolver": "^2.2.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">= 10.0.0" } }, - "node_modules/@researchdatabox/raido-openapi-generated-node": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@researchdatabox/raido-openapi-generated-node/-/raido-openapi-generated-node-0.0.2.tgz", - "integrity": "sha512-Q9h0PYZZBWSELCkBSwGqG//ynOUSAYEwieFM5lfi27A2k1C86ayHoDThbRq7XqGmSbaE+EhmX3lxdiAhkkPNig==" - }, - "node_modules/@researchdatabox/redbox-core-types": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@researchdatabox/redbox-core-types/-/redbox-core-types-1.4.3.tgz", - "integrity": "sha512-Krxi2jxUUH+pl/XmZ5ze7Ko22S5ZLjX0cMLWNsyymavw1/gsXxdaJUgtXUQyFpEMmDlOrDYLn08/1v7Ojctauw==", + "node_modules/@smithy/util-endpoints": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", + "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", + "optional": true, + "peer": true, "dependencies": { - "@tsconfig/node18": "^18.2.0" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@researchdatabox/sails-hook-redbox-storage-mongo": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@researchdatabox/sails-hook-redbox-storage-mongo/-/sails-hook-redbox-storage-mongo-1.4.5.tgz", - "integrity": "sha512-h5Yb40tkk+LozECSIMgQ5vPDD0zeQ8+aoemKv/ALdqj9QNFzet9JekEw8KbubD+/3Xd3NpA4kTM2Zpyah0+lnA==", + "node_modules/@smithy/util-hex-encoding": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", + "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "optional": true, + "peer": true, "dependencies": { - "json2csv": "^5.0.3", - "lodash": "^4.17.21", - "uuid": "8.3.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@researchdatabox/sails-hook-redbox-storage-mongo/node_modules/uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@smithy/util-middleware": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", + "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@researchdatabox/sails-ng-common": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@researchdatabox/sails-ng-common/-/sails-ng-common-0.1.0.tgz", - "integrity": "sha512-276ZEkjYAmjtzJI8F7MLl5tKKVBjEC8MorHfryJja1kWk/KYS5N6n6+22BEOq6FaOnqYzqeLcUbfHLfwuhBkCA==" - }, - "node_modules/@sailshq/binary-search-tree": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@sailshq/binary-search-tree/-/binary-search-tree-0.2.7.tgz", - "integrity": "sha512-4q7A4I0cYzRRrPUA/mZYFQ3My26RAyWQ10IfdgHaBC6M1ZNCUpQnT7vRMZd5KgnlUBl8MSlP4JUbL5heeSHMBw==", + "node_modules/@smithy/util-retry": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", + "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", + "optional": true, + "peer": true, "dependencies": { - "underscore": "1.13.1" + "@smithy/service-error-classification": "^2.1.5", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@sailshq/lodash": { - "version": "3.10.6", - "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.6.tgz", - "integrity": "sha512-gp2pRE/kyh3DbrQ7MaI65xNcjrToZHRa52XJsNB8kZ0Aj0fcDNQPw8entkcuaaPYzCPxXau4rpOXaw/rl0c/ZQ==" - }, - "node_modules/@sailshq/nedb": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@sailshq/nedb/-/nedb-1.8.2.tgz", - "integrity": "sha512-qCViMLdh5WWIWEP9ARiSZTjQ1fSEwXsd6eYkD04WIrOt6uHRVF9k5bGnDQPKvTdlCVBTzxUZhPb7VC3+BKw21g==", + "node_modules/@smithy/util-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", + "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", + "optional": true, + "peer": true, "dependencies": { - "@sailshq/binary-search-tree": "0.2.7", - "async": "0.2.10", - "localforage": "1.3.0", - "mkdirp": "0.5.6", - "underscore": "1.13.1" + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@sailshq/nedb/node_modules/async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", - "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "node_modules/@smithy/util-uri-escape": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", + "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "optional": true, + "peer": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=14.0.0" } }, "node_modules/@socket.io/component-emitter": { @@ -1476,6 +2717,13 @@ "node": ">=0.10.0" } }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "optional": true, + "peer": true + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1495,15 +2743,6 @@ "node": ">=8" } }, - "node_modules/brotli": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", - "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", - "dev": true, - "dependencies": { - "base64-js": "^1.1.2" - } - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -1722,12 +2961,6 @@ "node": ">=0.10.0" } }, - "node_modules/chardet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.0.0.tgz", - "integrity": "sha512-xVgPpulCooDjY6zH4m9YW3jbkaBe3FKIAvF5sj5t7aBNsVl2ljIE+xwJ4iNgiDZHFQvNIpjdKdVOQvvk5ZfxbQ==", - "dev": true - }, "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -1737,15 +2970,6 @@ "node": "*" } }, - "node_modules/charset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", - "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/check-disk-space": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/check-disk-space/-/check-disk-space-3.4.0.tgz", @@ -1808,33 +3032,6 @@ "node": ">=8" } }, - "node_modules/cli-progress": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", - "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", - "dev": true, - "dependencies": { - "string-width": "^4.2.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -2567,12 +3764,6 @@ "node": ">= 0.6" } }, - "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", - "dev": true - }, "node_modules/csv-parser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", @@ -2719,16 +3910,6 @@ "node": ">= 0.8" } }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -3695,15 +4876,6 @@ "pend": "~1.2.0" } }, - "node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -3723,15 +4895,6 @@ "node": ">=10" } }, - "node_modules/filesize": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.0.tgz", - "integrity": "sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==", - "dev": true, - "engines": { - "node": ">= 10.4.0" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -3795,12 +4958,6 @@ "node": ">=18" } }, - "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, "node_modules/flaverr": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/flaverr/-/flaverr-1.10.0.tgz", @@ -4448,12 +5605,6 @@ "node": ">= 6" } }, - "node_modules/http-reasons": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", - "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==", - "dev": true - }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -4476,46 +5627,6 @@ "hnp": "0.0.1" } }, - "node_modules/httpntlm": { - "version": "1.8.13", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.8.13.tgz", - "integrity": "sha512-2F2FDPiWT4rewPzNMg3uPhNkP3NExENlUGADRUDPQvuftuUTGW98nLZtGemCIW3G40VhWZYgkIDcQFAwZ3mf2Q==", - "dev": true, - "funding": [ - { - "type": "paypal", - "url": "https://www.paypal.com/donate/?hosted_button_id=2CKNJLZJBW8ZC" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/samdecrock" - } - ], - "dependencies": { - "des.js": "^1.0.1", - "httpreq": ">=0.4.22", - "js-md4": "^0.3.2", - "underscore": "~1.12.1" - }, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/httpntlm/node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "dev": true - }, - "node_modules/httpreq": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-1.1.1.tgz", - "integrity": "sha512-uhSZLPPD2VXXOSN8Cni3kIsoFHaU2pT/nySEU/fHr/ePbqHYr0jeiQRmUKLEirC09SFPsdMoA7LU7UXMd/w0Kw==", - "dev": true, - "engines": { - "node": ">= 6.15.1" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -4597,7 +5708,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, + "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -4677,6 +5788,34 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "optional": true, + "peer": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "optional": true, + "peer": true + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "optional": true, + "peer": true + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -5105,32 +6244,11 @@ "node": ">= 0.6.0" } }, - "node_modules/jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/jquery": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "dev": true - }, - "node_modules/js-sha512": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.9.0.tgz", - "integrity": "sha512-mirki9WS/SUahm+1TbAPkqvbCiCfOAAsyXeHxK1UkullnJVVqoJG2pL9ObvT05CN+tM7fxhfYm0NbXn+1hWoZg==", - "dev": true - }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -5416,15 +6534,6 @@ "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/liquid-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", - "integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -5854,15 +6963,6 @@ "node": ">= 0.6" } }, - "node_modules/mime-format": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", - "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", - "dev": true, - "dependencies": { - "charset": "^1.0.0" - } - }, "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", @@ -6378,96 +7478,13 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/newman": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/newman/-/newman-6.1.2.tgz", - "integrity": "sha512-VyaXFguIYM7QUWXHQlHtkj3axzZQFHgj9OYkhbKpq4iphKAJckHFstltacSBtgpeiGp5SKk9FBdCYVbJXcLvnQ==", - "dev": true, - "dependencies": { - "@postman/tough-cookie": "4.1.3-postman.1", - "async": "3.2.5", - "chardet": "2.0.0", - "cli-progress": "3.12.0", - "cli-table3": "0.6.3", - "colors": "1.4.0", - "commander": "11.1.0", - "csv-parse": "4.16.3", - "filesize": "10.1.0", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mkdirp": "3.0.1", - "postman-collection": "4.4.0", - "postman-collection-transformer": "4.1.8", - "postman-request": "2.88.1-postman.33", - "postman-runtime": "7.37.1", - "pretty-ms": "7.0.1", - "semver": "7.6.0", - "serialised-error": "1.1.3", - "word-wrap": "1.2.5", - "xmlbuilder": "15.1.1" - }, - "bin": { - "newman": "bin/newman.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/newman/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/newman/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/newman/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/newman/node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "dev": true, - "engines": { - "node": ">=8.0" - } + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/node-cache": { "version": "5.1.2", @@ -6526,12 +7543,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-oauth1": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", - "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", - "dev": true - }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -6618,15 +7629,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -6783,15 +7785,6 @@ "flaverr": "^1.5.1" } }, - "node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", @@ -7494,256 +8487,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/postman-collection": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.4.0.tgz", - "integrity": "sha512-2BGDFcUwlK08CqZFUlIC8kwRJueVzPjZnnokWPtJCd9f2J06HBQpGL7t2P1Ud1NEsK9NHq9wdipUhWLOPj5s/Q==", - "dev": true, - "dependencies": { - "@faker-js/faker": "5.5.3", - "file-type": "3.9.0", - "http-reasons": "0.1.0", - "iconv-lite": "0.6.3", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mime-format": "2.0.1", - "mime-types": "2.1.35", - "postman-url-encoder": "3.0.5", - "semver": "7.5.4", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.8.tgz", - "integrity": "sha512-smJ6X7Z7kbg6hp7JZPFixrSN3J3WkQed7DrWCC5tF7IxOMpFLqhtTtGssY8nD1inP8+mJf+N72Pf2ttUAHgBKw==", - "dev": true, - "dependencies": { - "commander": "8.3.0", - "inherits": "2.0.4", - "lodash": "4.17.21", - "semver": "7.5.4", - "strip-json-comments": "3.1.1" - }, - "bin": { - "postman-collection-transformer": "bin/transform-collection.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/postman-collection-transformer/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postman-collection/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-request": { - "version": "2.88.1-postman.33", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz", - "integrity": "sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA==", - "dev": true, - "dependencies": { - "@postman/form-data": "~3.1.1", - "@postman/tough-cookie": "~4.1.3-postman.1", - "@postman/tunnel-agent": "^0.6.3", - "aws-sign2": "~0.7.0", - "aws4": "^1.12.0", - "brotli": "^1.3.3", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "har-validator": "~5.1.3", - "http-signature": "~1.3.1", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "^2.1.35", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.3", - "safe-buffer": "^5.1.2", - "stream-length": "^1.0.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postman-request/node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/postman-request/node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/postman-request/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-runtime": { - "version": "7.37.1", - "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.37.1.tgz", - "integrity": "sha512-yqKN/p6Ba8+yq9iZsxJLkMPko3lKvs3hixkiPy5O7bapFQWgX6jWhny4W2O8BzE5T8KzE8s1HAgT2gi7e2Y5Jg==", - "dev": true, - "dependencies": { - "@postman/tough-cookie": "4.1.3-postman.1", - "async": "3.2.5", - "aws4": "1.12.0", - "handlebars": "4.7.8", - "httpntlm": "1.8.13", - "jose": "4.14.4", - "js-sha512": "0.9.0", - "lodash": "4.17.21", - "mime-types": "2.1.35", - "node-forge": "1.3.1", - "node-oauth1": "1.3.0", - "performance-now": "2.1.0", - "postman-collection": "4.4.0", - "postman-request": "2.88.1-postman.33", - "postman-sandbox": "4.6.0", - "postman-url-encoder": "3.0.5", - "serialised-error": "1.1.3", - "strip-json-comments": "3.1.1", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/postman-runtime/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postman-runtime/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-sandbox": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.6.0.tgz", - "integrity": "sha512-+tCUEhiFAV6saqMEetRzLmSWt4/9kgVagtnrVgyqVgIGdPBIaq1p3aay54bOzYW7/QjIIz0xPF3YkJA8Olt3LQ==", - "dev": true, - "dependencies": { - "lodash": "4.17.21", - "postman-collection": "4.4.0", - "teleport-javascript": "1.0.0", - "uvm": "2.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-url-encoder": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz", - "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -7753,21 +8496,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, - "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -7859,12 +8587,6 @@ "node": ">=0.4.x" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -8177,12 +8899,6 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, "node_modules/resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", @@ -9105,26 +9821,6 @@ "node": ">=0.6" } }, - "node_modules/serialised-error": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", - "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", - "dev": true, - "dependencies": { - "object-hash": "^1.1.2", - "stack-trace": "0.0.9", - "uuid": "^3.0.0" - } - }, - "node_modules/serialised-error/node_modules/stack-trace": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -9468,6 +10164,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/socket.io": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", @@ -9505,6 +10212,21 @@ "node": ">=10.0.0" } }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "optional": true, + "peer": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/solr-client": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/solr-client/-/solr-client-0.9.0.tgz", @@ -9626,21 +10348,6 @@ "stubs": "^3.0.0" } }, - "node_modules/stream-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", - "integrity": "sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==", - "dev": true, - "dependencies": { - "bluebird": "^2.6.2" - } - }, - "node_modules/stream-length/node_modules/bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", - "dev": true - }, "node_modules/stream-shift": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.2.tgz", @@ -9952,12 +10659,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/teleport-javascript": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", - "integrity": "sha512-j1llvWVFyEn/6XIFDfX5LAU43DXe0GCt3NfXDwJ8XpRRMkS+i50SAkonAONBy+vxwPFBd50MFU8a2uj8R/ccLg==", - "dev": true - }, "node_modules/terser": { "version": "5.26.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", @@ -10415,15 +11116,6 @@ "node": ">=8" } }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -10478,16 +11170,6 @@ "querystring": "0.2.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/url-pattern": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/url-pattern/-/url-pattern-1.0.3.tgz", @@ -10535,18 +11217,6 @@ "uuid": "bin/uuid" } }, - "node_modules/uvm": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.1.1.tgz", - "integrity": "sha512-BZ5w8adTpNNr+zczOBRpaX/hH8UPKAf7fmCnidrcsqt3bn8KT9bDIfuS7hgRU9RXgiN01su2pwysBONY6w8W5w==", - "dev": true, - "dependencies": { - "flatted": "3.2.6" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", diff --git a/package.json b/package.json index 0c495bdc8e..24ca49229d 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "systemjs": "6.15.1", "ts-node": "^10.9.2", "tus-node-server": "^0.9.0", -"typescript": "5.4", + "typescript": "5.4", "typescript-json-schema": "^0.63.0", "typescript-require": "~0.3.0", "url-pattern": "^1.0.3", @@ -83,7 +83,9 @@ "debug": "node debug app.js", "start": "node app.js", "test:mocha": "docker compose -f ./support/integration-testing/docker-compose.mocha.yml up --abort-on-container-exit --exit-code-from redboxportal", - "test:postman": "docker compose -f ./support/integration-testing/docker-compose.newman.yml up --abort-on-container-exit --exit-code-from redboxportal", + "test:mocha:clean": "docker compose -f ./support/integration-testing/docker-compose.mocha.yml down", + "test:bruno": "docker compose -f ./support/integration-testing/docker-compose.bruno.yml up --abort-on-container-exit --exit-code-from bruno", + "test:bruno:clean": "docker compose -f ./support/integration-testing/docker-compose.bruno.yml down", "test:angular": "./support/unit-testing/angular/testDevAngular.sh", "doc-ng2": "npm -g install @compodoc/compodoc && npm -g install ejs-cli aglio && compodoc -p angular/tsconfig.json -d support/docs/generated/ng2 -n \"ReDBox Portal - NG2 Apps\" --theme postmark --includes support/docs && ejs-cli views/default/default/apidocsapib.ejs -O '{\"portal\":\"rdmp\",\"branding\":\"default\",\"baseUrl\":\"https://demo.redboxresearchdata.com.au\"}' > apidocs.apib && aglio -i apidocs.apib -o rest-api.html && mv rest-api.html support/docs/generated/ng2/additional-documentation/", "compile:sails": "npm install && ./node_modules/.bin/tsc --project tsconfig.json", @@ -91,6 +93,7 @@ "compile:ng-legacy": "./support/development/compileDevAngularLegacy.sh", "compile:ng": "npm run compile:ng-apps && npm run compile:ng-legacy", "dev:run": "docker compose -f ./support/development/docker-compose.yml up", + "dev:run:clean": "docker compose -f ./support/development/docker-compose.yml down", "dev:all": "npm run compile:sails && npm run compile:ng && npm run dev:run", "webpack": "NODE_ENV=docker WEBPACK_CSS_MINI=true node support/build/wrapper-webpack.js", "dev:prepare": "./support/development/prepareLocalDev.sh" @@ -112,7 +115,6 @@ "istanbul": "^0.4.5", "mocha": "^10.4.0", "mocha-junit-reporter": "^2.2.1", - "newman": "^6.1.2", "supertest": "^7.0.0", "uglify-es": "^3.3.10" }, diff --git a/support/development/prepareLocalDev.sh b/support/development/prepareLocalDev.sh index 36747ab2a8..14fafe1273 100644 --- a/support/development/prepareLocalDev.sh +++ b/support/development/prepareLocalDev.sh @@ -10,17 +10,17 @@ function show_step(){ show_step 'Prepare local development - remove existing data and create directories' # remove existing code coverage, temp, and dev data -sudo find . -name '.nyc_output' -type d -prune -not -path "*/node_modules/*" -exec rm -r '{}' '+' +sudo find . -name '.nyc_*' -type d -prune -not -path "*/node_modules/*" -exec rm -r '{}' '+' sudo find . -name 'coverage' -type d -prune -not -path "*/node_modules/*" -exec rm -r '{}' '+' sudo find . -name '.tmp' -type d -prune -not -path "*/node_modules/*" -exec rm -r '{}' '+' sudo rm -r support/development/.dev || true sudo rm -r support/development/devdata || true # ensure folders are created so that local dev can access them -mkdir -p support/integration-testing/.tmp/attachments/staging sudo chmod -R 777 support/integration-testing - -mkdir -p .tmp/junit +mkdir -p .tmp/junit/backend-bruno +mkdir -p .tmp/junit/backend-mocha +mkdir -p .tmp/attachments/staging sudo chmod -R 777 .tmp mkdir -p support/development/.dev diff --git a/support/integration-testing/docker-compose.newman.yml b/support/integration-testing/docker-compose.bruno.yml similarity index 61% rename from support/integration-testing/docker-compose.newman.yml rename to support/integration-testing/docker-compose.bruno.yml index c12ac03d0f..08af40c7e4 100755 --- a/support/integration-testing/docker-compose.newman.yml +++ b/support/integration-testing/docker-compose.bruno.yml @@ -2,6 +2,28 @@ version: '3.1' networks: main: services: + bruno: + image: node:20.13.1-buster + volumes: + - "../..:/opt/redbox-portal" + - "../../.tmp/attachments:/attachments" + working_dir: /tests + depends_on: + redboxportal: + condition: service_healthy + networks: + main: + aliases: + - bruno + entrypoint: >- + /bin/bash -c "cd /opt/redbox-portal/test/bruno && + npm install -g @usebruno/cli && + npm install && + bru run + --env int-test + --format junit + --output /opt/redbox-portal/.tmp/junit/backend-bruno/backend-bruno.xml + --bail" redboxportal: image: qcifengineering/redbox-portal:develop ports: @@ -9,8 +31,13 @@ services: # Debugging port # - "9876:9876" volumes: - - "../../:/opt/redbox-portal" - - "./.tmp/attachments:/attachments" + - "../..:/opt/redbox-portal" + - "../../.tmp/attachments:/attachments" + healthcheck: + test: ["CMD-SHELL", "curl http://localhost:1500"] + interval: 5s + timeout: 5s + retries: 10 depends_on: keycloak: condition: service_healthy @@ -28,18 +55,20 @@ services: networks: main: aliases: - - rbportal + - redboxportal # add 'node --inspect=0.0.0.0:9876' to entrypoint for debugging entrypoint: >- /bin/bash -c "cd /opt/redbox-portal && - npm i nyc -g && - npm i newman --legacy-peer-deps && - nyc --no-clean - --report-dir coverage/newman --reporter=lcov - --exclude-after-remap=false - node test/postman/runNewmanTests.js" + npm install -g nyc && + npm install && + nyc + --no-clean + --report-dir coverage/bruno + --reporter=lcov + --exclude-after-remap=false + node app.js" mongodb: - image: mvertes/alpine-mongo:latest + image: mongo:latest networks: main: aliases: diff --git a/support/integration-testing/docker-compose.mocha.yml b/support/integration-testing/docker-compose.mocha.yml index a086cfeb65..0c567a556c 100755 --- a/support/integration-testing/docker-compose.mocha.yml +++ b/support/integration-testing/docker-compose.mocha.yml @@ -10,7 +10,7 @@ services: # - "9876:9876" volumes: - "../../:/opt/redbox-portal" - - "./.tmp/attachments:/attachments" + - "../../.tmp/attachments:/attachments" expose: - "1500" environment: @@ -38,12 +38,18 @@ services: entrypoint: >- /bin/bash -c "cd /opt/redbox-portal && npm i nyc -g && - nyc --no-clean - --report-dir coverage/mocha --reporter=lcov + npm i && + nyc + --no-clean + --report-dir coverage/mocha + --reporter=lcov --exclude-after-remap=false - node ./node_modules/mocha/bin/mocha --exit test/bootstrap.test.js test/unit/**/*.test.js" + node + ./node_modules/mocha/bin/mocha + --exit test/bootstrap.test.js + test/unit/**/*.test.js" mongodb: - image: mvertes/alpine-mongo:latest + image: mongo:latest networks: main: aliases: diff --git a/support/integration-testing/docker-compose.yml b/support/integration-testing/docker-compose.yml index 9ea75b0f8b..e7212a6094 100644 --- a/support/integration-testing/docker-compose.yml +++ b/support/integration-testing/docker-compose.yml @@ -8,7 +8,7 @@ services: - "1500:1500" volumes: - "../../:/opt/redbox-portal" - - "./.tmp/attachments:/attachments" + - "../../.tmp/attachments:/attachments" expose: - "1500" environment: diff --git a/support/integration-testing/keycloakdb/data/h2/keycloakdb.lock.db b/support/integration-testing/keycloakdb/data/h2/keycloakdb.lock.db deleted file mode 100644 index f4ab6edea0..0000000000 --- a/support/integration-testing/keycloakdb/data/h2/keycloakdb.lock.db +++ /dev/null @@ -1,6 +0,0 @@ -#FileLock -#Sat Apr 16 01:37:10 GMT 2022 -server=172.20.0.3\:43051 -hostName=9c0c1f8df594 -method=file -id=18030044e3507416a57390c7ce55cb38aa7836a1f26 diff --git a/support/integration-testing/keycloakdb/data/h2/keycloakdb.mv.db b/support/integration-testing/keycloakdb/data/h2/keycloakdb.mv.db index 7e353ae4fbcddfc77c30a121c25815e5607424b3..31b33e0e240a614ab70ee643d7d56ba86465ed74 100644 GIT binary patch delta 2024 zcmbtVO>7%Q6rNe{u03NXv6DdDv_gwYi`^{o?#6#LNJ%OpKoutCzyXR<|E!x3H#Uxw zrYcZF-G(Fwl5Wz0p4v*NAQfoZ2#X5{Aw&_V5X3D~1p-chL_k%ksDRnO##HSgbl0Qz z_RV|q#`C`KO{Ma1h5o9r%2XXyw#rrcst0&eM6qLL(z zs1xNxDk>IJd)3iIS}YX`Dc_J~fexDUmKUo>j$hwKO_Z7)dCSw%Gk3 z!T>O#e0XG&Y$kfkO}V=YIguGg&-FbsC027Q(WxXpmMPf-WA=B_jZ2FvAQA`~jA z*>qu|SSXcK`Gg#iq|n%?S_2t>4c-S}-P&JR{#vgRPT4!jz z)&8`6$@(D%Z)+P_eu`}oUNP4_VlD%wEC~R7i{H4w-#SQlst91x za<=LPXf>DI@2&8tmfGc-f!eR4Q3QrVcG&_D8>+aTqck=ec-hQ()XHf>1=5@>Y`O$u zRC58~xbClgJdcjS`{@Ta+iVzl->fO8zcHk_-hFFA1k(z-$d-vW9}xK5#B*|J%C?;6UPPYZ_5vjtBUzJy zrU+>h@MAnZRK7J=J9pmO3$?GJOFolck{Xs3TBV;h945Vgc)!&4#N8gZHK)X~3OU<} z|8WHTo5|e!-k*tZ8TqYgSq*0;?Zw0va=?T4SVkqR(wHATc+zp^o^NaKhA_|A{;{+y zk&k3NJC{0oOyC1`y`YZKVlJ#GhO!KJPPI!0idK+wo?f%OC_r zq)t*VMUwfzXSqig_}fe}JDk6-@UEKyZlXH59#q@usAO9l--Ec0;2ywSn>VE6;=GOI z9>6Z@NbUigq9d8gx1Tg5-$kW~WS&S@xHz(*nyM`xM-GO2$n_WCZCtmIYpOa9c8oJ% zjF%XzQ?H)q-2a|N)AO{d9L_}1Tb<&V53m))QV1B7ndVZcld-^|lhh{G#BMl7pu8=i zD_qqG?K#D(N(?T{S(X*qARJMyBz{&~ES7Cr-`vtFAs@@gTlIFD>L&3NaK20zuHq6v zg2u1m9e_u4@;cTUR%Go8U|BhtvQ}D3cFO*d=D)@p9B#^wrZ6p>=cOHzAAV|YMekgC zK{mFHQs3aSVD~*~cr}^q8Zv5SDPxT(8MY^$lBpT&6*KSKF(xP0S}7Wz!JoKTe%dSd z7KSqN>?~R><=F`{Xw;n14T{#Ae#2tSYqZ3~FXat_Y` z+@~iNa0Cc?V}%fPQv5W8_NMmCn!sdk32Wux514)`>z{o~s=gcaVC~nFzJ8dGAj<5= z>PWfUD2&N&l)2CFF&%m?ng{chbiSLuZHw;Z^_A%(yMdMQ7Y_Chy}kdiR_sex&YOW` zm_~fb$U)h$h&zDO=|x=N=KQ?r$kKPHDm>&hboLHb8D>Lu59moWc0?_!x#5joV59xd z)XIi?Xj|2NTuoMXor-7V3friW?mgULuDep;GW)WTk&Of4KDqA~w9UK6foq|T>*2bB z-zRKdmpTEfb*HgPb$M!%vDcOqrt$mBndeG4WO5KXX|j761SM diff --git a/support/integration-testing/keycloakdb/data/h2/keycloakdb.trace.db b/support/integration-testing/keycloakdb/data/h2/keycloakdb.trace.db index d29d9d224b..1c3d348971 100644 --- a/support/integration-testing/keycloakdb/data/h2/keycloakdb.trace.db +++ b/support/integration-testing/keycloakdb/data/h2/keycloakdb.trace.db @@ -470,3 +470,768 @@ org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic c at java.base/java.lang.reflect.Method.invoke(Method.java:566) at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:60) at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31) +2024-05-22 04:03:02 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 04:09:59 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:32:34 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:34:07 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:36:15 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:37:52 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:38:51 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:40:15 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:215) + at io.quarkus.runtime.Quarkus.run(Quarkus.java:67) + at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:86) + at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:34) + at picocli.CommandLine.executeUserObject(CommandLine.java:1939) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) + at picocli.CommandLine.execute(CommandLine.java:2078) + at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:84) + at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:77) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:60) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31) +2024-05-22 06:42:35 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:44:55 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:215) + at io.quarkus.runtime.Quarkus.run(Quarkus.java:67) + at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:86) + at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:34) + at picocli.CommandLine.executeUserObject(CommandLine.java:1939) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) + at picocli.CommandLine.execute(CommandLine.java:2078) + at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:84) + at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:77) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:60) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31) +2024-05-22 06:48:29 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:215) + at io.quarkus.runtime.Quarkus.run(Quarkus.java:67) + at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:86) + at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:34) + at picocli.CommandLine.executeUserObject(CommandLine.java:1939) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) + at picocli.CommandLine.execute(CommandLine.java:2078) + at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:84) + at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:77) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:60) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31) +2024-05-22 06:52:18 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:55:44 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:215) + at io.quarkus.runtime.Quarkus.run(Quarkus.java:67) + at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:86) + at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:34) + at picocli.CommandLine.executeUserObject(CommandLine.java:1939) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) + at picocli.CommandLine.execute(CommandLine.java:2078) + at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:84) + at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:77) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:60) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31) +2024-05-22 06:58:49 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:58:49 jdbc[4]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 06:58:49 jdbc[5]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 07:00:00 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:215) + at io.quarkus.runtime.Quarkus.run(Quarkus.java:67) + at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:86) + at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:34) + at picocli.CommandLine.executeUserObject(CommandLine.java:1939) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) + at picocli.CommandLine.execute(CommandLine.java:2078) + at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:84) + at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:77) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:60) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31) +2024-05-22 07:06:02 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 07:08:19 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:215) + at io.quarkus.runtime.Quarkus.run(Quarkus.java:67) + at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:86) + at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:34) + at picocli.CommandLine.executeUserObject(CommandLine.java:1939) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) + at picocli.CommandLine.execute(CommandLine.java:2078) + at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:84) + at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:77) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:566) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:60) + at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31) +2024-05-22 07:11:46 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2024-05-22 07:21:43 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) diff --git a/test/bruno/1 - REST API/1 - Record Management/Add attachment to Datarecord.bru b/test/bruno/1 - REST API/1 - Record Management/Add attachment to Datarecord.bru new file mode 100644 index 0000000000..41bda5cea4 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Add attachment to Datarecord.bru @@ -0,0 +1,39 @@ +meta { + name: Add attachment to Datarecord + type: http + seq: 27 +} + +post { + url: {{host}}/default/rdmp/api/records/datastreams/{{attDataRecordOid}} + body: multipartForm + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~Content-Type: application/json +} + +body:multipart-form { + attachmentFields: @file(attachment.png) + ~dataLocations: +} + +assert { + res.body.message.fileIds.length: eq 1 +} + +script:post-response { + let jsonData = res.getBody(); + console.log(jsonData) + bru.setVar("attDataRecordStreamId", jsonData.message.fileIds[0].fileId) +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Create Datarecord for Attachments.bru b/test/bruno/1 - REST API/1 - Record Management/Create Datarecord for Attachments.bru new file mode 100644 index 0000000000..95258f0a40 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Create Datarecord for Attachments.bru @@ -0,0 +1,127 @@ +meta { + name: Create Datarecord for Attachments + type: http + seq: 26 +} + +post { + url: {{host}}/default/rdmp/api/records/metadata/dataRecord + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "parameterRetriever": "", + "rdmpGetter": "", + "": {}, + "rdmp": { + "oid": "{{dmpOid}}", + "title": "Andrew's integration test - Updated from form AJAX call" + }, + "aim_project_name": "Andrew's integration test - Updated from form AJAX call", + "foaf:fundedBy_foaf:Agent": [ + "" + ], + "dc:coverage_vivo:DateTimeInterval_vivo:end": "", + "foaf:fundedBy_vivo:Grant": [ + "" + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator", + "orcid": null + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "username": "", + "role": "Contributors", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "contributor_supervisor": { + "text_full_name": null, + "full_name_honorific": "", + "email": null, + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor", + "orcid": null + }, + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "redbox:retentionPeriod_dc:date": "1year", + "redbox:retentionPeriod_dc:date_skos:note": "", + "disposalDate": "", + "related_publications": [ + { + "related_url": "", + "related_title": "", + "related_notes": "" + } + ], + "dataLocations": [], + "software_equipment": "" + } +} + +tests { + + test("Status code is 201", function () { + expect(res.getStatus()).to.equal(201); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("attDataRecordOid", jsonData.oid); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Create RDMP For Deletion.bru b/test/bruno/1 - REST API/1 - Record Management/Create RDMP For Deletion.bru new file mode 100644 index 0000000000..26d36b042a --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Create RDMP For Deletion.bru @@ -0,0 +1,76 @@ +meta { + name: Create RDMP For Deletion + type: http + seq: 20 +} + +post { + url: {{host}}/default/rdmp/api/records/metadata/rdmp + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "title": "Andrew's integration test", + "dc:identifier": "http://purl.org/au-research/grants/nhmrc/566728", + "description": "Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "vivo:Dataset_redbox:DataCollectionMethodology": "The data collection methodology", + "vivo:Dataset_dc_format": "xls", + "vivo:Dataset_dc:location_rdf:PlainLiteral": "eResearch Store network drive", + "vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral": "shared university network drive (e.g. G, H, etc)", + "vivo:Dataset_dc:extent": "100GB - 2TB", + "redbox:retentionPeriod_dc:date": "1year", + "dc:rightsHolder_dc:name": "myUni", + "dc:accessRights": "permission from the data manager", + "authorization": [] + } +} + +tests { + + test("Status code is 201", function () { + expect(res.getStatus()).to.equal(201); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("dmpOidToDelete", jsonData.oid); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Create RDMP.bru b/test/bruno/1 - REST API/1 - Record Management/Create RDMP.bru new file mode 100644 index 0000000000..65fb310def --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Create RDMP.bru @@ -0,0 +1,81 @@ +meta { + name: Create RDMP + type: http + seq: 1 +} + +post { + url: {{host}}/default/rdmp/api/records/metadata/rdmp + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "title": "Andrew's integration test", + "dc:identifier": "http://purl.org/au-research/grants/nhmrc/566728", + "description": "Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "vivo:Dataset_redbox:DataCollectionMethodology": "The data collection methodology", + "vivo:Dataset_dc_format": "xls", + "vivo:Dataset_dc:location_rdf:PlainLiteral": "eResearch Store network drive", + "vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral": "shared university network drive (e.g. G, H, etc)", + "vivo:Dataset_dc:extent": "100GB - 2TB", + "redbox:retentionPeriod_dc:date": "1year", + "dc:rightsHolder_dc:name": "myUni", + "dc:accessRights": "permission from the data manager", + "authorization": [] + } +} + +tests { + + test("Status code is 201", function () { + expect(res.getStatus()).to.equal(201); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("dmpOid",jsonData.oid); + + var randomNumber = Math.floor(Math.random() * (1000 - 0 + 1) + 0) + bru.setEnvVar("randomNumber",randomNumber); + bru.setEnvVar("researcherUsername", "researcheruser" + randomNumber); + bru.setEnvVar("researcherEmail", "researcheruser" + randomNumber + "@email.edu.au"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Create Temporary Datapub.bru b/test/bruno/1 - REST API/1 - Record Management/Create Temporary Datapub.bru new file mode 100644 index 0000000000..2f2f15ad36 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Create Temporary Datapub.bru @@ -0,0 +1,215 @@ +meta { + name: Create Temporary Datapub + type: http + seq: 30 +} + +post { + url: {{host}}/default/rdmp/api/records/metadata/dataPublication + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "parameterRetriever": "", + "dataRecordGetter": "", + "": {}, + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "foaf:fundedBy_foaf:Agent": [ + {} + ], + "foaf:fundedBy_vivo:Grant": [ + {} + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "startDate": "", + "endDate": "", + "timePeriod": "", + "geolocations": [ + "" + ], + "geospatial": {}, + "accessRightsToggle": "", + "dataLocations": [ + { + "type": "attachment", + "location": "b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "mimeType": "image/png", + "name": "Screen Shot 2018-11-26 at 3.39.48 pm.png", + "fileId": "d3de61376e5bc93c814607ee604ebac5", + "uploadUrl": "{{host}}/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "selected": true + } + ], + "dataLicensingAccess_manager": "Prof Paul Gleeson", + "dc:accessRights": "Open", + "accessRights_url": "", + "related_publications": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_websites": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_metadata": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_data": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_services": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "license_identifier": "", + "license_notes": "", + "license_other_url": "", + "license_statement": "Copyright ReDBox Research Data 2018", + "license_statement_url": "", + "citation_doi": "", + "requestIdentifier": [], + "citation_title": "A Data Record", + "creators": [ + { + "text_full_name": "Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "role": "Chief Investigator", + "username": "", + "orcid": "", + "family_name": "Zweinstein", + "given_name": "Alberto" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Data manager", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Contributors", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": null, + "email": null, + "role": "Supervisor", + "username": "", + "orcid": "", + "family_name": "", + "given_name": "" + } + ], + "citation_publisher": "ReDBox Research Data", + "citation_url": "", + "citation_publication_date": "", + "citation_generated": "Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}", + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "Prof", + "family_name": "Paul Gleeson", + "honorific": "", + "full_name_family_name_first": "Paul Gleeson, Prof", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_supervisor": { + "text_full_name": "", + "full_name_honorific": "", + "email": "", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor" + }, + "embargoByDate": "", + "embargoUntil": null, + "embargoNote": "", + "reviewerNote": "", + "ckanLocation": "" + } +} + +tests { + + test("Status code is 201", function () { + expect(res.getStatus()).to.equal(201); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("tempDataPubOid", jsonData.oid); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Create record type Existing Locations.bru b/test/bruno/1 - REST API/1 - Record Management/Create record type Existing Locations.bru new file mode 100644 index 0000000000..01516adc01 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Create record type Existing Locations.bru @@ -0,0 +1,48 @@ +meta { + name: Create record type Existing Locations + type: http + seq: 15 +} + +post { + url: {{host}}/default/rdmp/api/records/metadata/existing-locations + body: json + auth: none +} + +headers { + Authorization: Bearer {{token}} +} + +body:json { + { + "authorization": { + "edit": ["admin", "userExistingLocationsTest1"], + "view": ["admin", "userExistingLocationsTest1"], + "editPending": [], + "viewPending":["userExistingLocationsTest2"] + }, + "metadata": {"rdmpOid":"{{dmpOid}}"} + + } +} + +tests { + test("Status code is 201", function () { + + expect(res.getStatus()).to.equal(201); + + }); + + + + test("Test oid exists", function () { + + var jsonData = res.getBody(); + + expect(jsonData).to.have.property('workspaceOid'); + + bru.setVar("existingLocationsOid", jsonData.workspaceOid); + + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Delete Record Again.bru b/test/bruno/1 - REST API/1 - Record Management/Delete Record Again.bru new file mode 100644 index 0000000000..9da2887caf --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Delete Record Again.bru @@ -0,0 +1,27 @@ +meta { + name: Delete Record Again + type: http + seq: 24 +} + +delete { + url: {{host}}/default/rdmp/api/records/metadata/{{dmpOidToDelete}} + body: none + auth: bearer +} + +auth:bearer { + token: {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Success is set and is true", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('success'); + expect(jsonData.success).to.eql(true); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Delete Record.bru b/test/bruno/1 - REST API/1 - Record Management/Delete Record.bru new file mode 100644 index 0000000000..f76cd19709 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Delete Record.bru @@ -0,0 +1,27 @@ +meta { + name: Delete Record + type: http + seq: 21 +} + +delete { + url: {{host}}/default/rdmp/api/records/metadata/{{dmpOidToDelete}} + body: none + auth: bearer +} + +auth:bearer { + token: {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Success is set and is true", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('success'); + expect(jsonData.success).to.eql(true); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Destroy Deleted Record.bru b/test/bruno/1 - REST API/1 - Record Management/Destroy Deleted Record.bru new file mode 100644 index 0000000000..039f617dee --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Destroy Deleted Record.bru @@ -0,0 +1,22 @@ +meta { + name: Destroy Deleted Record + type: http + seq: 25 +} + +delete { + url: {{host}}/default/rdmp/api/deletedrecords/{{dmpOidToDelete}} + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Export RDMP Records.bru b/test/bruno/1 - REST API/1 - Record Management/Export RDMP Records.bru new file mode 100644 index 0000000000..2acc689942 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Export RDMP Records.bru @@ -0,0 +1,40 @@ +meta { + name: Export RDMP Records + type: http + seq: 7 +} + +get { + url: {{host}}/default/rdmp/api/export/record/download/json?before=&after=&recType=rdmp + body: none + auth: none +} + +query { + before: + after: + recType: rdmp +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("There is more than 1 RDMP record in the records", function () { + var jsonData = res.getBody(); + expect(jsonData.records.length).to.be.greaterThan(0); + }); + + test("Content-Disposition is present and valid", function () { + console.log(res.getHeaders()) + expect(res.getHeader("content-disposition")).to.not.be.undefined; + expect(res.getHeader("content-disposition")).to.equal('attachment; filename="Plan - Exported Records.json"'); + }); + +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Get Attachment for Datarecord.bru b/test/bruno/1 - REST API/1 - Record Management/Get Attachment for Datarecord.bru new file mode 100644 index 0000000000..36192fd53d --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Get Attachment for Datarecord.bru @@ -0,0 +1,29 @@ +meta { + name: Get Attachment for Datarecord + type: http + seq: 29 +} + +get { + url: {{host}}/default/rdmp/api/records/datastreams/{{attDataRecordOid}}/{{attDataRecordStreamId}} + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + const _ = require('lodash') + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Body has attachment content", function () { + let obj = res.getBody(); + // TODO: It's actually not 28398 bytes but I think bruno garbles it in res.getBody + expect(_.size(res.getBody())).to.eql(28398); + expect(res.headers['content-type']).to.eql('image/png'); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata - Updated Test.bru b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata - Updated Test.bru new file mode 100644 index 0000000000..5d6da5c75c --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata - Updated Test.bru @@ -0,0 +1,27 @@ +meta { + name: Get RDMP-s Metadata - Updated Test + type: http + seq: 8 +} + +get { + url: {{host}}/default/rdmp/api/records/metadata/{{dmpOid}} + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Title is correct", function () { + var jsonData = res.getBody(); + expect(jsonData.title).to.eql("Andrew's integration test - Updated"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata.bru b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata.bru new file mode 100644 index 0000000000..017cb7b548 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Metadata.bru @@ -0,0 +1,27 @@ +meta { + name: Get RDMP-s Metadata + type: http + seq: 2 +} + +get { + url: {{host}}/default/rdmp/api/records/metadata/{{dmpOid}} + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Title is correct", function () { + var jsonData = res.getBody(); + expect(jsonData.title).to.eql("Andrew's integration test"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s ObjectMetadata.bru b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s ObjectMetadata.bru new file mode 100644 index 0000000000..e209571366 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s ObjectMetadata.bru @@ -0,0 +1,29 @@ +meta { + name: Get RDMP-s ObjectMetadata + type: http + seq: 3 +} + +get { + url: {{host}}/default/rdmp/api/records/objectmetadata/{{dmpOid}} + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Type and Form is correct", function () { + var jsonData = res.getBody(); + expect(jsonData.type).to.eql("rdmp"); + expect(jsonData.form).to.eql("default-1.0-draft"); + bru.setEnvVar("brandId", jsonData.brandId); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit with Date filters.bru b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit with Date filters.bru new file mode 100644 index 0000000000..6ae3f6ce5f --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit with Date filters.bru @@ -0,0 +1,34 @@ +meta { + name: Get RDMP-s Record Audit with Date filters + type: http + seq: 10 +} + +get { + url: {{host}}/default/rdmp/api/records/audit/{{dmpOid}}?dateFrom=2023&dateTo=2021 + body: none + auth: none +} + +query { + dateFrom: 2023 + dateTo: 2021 +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200) + }); + + test("Zero items found", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('summary') + .and.to.have.property('numFound') + .and.equal(0) + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit.bru b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit.bru new file mode 100644 index 0000000000..5f63909f53 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Get RDMP-s Record Audit.bru @@ -0,0 +1,36 @@ +meta { + name: Get RDMP-s Record Audit + type: http + seq: 9 +} + +get { + url: {{host}}/default/rdmp/api/records/audit/{{dmpOid}} + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.eql(200) + }); + + test("Number of found items is returned", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('summary') + .and.to.have.property('numFound') + .and.equal(2) + }); + + test("Data is returned", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('records') + .and.to.have.property(0) + .and.to.have.property('redboxOid') + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Give role edit permissions to RDMP.bru b/test/bruno/1 - REST API/1 - Record Management/Give role edit permissions to RDMP.bru new file mode 100644 index 0000000000..f158b45735 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Give role edit permissions to RDMP.bru @@ -0,0 +1,35 @@ +meta { + name: Give role edit permissions to RDMP + type: http + seq: 13 +} + +post { + url: {{host}}/default/rdmp/api/records/permissions/editRole/{{dmpOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "roles": ["Chief Investigator"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Role edit permission added", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.editRoles).to.include("Chief Investigator"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Give role view permissions to RDMP.bru b/test/bruno/1 - REST API/1 - Record Management/Give role view permissions to RDMP.bru new file mode 100644 index 0000000000..e54fcbd4f9 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Give role view permissions to RDMP.bru @@ -0,0 +1,35 @@ +meta { + name: Give role view permissions to RDMP + type: http + seq: 11 +} + +post { + url: {{host}}/default/rdmp/api/records/permissions/viewRole/{{dmpOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "roles": ["Chief Investigator"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Role view permission added", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.viewRoles).to.include("Chief Investigator"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Give user edit permissions to RDMP.bru b/test/bruno/1 - REST API/1 - Record Management/Give user edit permissions to RDMP.bru new file mode 100644 index 0000000000..bd15025c3e --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Give user edit permissions to RDMP.bru @@ -0,0 +1,35 @@ +meta { + name: Give user edit permissions to RDMP + type: http + seq: 18 +} + +post { + url: {{host}}/default/rdmp/api/records/permissions/edit/{{existingLocationsOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "users": ["user"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Edit permissions applied", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.edit).to.include("user"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Give user view permissions to Existing Locations.bru b/test/bruno/1 - REST API/1 - Record Management/Give user view permissions to Existing Locations.bru new file mode 100644 index 0000000000..bf0f97f9f3 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Give user view permissions to Existing Locations.bru @@ -0,0 +1,35 @@ +meta { + name: Give user view permissions to Existing Locations + type: http + seq: 16 +} + +post { + url: {{host}}/default/rdmp/api/records/permissions/view/{{existingLocationsOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "users": ["user"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("User view permission added", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.view).to.include("user"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/List Attachments for Datarecord.bru b/test/bruno/1 - REST API/1 - Record Management/List Attachments for Datarecord.bru new file mode 100644 index 0000000000..966d8ef7d0 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/List Attachments for Datarecord.bru @@ -0,0 +1,28 @@ +meta { + name: List Attachments for Datarecord + type: http + seq: 28 +} + +get { + url: {{host}}/default/rdmp/api/records/datastreams/{{attDataRecordOid}} + body: none + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +tests { + const _ = require('lodash') + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has attachments", function () { + var jsonData = res.getBody(); + expect(_.size(jsonData.records)).to.gt(0); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/List Deleted RDMPs.bru b/test/bruno/1 - REST API/1 - Record Management/List Deleted RDMPs.bru new file mode 100644 index 0000000000..2529e0c102 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/List Deleted RDMPs.bru @@ -0,0 +1,37 @@ +meta { + name: List Deleted RDMPs + type: http + seq: 22 +} + +get { + url: {{host}}/default/rdmp/api/deletedrecords/list?recordType=rdmp + body: none + auth: none +} + +query { + recordType: rdmp +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("There is more than 1 RDMP record in the records", function () { + var jsonData = res.getBody(); + expect(jsonData.records.length).to.be.greaterThan(0); + }); + + test("Check record has oid and metadata properties", function () { + var jsonData = res.getBody(); + expect(jsonData.records[0]).to.have.property("oid") + expect(jsonData.records[0]).to.have.property("deletedRecord") + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/List RDMPs.bru b/test/bruno/1 - REST API/1 - Record Management/List RDMPs.bru new file mode 100644 index 0000000000..91d0ff2dab --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/List RDMPs.bru @@ -0,0 +1,37 @@ +meta { + name: List RDMPs + type: http + seq: 6 +} + +get { + url: {{host}}/default/rdmp/api/records/list?recordType=rdmp + body: none + auth: none +} + +query { + recordType: rdmp +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("There is more than 1 RDMP record in the records", function () { + var jsonData = res.getBody(); + expect(jsonData.records.length).to.be.greaterThan(0); + }); + + test("Check record has oid and metadata properties", function () { + var jsonData = res.getBody(); + expect(jsonData.records[0]).to.have.property("oid") + expect(jsonData.records[0]).to.have.property("metadata") + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Remove role edit permissions to RDMP.bru b/test/bruno/1 - REST API/1 - Record Management/Remove role edit permissions to RDMP.bru new file mode 100644 index 0000000000..91a50c9b9a --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Remove role edit permissions to RDMP.bru @@ -0,0 +1,35 @@ +meta { + name: Remove role edit permissions to RDMP + type: http + seq: 14 +} + +delete { + url: {{host}}/default/rdmp/api/records/permissions/editRole/{{dmpOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "roles": ["Chief Investigator"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Role edit permission removed", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.editRoles).to.not.include("Chief Investigator"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Remove role view permissions to RDMP.bru b/test/bruno/1 - REST API/1 - Record Management/Remove role view permissions to RDMP.bru new file mode 100644 index 0000000000..cf4f870247 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Remove role view permissions to RDMP.bru @@ -0,0 +1,35 @@ +meta { + name: Remove role view permissions to RDMP + type: http + seq: 12 +} + +delete { + url: {{host}}/default/rdmp/api/records/permissions/viewRole/{{dmpOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "roles": ["Chief Investigator"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Role view permission removed", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.viewRoles).to.not.include("Chief Investigator"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Remove user edit permissions to RDMP.bru b/test/bruno/1 - REST API/1 - Record Management/Remove user edit permissions to RDMP.bru new file mode 100644 index 0000000000..fda0dc6b73 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Remove user edit permissions to RDMP.bru @@ -0,0 +1,35 @@ +meta { + name: Remove user edit permissions to RDMP + type: http + seq: 19 +} + +delete { + url: {{host}}/default/rdmp/api/records/permissions/edit/{{existingLocationsOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "users": ["user"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("User edit permission removed", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.edit).to.not.include("user"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Remove user view permissions to Existing Locations.bru b/test/bruno/1 - REST API/1 - Record Management/Remove user view permissions to Existing Locations.bru new file mode 100644 index 0000000000..13704b57c2 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Remove user view permissions to Existing Locations.bru @@ -0,0 +1,35 @@ +meta { + name: Remove user view permissions to Existing Locations + type: http + seq: 17 +} + +delete { + url: {{host}}/default/rdmp/api/records/permissions/view/{{existingLocationsOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "users": ["user"] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("User view permission removed", function () { + var jsonData = res.getBody(); + //TODO: This is because of the save trigger + expect(true).to.eql(true); + expect(jsonData.view).to.not.include("user"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Restore Deleted Record.bru b/test/bruno/1 - REST API/1 - Record Management/Restore Deleted Record.bru new file mode 100644 index 0000000000..88c119b6d2 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Restore Deleted Record.bru @@ -0,0 +1,22 @@ +meta { + name: Restore Deleted Record + type: http + seq: 23 +} + +put { + url: {{host}}/default/rdmp/api/deletedrecords/{{dmpOidToDelete}} + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Transition Workflow of Data publication.bru b/test/bruno/1 - REST API/1 - Record Management/Transition Workflow of Data publication.bru new file mode 100644 index 0000000000..3b1d643889 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Transition Workflow of Data publication.bru @@ -0,0 +1,29 @@ +meta { + name: Transition Workflow of Data publication + type: http + seq: 31 +} + +post { + url: {{host}}/default/rdmp/api/records/workflow/step/queued/{{tempDataPubOid}} + body: none + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Success is set and is equal to true", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('success'); + expect(jsonData.success).to.eql(true); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata that does not exist.bru b/test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata that does not exist.bru new file mode 100644 index 0000000000..b78f270553 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata that does not exist.bru @@ -0,0 +1,75 @@ +meta { + name: Update RDMP Metadata that does not exist + type: http + seq: 5 +} + +put { + url: {{host}}/default/rdmp/api/records/metadata/blah-blah-blah + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "title": "Andrew's integration test - Updated", + "dc:identifier": "http://purl.org/au-research/grants/nhmrc/566728", + "description": "Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "vivo:Dataset_redbox:DataCollectionMethodology": "The data collection methodology", + "vivo:Dataset_dc_format": "xls", + "vivo:Dataset_dc:location_rdf:PlainLiteral": "eResearch Store network drive", + "vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral": "shared university network drive (e.g. G, H, etc)", + "vivo:Dataset_dc:extent": "100GB - 2TB", + "redbox:retentionPeriod_dc:date": "1year", + "dc:rightsHolder_dc:name": "myUni", + "dc:accessRights": "permission from the data manager", + "authorization": [] + } +} + +tests { + test("Status code is 400", function () { + expect(res.getStatus()).to.equal(400); + }); + + test("Body has json with error", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('message'); + expect(jsonData.message).to.eql("Failed to update meta, cannot find existing record with oid: blah-blah-blah"); + }); +} diff --git a/test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata.bru b/test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata.bru new file mode 100644 index 0000000000..b2c0b4b605 --- /dev/null +++ b/test/bruno/1 - REST API/1 - Record Management/Update RDMP Metadata.bru @@ -0,0 +1,75 @@ +meta { + name: Update RDMP Metadata + type: http + seq: 4 +} + +put { + url: {{host}}/default/rdmp/api/records/metadata/{{dmpOid}} + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "title": "Andrew's integration test - Updated", + "dc:identifier": "http://purl.org/au-research/grants/nhmrc/566728", + "description": "Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "vivo:Dataset_redbox:DataCollectionMethodology": "The data collection methodology", + "vivo:Dataset_dc_format": "xls", + "vivo:Dataset_dc:location_rdf:PlainLiteral": "eResearch Store network drive", + "vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral": "shared university network drive (e.g. G, H, etc)", + "vivo:Dataset_dc:extent": "100GB - 2TB", + "redbox:retentionPeriod_dc:date": "1year", + "dc:rightsHolder_dc:name": "myUni", + "dc:accessRights": "permission from the data manager", + "authorization": [] + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test oid is equal to the requested oid value", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + expect(jsonData.oid).to.eql(bru.getEnvVar("dmpOid")); + }); +} diff --git a/test/bruno/1 - REST API/2 - User Management/Attempt to retrieve user that does not exist.bru b/test/bruno/1 - REST API/2 - User Management/Attempt to retrieve user that does not exist.bru new file mode 100644 index 0000000000..a2a5a1eff8 --- /dev/null +++ b/test/bruno/1 - REST API/2 - User Management/Attempt to retrieve user that does not exist.bru @@ -0,0 +1,49 @@ +meta { + name: Attempt to retrieve user that does not exist + type: http + seq: 3 +} + +get { + url: {{host}}/default/rdmp/api/users/get?searchBy=email&query=fake@redboxresearchdata.com.au + body: none + auth: none +} + +query { + searchBy: email + query: fake@redboxresearchdata.com.au +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 404", function () { + expect(res.getStatus()).to.equal(404); + }); + + test("Error message is correct", function () { + var jsonData = res.getBody(); + + var message = jsonData.message; + + expect(message).to.eql('No user found with given criteria'); + + + }); + + test("Details message is correct", function () { + var jsonData = res.getBody(); + + var details = jsonData.details; + + expect(details).to.eql('Searchby: email and Query: fake@redboxresearchdata.com.au'); + + + }); + + +} diff --git a/test/bruno/1 - REST API/2 - User Management/Create API Researcher User.bru b/test/bruno/1 - REST API/2 - User Management/Create API Researcher User.bru new file mode 100644 index 0000000000..e9a5d770de --- /dev/null +++ b/test/bruno/1 - REST API/2 - User Management/Create API Researcher User.bru @@ -0,0 +1,44 @@ +meta { + name: Create API Researcher User + type: http + seq: 4 +} + +put { + url: {{host}}/default/rdmp/api/users + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "username": "apiresearcher34", + "name": "researcher created via API", + "email": "apiresearcher34@redboxresearchdata.com.au", + "password": "a12345672A!", + "roles": ["Admin","Researcher","Librarian"] + } +} + +tests { + + test("Status code is 201", function () { + expect(res.getStatus()).to.equal(201); + }); + + test("Test response", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('id'); + expect(jsonData).to.have.property('username'); + expect(jsonData).to.have.property('name'); + expect(jsonData).to.have.property('email'); + expect(jsonData).to.have.property('type'); + expect(jsonData).to.have.property('lastLogin'); + bru.setEnvVar("apiUserId", jsonData.id); + }); +} diff --git a/test/bruno/1 - REST API/2 - User Management/Generate API Researcher User API Token.bru b/test/bruno/1 - REST API/2 - User Management/Generate API Researcher User API Token.bru new file mode 100644 index 0000000000..ae50b55c37 --- /dev/null +++ b/test/bruno/1 - REST API/2 - User Management/Generate API Researcher User API Token.bru @@ -0,0 +1,32 @@ +meta { + name: Generate API Researcher User API Token + type: http + seq: 6 +} + +get { + url: {{host}}/default/rdmp/api/users/token/generate?id={{apiUserId}} + body: json + auth: none +} + +query { + id: {{apiUserId}} +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test response", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('token'); + }); +} diff --git a/test/bruno/1 - REST API/2 - User Management/Get Admin User Details.bru b/test/bruno/1 - REST API/2 - User Management/Get Admin User Details.bru new file mode 100644 index 0000000000..2001fe2572 --- /dev/null +++ b/test/bruno/1 - REST API/2 - User Management/Get Admin User Details.bru @@ -0,0 +1,47 @@ +meta { + name: Get Admin User Details + type: http + seq: 2 +} + +get { + url: {{host}}/default/rdmp/api/users/get?searchBy=email&query=admin@redboxresearchdata.com.au + body: none + auth: none +} + +query { + searchBy: email + query: admin@redboxresearchdata.com.au +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Username is admin", function () { + var jsonData = res.getBody(); + + var username = jsonData.username; + + expect(username).to.eql('admin'); + + + }); + + test("email address is admin@redboxresearchdata.com.au", function () { + var jsonData = res.getBody(); + + var email = jsonData.email; + + expect(email).to.eql('admin@redboxresearchdata.com.au'); + + + }); +} diff --git a/test/bruno/1 - REST API/2 - User Management/List Users.bru b/test/bruno/1 - REST API/2 - User Management/List Users.bru new file mode 100644 index 0000000000..77c75c5b00 --- /dev/null +++ b/test/bruno/1 - REST API/2 - User Management/List Users.bru @@ -0,0 +1,34 @@ +meta { + name: List Users + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/api/users + body: none + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Number of users returned in results array equals numFound or 10", function () { + var jsonData = res.getBody(); + + var numFound = jsonData.summary.numFound; + + if(numFound < 10) { + expect(jsonData.records.length).to.eql(numFound); + } else { + expect(jsonData.records.length).to.eql(10); + } + }); +} diff --git a/test/bruno/1 - REST API/2 - User Management/Revoke API Researcher User API Token.bru b/test/bruno/1 - REST API/2 - User Management/Revoke API Researcher User API Token.bru new file mode 100644 index 0000000000..b9465745d8 --- /dev/null +++ b/test/bruno/1 - REST API/2 - User Management/Revoke API Researcher User API Token.bru @@ -0,0 +1,32 @@ +meta { + name: Revoke API Researcher User API Token + type: http + seq: 7 +} + +get { + url: {{host}}/default/rdmp/api/users/token/revoke?id={{apiUserId}} + body: json + auth: none +} + +query { + id: {{apiUserId}} +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test response", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('id'); + }); +} diff --git a/test/bruno/1 - REST API/2 - User Management/Update API Researcher User.bru b/test/bruno/1 - REST API/2 - User Management/Update API Researcher User.bru new file mode 100644 index 0000000000..58366a6858 --- /dev/null +++ b/test/bruno/1 - REST API/2 - User Management/Update API Researcher User.bru @@ -0,0 +1,42 @@ +meta { + name: Update API Researcher User + type: http + seq: 5 +} + +post { + url: {{host}}/default/rdmp/api/users + body: json + auth: none +} + +headers { + Content-Type: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "id": "{{apiUserId}}", + "name": "researcher created via API - modified", + "email": "apiresearcher@redboxresearchdata.com.au", + "password": "a12345672A!" + } +} + +tests { + + test("Status code is 201", function () { + expect(res.getStatus()).to.equal(201); + }); + + test("Test response", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('id'); + expect(jsonData).to.have.property('username'); + expect(jsonData).to.have.property('name'); + expect(jsonData).to.have.property('email'); + expect(jsonData).to.have.property('type'); + expect(jsonData).to.have.property('lastLogin'); + }); +} diff --git a/test/bruno/1 - REST API/3 - Search/Index Record.bru b/test/bruno/1 - REST API/3 - Search/Index Record.bru new file mode 100644 index 0000000000..73eabf6edb --- /dev/null +++ b/test/bruno/1 - REST API/3 - Search/Index Record.bru @@ -0,0 +1,25 @@ +meta { + name: Index Record + type: http + seq: 2 +} + +get { + url: {{host}}/default/rdmp/api/search/index?oid={{dmpOid}} + body: none + auth: none +} + +query { + oid: {{dmpOid}} +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); +} diff --git a/test/bruno/1 - REST API/3 - Search/Remove All.bru b/test/bruno/1 - REST API/3 - Search/Remove All.bru new file mode 100644 index 0000000000..d12fc137d6 --- /dev/null +++ b/test/bruno/1 - REST API/3 - Search/Remove All.bru @@ -0,0 +1,27 @@ +meta { + name: Remove All + type: http + seq: 3 +} + +get { + url: {{host}}/default/rdmp/api/search/removeAll + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has expected message", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("message"); + expect(jsonData.message).to.eql("Remove all records request added to message queue for processing") + }); +} diff --git a/test/bruno/1 - REST API/3 - Search/Search Index.bru b/test/bruno/1 - REST API/3 - Search/Search Index.bru new file mode 100644 index 0000000000..0165f638dd --- /dev/null +++ b/test/bruno/1 - REST API/3 - Search/Search Index.bru @@ -0,0 +1,30 @@ +meta { + name: Search Index + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/api/search/?searchStr=Andrew + body: none + auth: none +} + +query { + searchStr: Andrew +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has record array", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("records"); + }); +} diff --git a/test/bruno/1 - REST API/4 - Form Management/Get Form.bru b/test/bruno/1 - REST API/4 - Form Management/Get Form.bru new file mode 100644 index 0000000000..0e768effc6 --- /dev/null +++ b/test/bruno/1 - REST API/4 - Form Management/Get Form.bru @@ -0,0 +1,30 @@ +meta { + name: Get Form + type: http + seq: 2 +} + +get { + url: {{host}}/default/rdmp/api/forms/get?name=default-1.0-draft + body: none + auth: none +} + +query { + name: default-1.0-draft +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has name property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("name"); + }); +} diff --git a/test/bruno/1 - REST API/4 - Form Management/List Forms.bru b/test/bruno/1 - REST API/4 - Form Management/List Forms.bru new file mode 100644 index 0000000000..ab6b9c9566 --- /dev/null +++ b/test/bruno/1 - REST API/4 - Form Management/List Forms.bru @@ -0,0 +1,27 @@ +meta { + name: List Forms + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/api/forms + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has forms in response", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("records"); + expect(jsonData.records.length).to.be.greaterThan(0) + }); +} diff --git a/test/bruno/1 - REST API/5 - Record Type Management/Get Record Type.bru b/test/bruno/1 - REST API/5 - Record Type Management/Get Record Type.bru new file mode 100644 index 0000000000..ff01e963b9 --- /dev/null +++ b/test/bruno/1 - REST API/5 - Record Type Management/Get Record Type.bru @@ -0,0 +1,30 @@ +meta { + name: Get Record Type + type: http + seq: 2 +} + +get { + url: {{host}}/default/rdmp/api/forms/get?name=default-1.0-draft + body: none + auth: none +} + +query { + name: default-1.0-draft +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has name property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("name"); + }); +} diff --git a/test/bruno/1 - REST API/5 - Record Type Management/List Record Types.bru b/test/bruno/1 - REST API/5 - Record Type Management/List Record Types.bru new file mode 100644 index 0000000000..ddc6ca6799 --- /dev/null +++ b/test/bruno/1 - REST API/5 - Record Type Management/List Record Types.bru @@ -0,0 +1,27 @@ +meta { + name: List Record Types + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/api/forms + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has forms in response", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("records"); + expect(jsonData.records.length).to.be.greaterThan(0) + }); +} diff --git a/test/bruno/1 - REST API/6 - Administration/Refresh Cached Resources.bru b/test/bruno/1 - REST API/6 - Administration/Refresh Cached Resources.bru new file mode 100644 index 0000000000..db28110c82 --- /dev/null +++ b/test/bruno/1 - REST API/6 - Administration/Refresh Cached Resources.bru @@ -0,0 +1,22 @@ +meta { + name: Refresh Cached Resources + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/api/admin/refreshCachedResources + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} + ~: +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); +} diff --git a/test/bruno/1 - REST API/7 - App Config/Get App Config.bru b/test/bruno/1 - REST API/7 - App Config/Get App Config.bru new file mode 100644 index 0000000000..ac0c46b9c1 --- /dev/null +++ b/test/bruno/1 - REST API/7 - App Config/Get App Config.bru @@ -0,0 +1,26 @@ +meta { + name: Get App Config + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/api/appconfig/systemMessage + body: none + auth: none +} + +headers { + Authorization: Bearer {{token}} +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has enabled property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("enabled");; + }); +} diff --git a/test/bruno/1 - REST API/7 - App Config/Update App Config.bru b/test/bruno/1 - REST API/7 - App Config/Update App Config.bru new file mode 100644 index 0000000000..edae0cc0eb --- /dev/null +++ b/test/bruno/1 - REST API/7 - App Config/Update App Config.bru @@ -0,0 +1,44 @@ +meta { + name: Update App Config + type: http + seq: 2 +} + +post { + url: {{host}}/default/rdmp/api/appconfig/systemMessage + body: json + auth: none +} + +headers { + Authorization: Bearer {{token}} +} + +body:json { + { + "enabled": false, + "title": "The new title", + "message": "The new message" + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has enabled property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("enabled"); + }); + + test("Has title property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("title"); + }); + + test("Has message property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("message"); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Add librarian role to researcher user from the user management page.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Add librarian role to researcher user from the user management page.bru new file mode 100644 index 0000000000..10accb21a0 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Add librarian role to researcher user from the user management page.bru @@ -0,0 +1,68 @@ +meta { + name: Add librarian role to researcher user from the user management page + type: http + seq: 15 +} + +post { + url: {{host}}/default/rdmp/admin/users/update + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/admin/users + Connection: keep-alive +} + +body:json { + { + "userid": "{{researcherUserId}}", + "details": { + "name": "A dummy researcher", + "email": "{{researcherEmail}}", + "password": "{{researcherPassword}}", + "roles": [ + "Librarians", + "Researcher", + "Guest" + ] + } + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check response status", function () { + var jsonData = res.getBody(); + expect(jsonData.status).to.eql(true); + }); + + test("Check response message", function () { + var jsonData = res.getBody(); + expect(jsonData.message).to.eql("User updated successfully"); + }); + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data publication.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data publication.bru new file mode 100644 index 0000000000..0d2b5a49c5 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data publication.bru @@ -0,0 +1,237 @@ +meta { + name: Create data publication + type: http + seq: 28 +} + +post { + url: {{host}}/default/rdmp/recordmeta/dataPublication + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/dataPublication/edit + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "dataRecordGetter": "", + "": {}, + "dataRecord": { + "oid": "{{dataRecordOid}}", + "title": "A Data record" + }, + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "foaf:fundedBy_foaf:Agent": [ + {} + ], + "foaf:fundedBy_vivo:Grant": [ + {} + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "startDate": "", + "endDate": "", + "timePeriod": "", + "geolocations": [ + "" + ], + "geospatial": {}, + "accessRightsToggle": "", + "dataLocations": [ + { + "type": "attachment", + "location": "b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "mimeType": "image/png", + "name": "Screen Shot 2018-11-26 at 3.39.48 pm.png", + "fileId": "d3de61376e5bc93c814607ee604ebac5", + "uploadUrl": "{{host}}/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "selected": true + } + ], + "dataLicensingAccess_manager": "Prof Paul Gleeson", + "dc:accessRights": "Open", + "accessRights_url": "", + "related_publications": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_websites": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_metadata": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_data": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_services": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "license_identifier": "", + "license_notes": "", + "license_other_url": "", + "license_statement": "Copyright ReDBox Research Data 2018", + "license_statement_url": "", + "citation_doi": "", + "requestIdentifier": [], + "citation_title": "A Data Record", + "creators": [ + { + "text_full_name": "Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "role": "Chief Investigator", + "username": "", + "orcid": "", + "family_name": "Zweinstein", + "given_name": "Alberto" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Data manager", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Contributors", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": null, + "email": null, + "role": "Supervisor", + "username": "", + "orcid": "", + "family_name": "", + "given_name": "" + } + ], + "citation_publisher": "ReDBox Research Data", + "citation_url": "", + "citation_publication_date": "", + "citation_generated": "Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}", + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "Prof", + "family_name": "Paul Gleeson", + "honorific": "", + "full_name_family_name_first": "Paul Gleeson, Prof", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_supervisor": { + "text_full_name": "", + "full_name_honorific": "", + "email": "", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor" + }, + "embargoByDate": "", + "embargoUntil": null, + "embargoNote": "", + "reviewerNote": "", + "ckanLocation": "" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("dataPublicationOid", jsonData.oid); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data record via form.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data record via form.bru new file mode 100644 index 0000000000..916f615729 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create data record via form.bru @@ -0,0 +1,145 @@ +meta { + name: Create data record via form + type: http + seq: 20 +} + +post { + url: {{host}}/default/rdmp/recordmeta/dataRecord + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}{/default/rdmp/record/dataRecord/edit + + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "rdmpGetter": "", + "": {}, + "rdmp": { + "oid": "{{dmpOid}}", + "title": "Andrew's integration test - Updated from form AJAX call" + }, + "aim_project_name": "Andrew's integration test - Updated from form AJAX call", + "foaf:fundedBy_foaf:Agent": [ + "" + ], + "dc:coverage_vivo:DateTimeInterval_vivo:end": "", + "foaf:fundedBy_vivo:Grant": [ + "" + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator", + "orcid": null + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "username": "", + "role": "Contributors", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "contributor_supervisor": { + "text_full_name": null, + "full_name_honorific": "", + "email": null, + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor", + "orcid": null + }, + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "redbox:retentionPeriod_dc:date": "1year", + "redbox:retentionPeriod_dc:date_skos:note": "", + "disposalDate": "", + "related_publications": [ + { + "related_url": "", + "related_title": "", + "related_notes": "" + } + ], + "dataLocations": [], + "software_equipment": "" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("dataRecordOid", jsonData.oid); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create new researcher user.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create new researcher user.bru new file mode 100644 index 0000000000..37064f510c --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Create new researcher user.bru @@ -0,0 +1,63 @@ +meta { + name: Create new researcher user + type: http + seq: 10 +} + +post { + url: {{host}}/default/rdmp/admin/users/newUser + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/admin/users + + Connection: keep-alive +} + +body:json { + { + "username": "{{researcherUsername}}", + "details": { + "name": "A dummy researcher", + "email": "{{researcherEmail}}", + "password": "{{researcherPassword}}", + "roles": [ + "Researcher", + "Guest" + ] + } + } +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check response status", function () { + var jsonData = res.getBody(); + expect(jsonData.status).to.eql(true); + }); + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Dashboard List RDMP Records.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Dashboard List RDMP Records.bru new file mode 100644 index 0000000000..88d1f6add2 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Dashboard List RDMP Records.bru @@ -0,0 +1,53 @@ +meta { + name: Dashboard List RDMP Records + type: http + seq: 6 +} + +get { + url: {{host}}/default/rdmp/listRecords?recordType=rdmp&state=draft&sort="lastSaveDate":-1&start=0&rows=10 + body: none + auth: none +} + +query { + recordType: rdmp + state: draft + sort: "lastSaveDate":-1 + start: 0 + rows: 10 +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* + +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Number of items returned in results array equals totalItems or 10", function () { + var jsonData = res.getBody(); + + var numFound = jsonData.totalItems; + + if(numFound < 10) { + expect(jsonData.items.length).to.eql(numFound); + } else { + expect(jsonData.items.length).to.eql(10); + } + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Delete the created data record.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Delete the created data record.bru new file mode 100644 index 0000000000..a84341c3c2 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Delete the created data record.bru @@ -0,0 +1,33 @@ +meta { + name: Delete the created data record + type: http + seq: 32 +} + +delete { + url: {{host}}/default/rdmp/record/delete/{{dataRecordOid}} + body: none + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/edit/ee3a12b7a95dd42619ebe16ecd2461f9 + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Download attachment.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Download attachment.bru new file mode 100644 index 0000000000..42a129fd8b --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Download attachment.bru @@ -0,0 +1,26 @@ +meta { + name: Download attachment + type: http + seq: 24 +} + +get { + url: http:{{attachmentLocation}} + body: none + auth: none +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Export RDMP Data.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Export RDMP Data.bru new file mode 100644 index 0000000000..37ad6b8ed0 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Export RDMP Data.bru @@ -0,0 +1,70 @@ +meta { + name: Export RDMP Data + type: http + seq: 19 +} + +get { + url: {{host}}/default/rdmp/export/record/download/csv?before=&after=&recType=rdmp + body: none + auth: none +} + +query { + before: + after: + recType: rdmp +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/export + + X-Source: jsclient + Cache-Control: no-cache +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + // const parse = require('csv-parse/lib/sync'), + // parsedCSV = parse(responseBody, {relax_column_count: true}); + + // test("Correct CSV response", function () { + // // Check that we have at least 2 two (header + row) + // expect(parsedCSV).to.have.length.above(1); + + // }); + + // test("CSV contains Test record", function () { + // var found = false; + // const head = parsedCSV.shift(), + // title = head.indexOf('redboxOid'); + // parsedCSV.forEach(function(row) { + // if(row[title] == bru.getEnvVar('dmpOid')) { + // found = true; + // } + // }); + + // expect(found).to.eq(true); + + // }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/First Phase of attachment upload.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/First Phase of attachment upload.bru new file mode 100644 index 0000000000..0f8fdd1315 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/First Phase of attachment upload.bru @@ -0,0 +1,48 @@ +meta { + name: First Phase of attachment upload + type: http + seq: 21 +} + +post { + url: {{host}}/default/rdmp/record/{{dataRecordOid}}/attach + body: none + auth: none +} + +headers { + Upload-Length: 194397 + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Tus-Resumable: 1.0.0 + + Connection: keep-alive + Content-Length: 0 + Upload-Metadata: name U2NyZWVuIFNob3QgMjAxOC0xMS0yNiBhdCAyLjM0LjI2IHBtLnBuZw==,type aW1hZ2UvcG5n + Pragma: no-cache + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Accept: */* + Cache-Control: no-cache + Content-Type: application/x-www-form-urlencoded +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 201", function () { + expect(res.getStatus()).to.equal(201); + + let location = res.headers.location; + bru.setEnvVar("attachmentLocation", location ); + bru.setEnvVar("attachmentId", location.split("/")[8] ); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Generate API key for new researcher user.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Generate API key for new researcher user.bru new file mode 100644 index 0000000000..3fcea604ee --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Generate API key for new researcher user.bru @@ -0,0 +1,57 @@ +meta { + name: Generate API key for new researcher user + type: http + seq: 13 +} + +post { + url: {{host}}/default/rdmp/admin/users/genKey + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/admin/users + + Connection: keep-alive +} + +body:json { + { "userid": "{{researcherUserId}}"} +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check response status", function () { + var jsonData = res.getBody(); + expect(jsonData.status).to.eql(true); + }); + + test("Check for API Key", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('message'); + }); + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config Form - System Messages.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config Form - System Messages.bru new file mode 100644 index 0000000000..1dcfe55ff2 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config Form - System Messages.bru @@ -0,0 +1,57 @@ +meta { + name: Get App Config Form - System Messages + type: http + seq: 33 +} + +get { + url: {{host}}/default/rdmp/appconfig/form/systemMessage + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + + test("Response contains model attribute", function () { + var jsonData = res.getBody(); + expect(jsonData.model).is.not.null; + }); + + test("Response contains schema attribute", function () { + var jsonData = res.getBody(); + expect(jsonData.schema).is.not.null; + }); + + test("Response contains fieldOrder attribute", function () { + var jsonData = res.getBody(); + expect(jsonData.fieldOrder).is.not.null; + }); + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config View - System Messages.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config View - System Messages.bru new file mode 100644 index 0000000000..07cda99d24 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get App Config View - System Messages.bru @@ -0,0 +1,46 @@ +meta { + name: Get App Config View - System Messages + type: http + seq: 35 +} + +get { + url: {{host}}/default/rdmp/admin/appconfig/edit/systemMessage + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + Cookie: {{cookie}} + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + + test("HTML returned correctly sets the configKey in the app-config tag", function () { + var responseBody = res.getBody(); + expect(responseBody).to.include(''); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Consolidated.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Consolidated.bru new file mode 100644 index 0000000000..f6443f37b3 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Consolidated.bru @@ -0,0 +1,39 @@ +meta { + name: Get Dashboard Type Consolidated + type: http + seq: 5 +} + +get { + url: {{host}}/default/rdmp/dashboard/type/consolidated + body: none + auth: none +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* + +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has name property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("name"); + expect(jsonData).to.have.property("formatRules"); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Standard.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Standard.bru new file mode 100644 index 0000000000..911cc1964b --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Standard.bru @@ -0,0 +1,39 @@ +meta { + name: Get Dashboard Type Standard + type: http + seq: 3 +} + +get { + url: {{host}}/default/rdmp/dashboard/type/standard + body: none + auth: none +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* + +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has name property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("name"); + expect(jsonData).to.have.property("formatRules"); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Workspace.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Workspace.bru new file mode 100644 index 0000000000..4dfd260c10 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get Dashboard Type Workspace.bru @@ -0,0 +1,39 @@ +meta { + name: Get Dashboard Type Workspace + type: http + seq: 4 +} + +get { + url: {{host}}/default/rdmp/dashboard/type/workspace + body: none + auth: none +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* + +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has name property", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("name"); + expect(jsonData).to.have.property("formatRules"); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataPublication Workflow Steps.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataPublication Workflow Steps.bru new file mode 100644 index 0000000000..7605dbc435 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataPublication Workflow Steps.bru @@ -0,0 +1,47 @@ +meta { + name: Get DataPublication Workflow Steps + type: http + seq: 27 +} + +get { + url: {{host}}/default/rdmp/record/wfSteps/dataPublication + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + + test("Response contains 5 steps", function () { + var jsonData = res.getBody(); + expect(jsonData.length).to.eql(5); + }); + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataRecord Type info.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataRecord Type info.bru new file mode 100644 index 0000000000..2bddfbb9f4 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get DataRecord Type info.bru @@ -0,0 +1,47 @@ +meta { + name: Get DataRecord Type info + type: http + seq: 26 +} + +get { + url: {{host}}/default/rdmp/record/type/dataRecord + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Response is correct package type", function () { + var jsonData = res.getBody(); + expect(jsonData.packageType).to.eql("dataRecord"); + }); + + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get all Record Types Info.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get all Record Types Info.bru new file mode 100644 index 0000000000..5abc3adfda --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get all Record Types Info.bru @@ -0,0 +1,46 @@ +meta { + name: Get all Record Types Info + type: http + seq: 25 +} + +get { + url: {{host}}/default/rdmp/record/type/ + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Reponse is an array with more than one result", function () { + + }); + + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get edit form config for RDMP.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get edit form config for RDMP.bru new file mode 100644 index 0000000000..658f92b125 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get edit form config for RDMP.bru @@ -0,0 +1,51 @@ +meta { + name: Get edit form config for RDMP + type: http + seq: 8 +} + +get { + url: {{host}}/default/rdmp/record/form/auto/{{dmpOid}}?edit=true + body: none + auth: none +} + +query { + edit: true +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* + +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("RDMP form name is default-1.0-draft", function () { + var jsonData = res.getBody(); + + var numFound = jsonData.totalItems; + expect(jsonData.name).to.eql("default-1.0-draft"); + }); + + test("Fields array has values", function () { + var jsonData = res.getBody(); + + var numFound = jsonData.totalItems; + expect(jsonData.fields).to.be.an('array').that.is.not.empty + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles - Check researcher user no longer has librarian role.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles - Check researcher user no longer has librarian role.bru new file mode 100644 index 0000000000..51fdb388a2 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles - Check researcher user no longer has librarian role.bru @@ -0,0 +1,60 @@ +meta { + name: Get list of users and roles - Check researcher user no longer has librarian role + type: http + seq: 18 +} + +get { + url: {{host}}/default/rdmp/admin/roles/get + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/admin/roles + + X-Source: jsclient + Cache-Control: no-cache +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + + test("Check that researcher user has guest and researcher roles", function(){ + var researchUserRoles = []; + var jsonData = res.getBody(); + for(var i=0; i< jsonData.length; i++) { + var role = jsonData[i]; + for(var j=0; j< role.users.length; j++) { + if(role.users[j].id == bru.getEnvVar("researcherUserId")) { + researchUserRoles.push(role.name); + } + } + } + + expect(researchUserRoles).to.contain("Researcher"); + expect(researchUserRoles).to.contain("Guest"); + expect(researchUserRoles).to.not.contain("Librarians"); + expect(researchUserRoles).to.not.contain("Admin"); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles.bru new file mode 100644 index 0000000000..18062c3438 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get list of users and roles.bru @@ -0,0 +1,60 @@ +meta { + name: Get list of users and roles + type: http + seq: 16 +} + +get { + url: {{host}}/default/rdmp/admin/roles/get + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/admin/roles + + X-Source: jsclient + Cache-Control: no-cache +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + + test("Check that researcher user has guest, researcher and librarian roles", function(){ + var researchUserRoles = []; + var jsonData = res.getBody(); + for(var i=0; i< jsonData.length; i++) { + var role = jsonData[i]; + for(var j=0; j< role.users.length; j++) { + if(role.users[j].id == bru.getEnvVar("researcherUserId")) { + researchUserRoles.push(role.name); + } + } + } + + expect(researchUserRoles).to.contain("Researcher"); + expect(researchUserRoles).to.contain("Guest"); + expect(researchUserRoles).to.contain("Librarians"); + expect(researchUserRoles).to.not.contain("Admin"); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get users list and find new researcher user.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get users list and find new researcher user.bru new file mode 100644 index 0000000000..1c1d208a85 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get users list and find new researcher user.bru @@ -0,0 +1,63 @@ +meta { + name: Get users list and find new researcher user + type: http + seq: 12 +} + +get { + url: {{host}}/default/rdmp/admin/users/get + body: none + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/admin/users + + X-Source: jsclient + Cache-Control: no-cache +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check response is an array", function () { + var jsonData = res.getBody(); + expect(jsonData).to.be.an.instanceof(Array); + }); + + test("Check researcheruser is in the array", function () { + var jsonData = res.getBody(); + var found = false; + for(var i=0; i< jsonData.length; i++) { + if(jsonData[i].username.startsWith("researcheruser")) { + found = true; + bru.setEnvVar("researcherUserId", jsonData[i].id); + break; + } + } + expect(found).to.eq(true); + + }); + + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get view form config for RDMP.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get view form config for RDMP.bru new file mode 100644 index 0000000000..439fd5065a --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Get view form config for RDMP.bru @@ -0,0 +1,52 @@ +meta { + name: Get view form config for RDMP + type: http + seq: 7 +} + +get { + url: {{host}}/default/rdmp/record/form/auto/{{dmpOid}}?edit=false + body: none + auth: none +} + +query { + edit: false +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* + +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("RDMP form name is default-1.0-draft", function () { + var jsonData = res.getBody(); + console.log(`jsonData:`) + console.log(jsonData) + var numFound = jsonData.totalItems; + expect(jsonData.name).to.eql("default-1.0-draft"); + }); + + test("Fields array has values", function () { + var jsonData = res.getBody(); + + var numFound = jsonData.totalItems; + expect(jsonData.fields).to.be.an('array').that.is.not.empty + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/List Dashboard Types.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/List Dashboard Types.bru new file mode 100644 index 0000000000..043d108103 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/List Dashboard Types.bru @@ -0,0 +1,41 @@ +meta { + name: List Dashboard Types + type: http + seq: 2 +} + +get { + url: {{host}}/default/rdmp/dashboard/type + body: none + auth: none +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has forms in response", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("dashboardTypes"); + expect(jsonData.dashboardTypes.length).to.be.greaterThan(0) + }); + + if(res.getStatus() == 403) { + bru.setNextRequest(null); + } +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Login via Internal authentication.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Login via Internal authentication.bru new file mode 100644 index 0000000000..acc7d5f1bf --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Login via Internal authentication.bru @@ -0,0 +1,50 @@ +meta { + name: Login via Internal authentication + type: http + seq: 1 +} + +post { + url: {{host}}/user/login_local + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/user/login + Connection: keep-alive +} + +body:json { + { + "username": "admin", + "password": "rbadmin", + "branding": "default", + "portal": "rdmp" + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + let cookie = res.headers['set-cookie'] + console.log(`Cookie is ${cookie}`) + bru.setVar("cookie",cookie ); + }); + + test("Check that user returned is admin", function () { + var jsonData = res.getBody(); + expect(jsonData.user.username).to.eql("admin"); + }); + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Logout Admin User.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Logout Admin User.bru new file mode 100644 index 0000000000..1d4f336d95 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Logout Admin User.bru @@ -0,0 +1,38 @@ +meta { + name: Logout Admin User + type: http + seq: 36 +} + +get { + url: {{host}}/default/rdmp/user/logout + body: none + auth: none +} + +headers { + Connection: keep-alive + Pragma: no-cache + Cache-Control: no-cache + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 + Referer: {{host}}/default/rdmp/researcher/home + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Migrate data publication to reviewing.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Migrate data publication to reviewing.bru new file mode 100644 index 0000000000..b43e205a44 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Migrate data publication to reviewing.bru @@ -0,0 +1,240 @@ +meta { + name: Migrate data publication to reviewing + type: http + seq: 29 +} + +put { + url: {{host}}/default/rdmp/recordmeta/{{dataPublicationOid}}?targetStep=reviewing + body: json + auth: none +} + +query { + targetStep: reviewing +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/edit/49a33460c794498a56fa29ed08567cc4 + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "dataRecordGetter": "", + "": {}, + "dataRecord": { + "oid": "{{dataRecordOid}}", + "title": "A Data record" + }, + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "foaf:fundedBy_foaf:Agent": [ + {} + ], + "foaf:fundedBy_vivo:Grant": [ + {} + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "startDate": "", + "endDate": "", + "timePeriod": "", + "geolocations": [ + "" + ], + "geospatial": {}, + "accessRightsToggle": "", + "dataLocations": [ + { + "type": "attachment", + "location": "b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "mimeType": "image/png", + "name": "Screen Shot 2018-11-26 at 3.39.48 pm.png", + "fileId": "d3de61376e5bc93c814607ee604ebac5", + "uploadUrl": "{{host}}/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "selected": true + } + ], + "dataLicensingAccess_manager": "Prof Paul Gleeson", + "dc:accessRights": "Open", + "accessRights_url": "", + "related_publications": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_websites": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_metadata": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_data": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_services": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "license_identifier": "", + "license_notes": "", + "license_other_url": "", + "license_statement": "Copyright ReDBox Research Data 2018", + "license_statement_url": "", + "citation_doi": "", + "requestIdentifier": [], + "citation_title": "A Data Record", + "creators": [ + { + "text_full_name": "Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "role": "Chief Investigator", + "username": "", + "orcid": "", + "family_name": "Zweinstein", + "given_name": "Alberto" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Data manager", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Contributors", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": null, + "email": null, + "role": "Supervisor", + "username": "", + "orcid": "", + "family_name": "", + "given_name": "" + } + ], + "citation_publisher": "ReDBox Research Data", + "citation_url": "", + "citation_publication_date": "", + "citation_generated": "Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}", + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "Prof", + "family_name": "Paul Gleeson", + "honorific": "", + "full_name_family_name_first": "Paul Gleeson, Prof", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_supervisor": { + "text_full_name": "", + "full_name_honorific": "", + "email": "", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor" + }, + "embargoByDate": "", + "embargoUntil": null, + "embargoNote": "", + "reviewerNote": "", + "ckanLocation": "" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + }); + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Remove Librarian role from Researcher User.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Remove Librarian role from Researcher User.bru new file mode 100644 index 0000000000..943359b9b9 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Remove Librarian role from Researcher User.bru @@ -0,0 +1,62 @@ +meta { + name: Remove Librarian role from Researcher User + type: http + seq: 17 +} + +post { + url: {{host}}/default/rdmp/admin/roles/user + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/admin/roles + + Connection: keep-alive +} + +body:json { + { + "userid": "{{researcherUserId}}", + "roles": [ + "Researcher", + "Guest" + ] + } +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check response status", function () { + var jsonData = res.getBody(); + expect(jsonData.status).to.eql(true); + }); + + test("Check response message", function () { + var jsonData = res.getBody(); + expect(jsonData.message).to.eql("Save OK."); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Report.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Report.bru new file mode 100644 index 0000000000..02e2a988b9 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Report.bru @@ -0,0 +1,48 @@ +meta { + name: Report + type: http + seq: 31 +} + +get { + url: {{host}}/default/rdmp/admin/getReportResults?name=rdmpRecords + body: none + auth: none +} + +query { + name: rdmpRecords +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + // test("Has items array", function () { + // var jsonData = pm.response.json(); + // pm.expect(jsonData).to.have.property("items"); + // }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Save App Config - System Messages.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Save App Config - System Messages.bru new file mode 100644 index 0000000000..33ecbe3e15 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Save App Config - System Messages.bru @@ -0,0 +1,65 @@ +meta { + name: Save App Config - System Messages + type: http + seq: 34 +} + +post { + url: {{host}}/default/rdmp/appconfig/form/systemMessage + body: json + auth: none +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + X-Source: jsclient + Cache-Control: no-cache +} + +body:json { + { + "enabled": true, + "title": "The new title", + "message": "The new message" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + + test("Enabled value in response is true", function () { + var jsonData = res.getBody(); + expect(jsonData.enabled).is.true; + }); + + test("title value in response is The new title", function () { + var jsonData = res.getBody(); + expect(jsonData.title).to.eq("The new title"); + }); + + test("message value in response is The new message", function () { + var jsonData = res.getBody(); + expect(jsonData.message).to.eq("The new message"); + }); + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Save attachment on Data Record.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Save attachment on Data Record.bru new file mode 100644 index 0000000000..ed9dc4380e --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Save attachment on Data Record.bru @@ -0,0 +1,160 @@ +meta { + name: Save attachment on Data Record + type: http + seq: 23 +} + +put { + url: {{host}}/default/rdmp/recordmeta/{{dataRecordOid}} + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/edit/{{dataRecordOid}} + + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "rdmpGetter": "", + "": {}, + "rdmp": { + "oid": "{{dmpOid}}", + "title": "Andrew's integration test - Updated from form AJAX call" + }, + "aim_project_name": "Andrew's integration test - Updated from form AJAX call", + "foaf:fundedBy_foaf:Agent": [ + "" + ], + "dc:coverage_vivo:DateTimeInterval_vivo:end": "", + "foaf:fundedBy_vivo:Grant": [ + "" + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator", + "orcid": null + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Contributors", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "contributor_supervisor": { + "text_full_name": "", + "full_name_honorific": "", + "email": "", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor", + "orcid": null + }, + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "redbox:retentionPeriod_dc:date": "1year", + "redbox:retentionPeriod_dc:date_skos:note": "", + "disposalDate": "", + "related_publications": [ + { + "related_url": "", + "related_title": "", + "related_notes": "" + } + ], + "dataLocations": [ + { + "type": "attachment", + "location": "{{dataRecordOid}}/attach/{{attachmentId}}", + "mimeType": "image/png", + "name": "Screen Shot 2018-11-26 at 3.39.48 pm.png", + "fileId": "{{attachmentId}}", + "uploadUrl": "http:{{attachmentLocation}}" + } + ], + "software_equipment": "" + } +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Search Index.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Search Index.bru new file mode 100644 index 0000000000..876d55ea5b --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Search Index.bru @@ -0,0 +1,49 @@ +meta { + name: Search Index + type: http + seq: 30 +} + +get { + url: {{host}}/default/rdmp/record/search/rdmp/?searchStr=Andrew&facetNames=grant_number_name,finalKeywords,workflow_stageLabel + body: none + auth: none +} + +query { + searchStr: Andrew + facetNames: grant_number_name,finalKeywords,workflow_stageLabel +} + +headers { + Pragma: no-cache + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/json;charset=utf-8 + Accept: application/json, text/plain, */* + Connection: keep-alive + Referer: {{host}}/default/rdmp/record/search?q=Record + X-Source: jsclient + Cache-Control: no-cache +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has record array", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property("records"); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Second Phase of attachment upload.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Second Phase of attachment upload.bru new file mode 100644 index 0000000000..3556272a23 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Second Phase of attachment upload.bru @@ -0,0 +1,52 @@ +meta { + name: Second Phase of attachment upload + type: http + seq: 22 +} + +patch { + url: http:{{attachmentLocation}} + body: none + auth: none +} + +headers { + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Tus-Resumable: 1.0.0 + + Connection: keep-alive + Pragma: no-cache + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Content-Type: application/offset+octet-stream + Accept: */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/edit/b869b4fae83a1f01082465d165d868a8 + Upload-Offset: 0 +} + +script:pre-request { + const fs = require('fs'); + const path = require('path'); + + const attachmentFilename = "attachment.png"; + const attachmentPath = path.join(bru.cwd(), attachmentFilename); + const attachment = fs.readFileSync(attachmentPath, "base64"); + const attachmentLength = attachment.length; + + req.setBody(attachment); + + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 204", function () { + expect(res.getStatus()).to.equal(204); + }); +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Try to create same researcher user.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Try to create same researcher user.bru new file mode 100644 index 0000000000..27ae029110 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Try to create same researcher user.bru @@ -0,0 +1,69 @@ +meta { + name: Try to create same researcher user + type: http + seq: 11 +} + +post { + url: {{host}}/default/rdmp/admin/users/newUser + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/admin/users + + Connection: keep-alive +} + +body:json { + { + "username": "{{researcherUsername}}", + "details": { + "name": "A dummy researcher", + "email": "{{researcherEmail}}", + "password": "`{{ researcherPassword }}", + "roles": [ + "Researcher", + "Guest" + ] + } + } +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check response status", function () { + var jsonData = res.getBody(); + expect(jsonData.status).to.eql(false); + }); + + test("Check response message", function () { + var jsonData = res.getBody(); + expect(jsonData.message).to.eql("Username already exists"); + }); + + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Update RDMP Metadata using AJAX form call.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Update RDMP Metadata using AJAX form call.bru new file mode 100644 index 0000000000..14c8841e02 --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Update RDMP Metadata using AJAX form call.bru @@ -0,0 +1,89 @@ +meta { + name: Update RDMP Metadata using AJAX form call + type: http + seq: 9 +} + +put { + url: {{host}}/default/rdmp/recordmeta/{{dmpOid}} + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/edit/{{dmpOid}} + Connection: keep-alive + +} + +body:json { + { + "title": "Andrew's integration test - Updated from form AJAX call", + "dc:identifier": "http://purl.org/au-research/grants/nhmrc/566728", + "description": "Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "vivo:Dataset_redbox:DataCollectionMethodology": "The data collection methodology", + "vivo:Dataset_dc_format": "xls", + "vivo:Dataset_dc:location_rdf:PlainLiteral": "eResearch Store network drive", + "vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral": "shared university network drive (e.g. G, H, etc)", + "vivo:Dataset_dc:extent": "100GB - 2TB", + "redbox:retentionPeriod_dc:date": "1year", + "dc:rightsHolder_dc:name": "myUni", + "dc:accessRights": "permission from the data manager", + "authorization": [] + } +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + +} diff --git a/test/bruno/2 - AJAX calls/1 - Admin User Tests/Update researcher user-s password.bru b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Update researcher user-s password.bru new file mode 100644 index 0000000000..d6c4500d7b --- /dev/null +++ b/test/bruno/2 - AJAX calls/1 - Admin User Tests/Update researcher user-s password.bru @@ -0,0 +1,70 @@ +meta { + name: Update researcher user-s password + type: http + seq: 14 +} + +post { + url: {{host}}/default/rdmp/admin/users/update + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/admin/users + + Connection: keep-alive +} + +body:json { + { + "userid": "{{researcherUserId}}", + "details": { + "name": "A dummy researcher", + "email": "{{researcherEmail}}", + "password": "{{researcherPassword}}", + "roles": [ + "Researcher", + "Guest" + ] + } + } +} + + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check response status", function () { + var jsonData = res.getBody(); + expect(jsonData.status).to.eql(true); + }); + + test("Check response message", function () { + var jsonData = res.getBody(); + expect(jsonData.message).to.eql("User updated successfully"); + }); + + +} diff --git a/test/bruno/2 - AJAX calls/2 - Guest User Tests/Get view form config for RDMP - Unauthorised.bru b/test/bruno/2 - AJAX calls/2 - Guest User Tests/Get view form config for RDMP - Unauthorised.bru new file mode 100644 index 0000000000..14fae866c2 --- /dev/null +++ b/test/bruno/2 - AJAX calls/2 - Guest User Tests/Get view form config for RDMP - Unauthorised.bru @@ -0,0 +1,33 @@ +meta { + name: Get view form config for RDMP - Unauthorised + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/record/form/auto/{{dmpOid}}?edit=false + body: none + auth: none +} + +query { + edit: false +} + +headers { + Content-Type: application/json + X-Source: jsclient + Accept: application/json, text/plain, */* +} + +tests { + test("Status code is 403", function () { + expect(res.getStatus()).to.equal(403); + }); + + test("Message is access denied", function () { + var jsonData = res.getBody(); + + expect(jsonData.message).to.eql("Access Denied"); + }); +} diff --git a/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data publication.bru b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data publication.bru new file mode 100644 index 0000000000..c3ea343659 --- /dev/null +++ b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data publication.bru @@ -0,0 +1,236 @@ +meta { + name: Create data publication + type: http + seq: 4 +} + +post { + url: {{host}}/default/rdmp/recordmeta/dataPublication + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/dataPublication/edit + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "dataRecordGetter": "", + "": {}, + "dataRecord": { + "oid": "{{dataRecordOid}}", + "title": "A Data record" + }, + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "foaf:fundedBy_foaf:Agent": [ + {} + ], + "foaf:fundedBy_vivo:Grant": [ + {} + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "startDate": "", + "endDate": "", + "timePeriod": "", + "geolocations": [ + "" + ], + "geospatial": {}, + "accessRightsToggle": "", + "dataLocations": [ + { + "type": "attachment", + "location": "b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "mimeType": "image/png", + "name": "Screen Shot 2018-11-26 at 3.39.48 pm.png", + "fileId": "d3de61376e5bc93c814607ee604ebac5", + "uploadUrl": "{{host}}/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "selected": true + } + ], + "dataLicensingAccess_manager": "Prof Paul Gleeson", + "dc:accessRights": "Open", + "accessRights_url": "", + "related_publications": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_websites": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_metadata": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_data": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_services": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "license_identifier": "", + "license_notes": "", + "license_other_url": "", + "license_statement": "Copyright ReDBox Research Data 2018", + "license_statement_url": "", + "citation_doi": "", + "requestIdentifier": [], + "citation_title": "A Data Record", + "creators": [ + { + "text_full_name": "Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "role": "Chief Investigator", + "username": "", + "orcid": "", + "family_name": "Zweinstein", + "given_name": "Alberto" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Data manager", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Contributors", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": null, + "email": null, + "role": "Supervisor", + "username": "", + "orcid": "", + "family_name": "", + "given_name": "" + } + ], + "citation_publisher": "ReDBox Research Data", + "citation_url": "", + "citation_publication_date": "", + "citation_generated": "Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}", + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "Prof", + "family_name": "Paul Gleeson", + "honorific": "", + "full_name_family_name_first": "Paul Gleeson, Prof", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_supervisor": { + "text_full_name": "", + "full_name_honorific": "", + "email": "", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor" + }, + "embargoByDate": "", + "embargoUntil": null, + "embargoNote": "", + "reviewerNote": "", + "ckanLocation": "" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("dataPublicationOid", jsonData.oid); + }); +} diff --git a/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data record via form.bru b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data record via form.bru new file mode 100644 index 0000000000..74fbcd9973 --- /dev/null +++ b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Create data record via form.bru @@ -0,0 +1,144 @@ +meta { + name: Create data record via form + type: http + seq: 3 +} + +post { + url: {{host}}/default/rdmp/recordmeta/dataRecord + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}{/default/rdmp/record/dataRecord/edit + + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "rdmpGetter": "", + "": {}, + "rdmp": { + "oid": "{{dmpOid}}", + "title": "Andrew's integration test - Updated from form AJAX call" + }, + "aim_project_name": "Andrew's integration test - Updated from form AJAX call", + "foaf:fundedBy_foaf:Agent": [ + "" + ], + "dc:coverage_vivo:DateTimeInterval_vivo:end": "", + "foaf:fundedBy_vivo:Grant": [ + "" + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "title": "A Data record - researcher", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator", + "orcid": null + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributors": [ + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "username": "", + "role": "Contributors", + "orcid": "http://orcid.org/0000-0000-0000-000" + } + ], + "contributor_supervisor": { + "text_full_name": null, + "full_name_honorific": "", + "email": null, + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor", + "orcid": null + }, + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "redbox:retentionPeriod_dc:date": "1year", + "redbox:retentionPeriod_dc:date_skos:note": "", + "disposalDate": "", + "related_publications": [ + { + "related_url": "", + "related_title": "", + "related_notes": "" + } + ], + "dataLocations": [], + "software_equipment": "" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + bru.setEnvVar("dataRecordOid", jsonData.oid); + }); +} diff --git a/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcher data.bru b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcher data.bru new file mode 100644 index 0000000000..12deb65ad7 --- /dev/null +++ b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcher data.bru @@ -0,0 +1,51 @@ +meta { + name: Login via Internal authentication using researcher data + type: http + seq: 2 +} + +post { + url: {{host}}/user/login_local + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/user/login + Connection: keep-alive +} + +body:json { + { + "username": "{{researcherUsername}}", + "password": "{{researcherPassword}}", + "branding": "default", + "portal": "rdmp" + } +} + + +tests { + bru.setVar("cookie",res.getHeader("set-cookie") ); + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Check that we have logged in correctly.", function () { + var jsonData = res.getBody(); + var researcherUsername = bru.getEnvVar("researcherUsername"); + expect(jsonData.user.username).to.eql(researcherUsername); + }); + +} diff --git a/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcheruser with invalid password.bru b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcheruser with invalid password.bru new file mode 100644 index 0000000000..54b71a221f --- /dev/null +++ b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Login via Internal authentication using researcheruser with invalid password.bru @@ -0,0 +1,52 @@ +meta { + name: Login via Internal authentication using researcheruser with invalid password + type: http + seq: 1 +} + +post { + url: {{host}}/user/login_local + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + X-CSRF-Token: + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/user/login + Connection: keep-alive +} + +body:json { + { + "username": "{{researcherUsername}}", + "password": "notthepassword", + "branding": "default", + "portal": "rdmp" + } +} + +tests { + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Message is incorrect username/password", function () { + var jsonData = res.getBody(); + expect(jsonData.message).to.eql("Incorrect username/password"); + }); + + test("User is false", function () { + var jsonData = res.getBody(); + expect(jsonData.user).to.eql(false); + }); +} diff --git a/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Logout Researcher User.bru b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Logout Researcher User.bru new file mode 100644 index 0000000000..05c1fa939a --- /dev/null +++ b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Logout Researcher User.bru @@ -0,0 +1,38 @@ +meta { + name: Logout Researcher User + type: http + seq: 7 +} + +get { + url: {{host}}/default/rdmp/user/logout + body: none + auth: none +} + +headers { + Connection: keep-alive + Pragma: no-cache + Cache-Control: no-cache + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 + Referer: {{host}}/default/rdmp/researcher/home + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Cookie: {{cookie}} +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + +} diff --git a/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Migrate data publication to reviewing.bru b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Migrate data publication to reviewing.bru new file mode 100644 index 0000000000..7f0f74e675 --- /dev/null +++ b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Migrate data publication to reviewing.bru @@ -0,0 +1,240 @@ +meta { + name: Migrate data publication to reviewing + type: http + seq: 5 +} + +put { + url: {{host}}/default/rdmp/recordmeta/{{dataPublicationOid}}?targetStep=reviewing + body: json + auth: none +} + +query { + targetStep: reviewing +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/edit/49a33460c794498a56fa29ed08567cc4 + Cookie: {{cookie}} + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "dataRecordGetter": "", + "": {}, + "dataRecord": { + "oid": "{{dataRecordOid}}", + "title": "A Data record" + }, + "title": "A Data record", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "foaf:fundedBy_foaf:Agent": [ + {} + ], + "foaf:fundedBy_vivo:Grant": [ + {} + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "startDate": "", + "endDate": "", + "timePeriod": "", + "geolocations": [ + "" + ], + "geospatial": {}, + "accessRightsToggle": "", + "dataLocations": [ + { + "type": "attachment", + "location": "b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "mimeType": "image/png", + "name": "Screen Shot 2018-11-26 at 3.39.48 pm.png", + "fileId": "d3de61376e5bc93c814607ee604ebac5", + "uploadUrl": "{{host}}/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "selected": true + } + ], + "dataLicensingAccess_manager": "Prof Paul Gleeson", + "dc:accessRights": "Open", + "accessRights_url": "", + "related_publications": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_websites": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_metadata": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_data": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_services": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "license_identifier": "", + "license_notes": "", + "license_other_url": "", + "license_statement": "Copyright ReDBox Research Data 2018", + "license_statement_url": "", + "citation_doi": "", + "requestIdentifier": [], + "citation_title": "A Data Record", + "creators": [ + { + "text_full_name": "Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "role": "Chief Investigator", + "username": "", + "orcid": "", + "family_name": "Zweinstein", + "given_name": "Alberto" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Data manager", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Contributors", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": null, + "email": null, + "role": "Supervisor", + "username": "", + "orcid": "", + "family_name": "", + "given_name": "" + } + ], + "citation_publisher": "ReDBox Research Data", + "citation_url": "", + "citation_publication_date": "", + "citation_generated": "Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}", + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "Prof", + "family_name": "Paul Gleeson", + "honorific": "", + "full_name_family_name_first": "Paul Gleeson, Prof", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_supervisor": { + "text_full_name": "", + "full_name_honorific": "", + "email": "", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor" + }, + "embargoByDate": "", + "embargoUntil": null, + "embargoNote": "", + "reviewerNote": "", + "ckanLocation": "" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Test oid exists", function () { + var jsonData = res.getBody(); + expect(jsonData).to.have.property('oid'); + }); + + +} diff --git a/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Update data publication after in review.bru b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Update data publication after in review.bru new file mode 100644 index 0000000000..59b493b5c2 --- /dev/null +++ b/test/bruno/2 - AJAX calls/3 - Researcher User Tests/Update data publication after in review.bru @@ -0,0 +1,231 @@ +meta { + name: Update data publication after in review + type: http + seq: 6 +} + +put { + url: {{host}}/default/rdmp/recordmeta/{{dataPublicationOid}} + body: json + auth: none +} + +headers { + Pragma: no-cache + Origin: {{host}} + Accept-Encoding: gzip, deflate, br + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 + X-Source: jsclient + Content-Type: application/json;charset=UTF-8 + Accept: application/json, text/plain, */* + Cache-Control: no-cache + Referer: {{host}}/default/rdmp/record/edit/{{dmpOid}} + Connection: keep-alive +} + +body:json { + { + "parameterRetriever": "", + "dataRecordGetter": "", + "": {}, + "dataRecord": { + "oid": "{{dataRecordOid}}", + "title": "A Data record" + }, + "title": "A Data record - changed", + "description": "Data record", + "datatype": "collection", + "finalKeywords": [ + "270199", + "Golgi apparatus", + "endocytosis", + "membrane transport", + "protein trafficking", + "secretion", + "HIV-AIDS", + "bacterial pathogen", + "hormone secretion", + "immune development", + "lysosomal storage disorder" + ], + "foaf:fundedBy_foaf:Agent": [ + {} + ], + "foaf:fundedBy_vivo:Grant": [ + {} + ], + "dc:subject_anzsrc:for": [ + { + "name": "01 - MATHEMATICAL SCIENCES", + "label": "MATHEMATICAL SCIENCES", + "notation": "01" + } + ], + "dc:subject_anzsrc:seo": [], + "startDate": "", + "endDate": "", + "timePeriod": "", + "geolocations": [ + "" + ], + "geospatial": {}, + "accessRightsToggle": "", + "dataLocations": [ + { + "type": "attachment", + "location": "b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "mimeType": "image/png", + "name": "Screen Shot 2018-11-26 at 3.39.48 pm.png", + "fileId": "d3de61376e5bc93c814607ee604ebac5", + "uploadUrl": "{{host}}/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5", + "selected": true + } + ], + "dataLicensingAccess_manager": "Prof Paul Gleeson", + "dc:accessRights": "Open", + "accessRights_url": "", + "related_publications": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_websites": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_metadata": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_data": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "related_services": [ + { + "related_title": "", + "related_url": "", + "related_notes": "" + } + ], + "license_identifier": "", + "license_notes": "", + "license_other_url": "", + "license_statement": "Copyright ReDBox Research Data 2018", + "license_statement_url": "", + "citation_doi": "", + "requestIdentifier": [], + "citation_title": "A Data Record", + "creators": [ + { + "text_full_name": "Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "role": "Chief Investigator", + "username": "", + "orcid": "", + "family_name": "Zweinstein", + "given_name": "Alberto" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Data manager", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": "Prof Paul Gleeson", + "email": "notAReal@email.edu.au", + "role": "Contributors", + "username": "", + "orcid": "http://orcid.org/0000-0000-0000-000", + "family_name": "Paul Gleeson", + "given_name": "Prof" + }, + { + "text_full_name": null, + "email": null, + "role": "Supervisor", + "username": "", + "orcid": "", + "family_name": "", + "given_name": "" + } + ], + "citation_publisher": "ReDBox Research Data", + "citation_url": "", + "citation_publication_date": "", + "citation_generated": "Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}", + "dataowner_name": "Alberto Zweinstein", + "dataowner_email": "alberto.zweinstein@example.edu.au", + "contributor_ci": { + "text_full_name": "Alberto Zweinstein", + "full_name_honorific": "Dr Alberto Zweinstein", + "email": "alberto.zweinstein@example.edu.au", + "given_name": "Alberto", + "family_name": "Zweinstein", + "honorific": "Dr", + "full_name_family_name_first": "Zweinstein, Alberto", + "username": "", + "role": "Chief Investigator" + }, + "contributor_data_manager": { + "text_full_name": "Prof Paul Gleeson", + "full_name_honorific": "", + "email": "notAReal@email.edu.au", + "given_name": "Prof", + "family_name": "Paul Gleeson", + "honorific": "", + "full_name_family_name_first": "Paul Gleeson, Prof", + "username": "", + "role": "Data manager", + "orcid": "http://orcid.org/0000-0000-0000-000" + }, + "contributor_supervisor": { + "text_full_name": "", + "full_name_honorific": "", + "email": "", + "given_name": "", + "family_name": "", + "honorific": "", + "full_name_family_name_first": "", + "username": "", + "role": "Supervisor" + }, + "embargoByDate": "", + "embargoUntil": null, + "embargoNote": "", + "reviewerNote": "", + "ckanLocation": "" + } +} + +script:pre-request { + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + //Record is now in review so the researcher should no longer be able to edit the record + test("Status code is 403", function () { + expect(res.getStatus()).to.equal(403); + }); + +} diff --git a/test/bruno/3 - OpenID Connect/Begin OIDC login.bru b/test/bruno/3 - OpenID Connect/Begin OIDC login.bru new file mode 100644 index 0000000000..67e2f5364c --- /dev/null +++ b/test/bruno/3 - OpenID Connect/Begin OIDC login.bru @@ -0,0 +1,46 @@ +meta { + name: Begin OIDC login + type: http + seq: 2 +} + +get { + url: {{host}}/user/begin_oidc + body: none + auth: none +} + +headers { + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Cache-Control: no-cache + Connection: keep-alive + Pragma: no-cache + Referer: {{host}}/default/rdmp/user/login + Sec-Fetch-Dest: document + Sec-Fetch-Mode: navigate + Sec-Fetch-Site: same-origin + Sec-Fetch-User: ?1 + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36 + sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100" + sec-ch-ua-mobile: ?0 + sec-ch-ua-platform: "macOS" +} + +script:pre-request { + req.setMaxRedirects(0); + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 302", function () { + expect(res.getStatus()).to.equal(302); + bru.setVar("kc_redir_url", res.headers['location']); + console.log(bru.getVar("kc_redir_url")) + }); +} diff --git a/test/bruno/3 - OpenID Connect/Keycloak login action.bru b/test/bruno/3 - OpenID Connect/Keycloak login action.bru new file mode 100644 index 0000000000..3b98dd0d2b --- /dev/null +++ b/test/bruno/3 - OpenID Connect/Keycloak login action.bru @@ -0,0 +1,46 @@ +meta { + name: Keycloak login action + type: http + seq: 4 +} + +post { + url: {{kc_login_url}} + body: formUrlEncoded + auth: none +} + +headers { + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Cache-Control: no-cache + Connection: keep-alive + Content-Type: application/x-www-form-urlencoded + Origin: null + Pragma: no-cache + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36 +} + +body:form-urlencoded { + username: test-researcher + password: password + credentialId: +} + +script:pre-request { + req.setMaxRedirects(0); + const cookie = bru.getVar("kc_cookie"); + console.log(`Cookie is: ${cookie}`) + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + test("Status code is 302", function () { + expect(res.getStatus()).to.equal(302); + bru.setVar("rb_login_url", res.headers['location']); + console.log(bru.getVar("rb_login_url")) + }); +} diff --git a/test/bruno/3 - OpenID Connect/Keycloak login page.bru b/test/bruno/3 - OpenID Connect/Keycloak login page.bru new file mode 100644 index 0000000000..a17d57047f --- /dev/null +++ b/test/bruno/3 - OpenID Connect/Keycloak login page.bru @@ -0,0 +1,43 @@ +meta { + name: Keycloak login page + type: http + seq: 3 +} + +get { + url: {{kc_redir_url}} + body: none + auth: none +} + +headers { + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Cache-Control: no-cache + Connection: keep-alive + Pragma: no-cache + Referer: {{host}}/default/rdmp/user/login + Sec-Fetch-Dest: document + Sec-Fetch-Mode: navigate + Sec-Fetch-Site: same-origin + Sec-Fetch-User: ?1 + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36 + sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100" + sec-ch-ua-mobile: ?0 + sec-ch-ua-platform: "macOS" +} + +script:post-response { + bru.setVar("kc_cookie",res.headers['set-cookie']); +} + +tests { + const cheerio = require('cheerio') + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + const $ = cheerio.load(res.getBody()); + + bru.setVar("kc_login_url", $("#kc-form-login").attr('action')); + }); +} diff --git a/test/bruno/3 - OpenID Connect/Load login page.bru b/test/bruno/3 - OpenID Connect/Load login page.bru new file mode 100644 index 0000000000..51a0264dc1 --- /dev/null +++ b/test/bruno/3 - OpenID Connect/Load login page.bru @@ -0,0 +1,40 @@ +meta { + name: Load login page + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/user/login + body: none + auth: none +} + +headers { + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Cache-Control: no-cache + Connection: keep-alive + Pragma: no-cache + Referer: {{host}}/default/rdmp/user/login + Sec-Fetch-Dest: document + Sec-Fetch-Mode: navigate + Sec-Fetch-Site: same-origin + Sec-Fetch-User: ?1 + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36 + sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100" + sec-ch-ua-mobile: ?0 + sec-ch-ua-platform: "macOS" +} + +script:post-response { + bru.setVar("cookie",res.headers['set-cookie']); +} + +tests { + test("Status code is 200", function () { + // Just loading page to get a session cookie + expect(res.getStatus()).to.equal(200); + }); +} diff --git a/test/bruno/3 - OpenID Connect/RedBox OIDC return login.bru b/test/bruno/3 - OpenID Connect/RedBox OIDC return login.bru new file mode 100644 index 0000000000..b0490e533a --- /dev/null +++ b/test/bruno/3 - OpenID Connect/RedBox OIDC return login.bru @@ -0,0 +1,44 @@ +meta { + name: RedBox OIDC return login + type: http + seq: 5 +} + +get { + url: {{rb_login_url}} + body: none + auth: none +} + +headers { + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Cache-Control: no-cache + Connection: keep-alive + Pragma: no-cache + Sec-Fetch-Dest: document + Sec-Fetch-Mode: navigate + Sec-Fetch-Site: cross-site + Sec-Fetch-User: ?1 + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36 +} + +script:pre-request { + req.setMaxRedirects(0); + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + + + test("Status code is 302", function () { + expect(res.getStatus()).to.equal(302); + bru.setVar("cookie", res.headers['set-cookie']) + }); + +} diff --git a/test/bruno/3 - OpenID Connect/RedBox OIDC return welcome page.bru b/test/bruno/3 - OpenID Connect/RedBox OIDC return welcome page.bru new file mode 100644 index 0000000000..afb7a319e9 --- /dev/null +++ b/test/bruno/3 - OpenID Connect/RedBox OIDC return welcome page.bru @@ -0,0 +1,47 @@ +meta { + name: RedBox OIDC return login + type: http + seq: 6 +} + +get { + url: {{host}}/default/rdmp/researcher/home + body: none + auth: none +} + +headers { + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 + Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7 + Cache-Control: no-cache + Connection: keep-alive + Pragma: no-cache + Sec-Fetch-Dest: document + Sec-Fetch-Mode: navigate + Sec-Fetch-Site: cross-site + Sec-Fetch-User: ?1 + Upgrade-Insecure-Requests: 1 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36 +} + +script:pre-request { + req.setMaxRedirects(0); + const cookie = bru.getVar("cookie"); + + if(cookie) { + req.setHeader("Cookie", cookie) + } +} + +tests { + + + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Welcome message in HTML", function () { + //Testing login worked by looking for welcome message on page + expect(res.getBody()).to.include("Test Researcher") + }); +} diff --git a/test/bruno/4 - General/Get logo.bru b/test/bruno/4 - General/Get logo.bru new file mode 100644 index 0000000000..20f55eb734 --- /dev/null +++ b/test/bruno/4 - General/Get logo.bru @@ -0,0 +1,24 @@ +meta { + name: Get logo + type: http + seq: 2 +} + +get { + url: {{host}}/default/rdmp/images/logo + body: none + auth: none +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + + test("Has valid content and type", function () { + expect(res.getHeader("content-type")).to.equal("image/png") + const sizeInBytes = Buffer.byteLength(res.getBody(),"utf-8") + expect(sizeInBytes).to.be.greaterThan(0); + }); +} diff --git a/test/bruno/4 - General/Get stylesheet.bru b/test/bruno/4 - General/Get stylesheet.bru new file mode 100644 index 0000000000..0351b04245 --- /dev/null +++ b/test/bruno/4 - General/Get stylesheet.bru @@ -0,0 +1,26 @@ +meta { + name: Get stylesheet + type: http + seq: 1 +} + +get { + url: {{host}}/default/rdmp/styles/style.min.css + body: none + auth: none +} + +script:pre-request { + await new Promise((resolve) => setTimeout(() => resolve(), 30000)); +} + +tests { + test("Status code is 200", function () { + expect(res.getStatus()).to.equal(200); + }); + + test("Has valid content", function () { + expect(res.getBody()).to.match(/@charset "UTF-8"/s) + }); + +} diff --git a/test/postman/attachment.png b/test/bruno/attachment.png similarity index 100% rename from test/postman/attachment.png rename to test/bruno/attachment.png diff --git a/test/bruno/bruno.json b/test/bruno/bruno.json new file mode 100644 index 0000000000..fe43d1a51b --- /dev/null +++ b/test/bruno/bruno.json @@ -0,0 +1,14 @@ +{ + "version": "1", + "name": "Redbox Portal API - With tests", + "type": "collection", + "ignore": [ + "node_modules", + ".git" + ], + "scripts": { + "filesystemAccess": { + "allow": true + } + } +} \ No newline at end of file diff --git a/test/bruno/environments/development.bru b/test/bruno/environments/development.bru new file mode 100644 index 0000000000..948133deb7 --- /dev/null +++ b/test/bruno/environments/development.bru @@ -0,0 +1,5 @@ +vars { + host: http://localhost:1500 + token: d077835a-696b-4728-85cf-3ffd57152b1e +} + diff --git a/test/bruno/environments/int-test.bru b/test/bruno/environments/int-test.bru new file mode 100644 index 0000000000..e8cc7a90c1 --- /dev/null +++ b/test/bruno/environments/int-test.bru @@ -0,0 +1,6 @@ +vars { + host: http://redboxportal:1500 + token: d077835a-696b-4728-85cf-3ffd57152b1e + solrhost: http://solr:8983 +} + diff --git a/test/bruno/package-lock.json b/test/bruno/package-lock.json new file mode 100644 index 0000000000..1fe831118a --- /dev/null +++ b/test/bruno/package-lock.json @@ -0,0 +1,193 @@ +{ + "name": "tests", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "cheerio": "^1.0.0-rc.12" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + } + } +} diff --git a/test/bruno/package.json b/test/bruno/package.json new file mode 100644 index 0000000000..573f2cdc8d --- /dev/null +++ b/test/bruno/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "cheerio": "^1.0.0-rc.12" + } +} diff --git a/test/postman/local.environment.json b/test/postman/local.environment.json deleted file mode 100644 index 5e6f3e7eef..0000000000 --- a/test/postman/local.environment.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "id": "1080c97f-45ea-414b-af69-e6cfa6e461f9", - "name": "Localhost", - "values": [ - { - "key": "token", - "value": "d077835a-696b-4728-85cf-3ffd57152b1e", - "enabled": true - }, - { - "key": "dmpOid", - "value": "b1ed19e5f85e53259bc61af37b2ed472", - "enabled": true - }, - { - "key": "host", - "value": "http://localhost:1500", - "enabled": true - }, - { - "key": "cookie", - "value": "", - "enabled": true - }, - { - "key": "researcherUserId", - "value": "5bfcb06c5b84e2000697decd", - "enabled": true - }, - { - "key": "attachmentLocation", - "value": "//localhost:1500/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/c7f4c08193e1d507790639db2b763b8c", - "enabled": true - }, - { - "key": "dataRecordOid", - "value": "cad53d96803956abea6165996cb05a81", - "enabled": true - }, - { - "key": "dataPublicationOid", - "value": "8a382c026b4c2531e843730667142935", - "enabled": true - }, - { - "key": "researcherPassword", - "value": "!7654321wQ", - "enabled": true - }, - { - "key": "solrhost", - "value": "http://solr:8983", - "enabled": true - } - ], - "_postman_variable_scope": "environment", - "_postman_exported_at": "2024-04-18T07:08:56.498Z", - "_postman_exported_using": "Postman/10.24.19" -} \ No newline at end of file diff --git a/test/postman/runNewmanTests.js b/test/postman/runNewmanTests.js deleted file mode 100644 index 7ddc498898..0000000000 --- a/test/postman/runNewmanTests.js +++ /dev/null @@ -1,54 +0,0 @@ -var sails = require('sails'); -var newman = require('newman'); - -sails.lift({ - port: 1500, - log: { - level: 'info' - }, - hooks: { - grunt: false - }, - models: { - datastore: 'mongodb', - migrate: 'drop' - }, - security: { - csrf: false - }, - auth: { - default: { - local: { - default: { - token: 'd077835a-696b-4728-85cf-3ffd57152b1e' - } - } - } - } -}, function(err, server) { - if (err) process.exit(1); - - newman.run({ - collection: require('./test-collection.json'), - reporters: ['cli', 'junit'], - reporter: { - junit: { - export: '.tmp/junit/backend-newman/backend-newman.xml' - }, - }, - environment: require('./local.environment.json') - }, function(err, summary) { - const runError = err || summary.run.error || summary.run.failures.length; - if (err) { - console.log(err); - process.exit(1); - } - if(runError) { - process.exit(1); - } - process.exit(0); - }); - - - -}); diff --git a/test/postman/test-collection.json b/test/postman/test-collection.json deleted file mode 100644 index d91e5af2ed..0000000000 --- a/test/postman/test-collection.json +++ /dev/null @@ -1,7594 +0,0 @@ -{ - "info": { - "_postman_id": "ba79da62-2008-4880-a2d8-c458dacbbb08", - "name": "Redbox Portal API - With tests", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "6438809" - }, - "item": [ - { - "name": "REST API", - "item": [ - { - "name": "Record Management", - "item": [ - { - "name": "Create RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"dmpOid\", jsonData.oid);", - " var randomNumber = _.random(100);", - " postman.setEnvironmentVariable(\"randomNumber\", randomNumber);", - " postman.setEnvironmentVariable(\"researcherUsername\", \"researcheruser\" + randomNumber);", - " postman.setEnvironmentVariable(\"researcherEmail\", \"researcheruser\" + randomNumber + \"@email.edu.au\");", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"Andrew's Postman test\",\n \"dc:identifier\": \"http://purl.org/au-research/grants/nhmrc/566728\",\n \"description\": \"Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"vivo:Dataset_redbox:DataCollectionMethodology\": \"The data collection methodology\",\n \"vivo:Dataset_dc_format\": \"xls\",\n \"vivo:Dataset_dc:location_rdf:PlainLiteral\": \"eResearch Store network drive\",\n \"vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral\": \"shared university network drive (e.g. G, H, etc)\",\n \"vivo:Dataset_dc:extent\": \"100GB - 2TB\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"dc:rightsHolder_dc:name\": \"myUni\",\n \"dc:accessRights\": \"permission from the data manager\",\n \"authorization\": []\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/rdmp", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "rdmp" - ] - } - }, - "response": [] - }, - { - "name": "Get RDMP's Metadata", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Title is correct\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.title).to.eql(\"Andrew's Postman test\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - }, - { - "key": "", - "value": "", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Get RDMP's ObjectMetadata", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Type and Form is correct\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.type).to.eql(\"rdmp\");", - " pm.expect(jsonData.form).to.eql(\"default-1.0-draft\");", - " postman.setEnvironmentVariable(\"brandId\", jsonData.brandId);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - }, - { - "key": "", - "type": "text", - "value": "", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/objectmetadata/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "objectmetadata", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Update RDMP Metadata", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test oid is equal to the requested oid value\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " pm.expect(jsonData.oid).to.eql(postman.getEnvironmentVariable(\"dmpOid\")); ", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"Andrew's Postman test - Updated\",\n \"dc:identifier\": \"http://purl.org/au-research/grants/nhmrc/566728\",\n \"description\": \"Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"vivo:Dataset_redbox:DataCollectionMethodology\": \"The data collection methodology\",\n \"vivo:Dataset_dc_format\": \"xls\",\n \"vivo:Dataset_dc:location_rdf:PlainLiteral\": \"eResearch Store network drive\",\n \"vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral\": \"shared university network drive (e.g. G, H, etc)\",\n \"vivo:Dataset_dc:extent\": \"100GB - 2TB\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"dc:rightsHolder_dc:name\": \"myUni\",\n \"dc:accessRights\": \"permission from the data manager\",\n \"authorization\": []\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Update RDMP Metadata that does not exist", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 400\", function () {", - " pm.response.to.have.status(400);", - "});", - "", - "pm.test(\"Body has json with error\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('message');", - " pm.expect(jsonData.message).to.eql(\"Failed to update meta, cannot find existing record with oid: blah-blah-blah\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"Andrew's Postman test - Updated\",\n \"dc:identifier\": \"http://purl.org/au-research/grants/nhmrc/566728\",\n \"description\": \"Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"vivo:Dataset_redbox:DataCollectionMethodology\": \"The data collection methodology\",\n \"vivo:Dataset_dc_format\": \"xls\",\n \"vivo:Dataset_dc:location_rdf:PlainLiteral\": \"eResearch Store network drive\",\n \"vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral\": \"shared university network drive (e.g. G, H, etc)\",\n \"vivo:Dataset_dc:extent\": \"100GB - 2TB\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"dc:rightsHolder_dc:name\": \"myUni\",\n \"dc:accessRights\": \"permission from the data manager\",\n \"authorization\": []\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/blah-blah-blah", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "blah-blah-blah" - ] - } - }, - "response": [] - }, - { - "name": "List RDMPs", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"There is more than 1 RDMP record in the records\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.records.length).to.be.greaterThan(0);", - "});", - "", - "pm.test(\"Check record has oid and metadata properties\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.records[0]).to.have.property(\"oid\")", - " pm.expect(jsonData.records[0]).to.have.property(\"metadata\")", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - }, - { - "key": "", - "value": "", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/list?recordType=rdmp", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "list" - ], - "query": [ - { - "key": "recordType", - "value": "rdmp" - } - ] - } - }, - "response": [] - }, - { - "name": "Export RDMP Records", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"There is more than 1 RDMP record in the records\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.records.length).to.be.greaterThan(0);", - "});", - "", - "pm.test(\"Content-Disposition is present and valid\", function () {", - " pm.response.to.have.header(\"Content-Disposition\");", - " pm.response.to.be.header(\"Content-Disposition\", 'attachment; filename=\"Plan - Exported Records.json\"');", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - }, - { - "key": "", - "value": "", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/export/record/download/json?before=&after=&recType=rdmp", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "export", - "record", - "download", - "json" - ], - "query": [ - { - "key": "before", - "value": "" - }, - { - "key": "after", - "value": "" - }, - { - "key": "recType", - "value": "rdmp" - } - ] - } - }, - "response": [] - }, - { - "name": "Get RDMP's Metadata - Updated Test", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Title is correct\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.title).to.eql(\"Andrew's Postman test - Updated\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - }, - { - "key": "", - "type": "text", - "value": "", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Get RDMP's Record Audit", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.be.ok", - "});", - "", - "pm.test(\"Number of found items is returned\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(pm.response.json()).to.have.property('summary')", - " .and.to.have.property('numFound')", - " .and.equal(2)", - "});", - "", - "pm.test(\"Data is returned\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(pm.response.json()).to.have.property('records')", - " .and.to.have.property(0)", - " .and.to.have.property('redboxOid')", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - }, - { - "key": "", - "type": "text", - "value": "", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/audit/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "audit", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Get RDMP's Record Audit with Date filters", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.be.ok", - "});", - "", - "pm.test(\"Zero items found\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(pm.response.json()).to.have.property('summary')", - " .and.to.have.property('numFound')", - " .and.equal(0)", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - }, - { - "key": "", - "type": "text", - "value": "", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/audit/{{dmpOid}}?dateFrom=2023&dateTo=2021", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "audit", - "{{dmpOid}}" - ], - "query": [ - { - "key": "dateFrom", - "value": "2023" - }, - { - "key": "dateTo", - "value": "2021" - } - ] - } - }, - "response": [] - }, - { - "name": "Give user edit permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Edit permissions applied\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"users\": [\"user\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/edit/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "edit", - "{{dmpOid}}" - ] - }, - "description": "http://localhost:1500/default/rdmp/api/records/rdmp/create" - }, - "response": [] - }, - { - "name": "Create RDMP For Deletion", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"dmpOidToDelete\", jsonData.oid);", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"Andrew's Postman test\",\n \"dc:identifier\": \"http://purl.org/au-research/grants/nhmrc/566728\",\n \"description\": \"Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"vivo:Dataset_redbox:DataCollectionMethodology\": \"The data collection methodology\",\n \"vivo:Dataset_dc_format\": \"xls\",\n \"vivo:Dataset_dc:location_rdf:PlainLiteral\": \"eResearch Store network drive\",\n \"vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral\": \"shared university network drive (e.g. G, H, etc)\",\n \"vivo:Dataset_dc:extent\": \"100GB - 2TB\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"dc:rightsHolder_dc:name\": \"myUni\",\n \"dc:accessRights\": \"permission from the data manager\",\n \"authorization\": []\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/rdmp", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "rdmp" - ] - } - }, - "response": [] - }, - { - "name": "Delete Record", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Success is set and is true\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('success');", - " pm.expect(jsonData.success).to.eql(true);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "DELETE", - "header": [], - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/{{dmpOidToDelete}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "{{dmpOidToDelete}}" - ] - }, - "description": "Delete Record" - }, - "response": [] - }, - { - "name": "List Deleted RDMPs", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"There is more than 1 RDMP record in the records\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.records.length).to.be.greaterThan(0);", - "});", - "", - "pm.test(\"Check record has oid and metadata properties\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.records[0]).to.have.property(\"oid\")", - " pm.expect(jsonData.records[0]).to.have.property(\"deletedRecord\")", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - }, - { - "key": "", - "value": "", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/deletedrecords/list?recordType=rdmp", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "deletedrecords", - "list" - ], - "query": [ - { - "key": "recordType", - "value": "rdmp" - } - ] - } - }, - "response": [] - }, - { - "name": "Restore Deleted Record", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - }, - { - "key": "", - "value": "", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/deletedrecords/{{dmpOidToDelete}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "deletedrecords", - "{{dmpOidToDelete}}" - ] - } - }, - "response": [] - }, - { - "name": "Delete Record Again", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Success is set and is true\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('success');", - " pm.expect(jsonData.success).to.eql(true);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "DELETE", - "header": [], - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/{{dmpOidToDelete}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "{{dmpOidToDelete}}" - ] - }, - "description": "Delete Record" - }, - "response": [] - }, - { - "name": "Destroy Deleted Record", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "DELETE", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - }, - { - "key": "", - "value": "", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/deletedrecords/{{dmpOidToDelete}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "deletedrecords", - "{{dmpOidToDelete}}" - ] - } - }, - "response": [] - }, - { - "name": "Create Datarecord for Attachments", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"attDataRecordOid\", jsonData.oid);", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"rdmpGetter\": \"\",\n \"\": {},\n \"rdmp\": {\n \"oid\": \"{{dmpOid}}\",\n \"title\": \"Andrew's Postman test - Updated from form AJAX call\"\n },\n \"aim_project_name\": \"Andrew's Postman test - Updated from form AJAX call\",\n \"foaf:fundedBy_foaf:Agent\": [\n \"\"\n ],\n \"dc:coverage_vivo:DateTimeInterval_vivo:end\": \"\",\n \"foaf:fundedBy_vivo:Grant\": [\n \"\"\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\",\n \"orcid\": null\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"username\": \"\",\n \"role\": \"Contributors\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"contributor_supervisor\": {\n \"text_full_name\": null,\n \"full_name_honorific\": \"\",\n \"email\": null,\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\",\n \"orcid\": null\n },\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"redbox:retentionPeriod_dc:date_skos:note\": \"\",\n \"disposalDate\": \"\",\n \"related_publications\": [\n {\n \"related_url\": \"\",\n \"related_title\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"dataLocations\": [],\n \"software_equipment\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/dataRecord", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "dataRecord" - ] - } - }, - "response": [] - }, - { - "name": "Add attachment to Datarecord", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).to.have.property('fileIds');", - " pm.expect(jsonData.message.fileIds).to.have.length(1);", - " pm.expect(jsonData.message.fileIds[0]).to.have.property('fileId');", - " postman.setEnvironmentVariable(\"attDataRecordStreamId\", jsonData.message.fileIds[0].fileId);", - "});" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json", - "disabled": true - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "attachmentFields", - "type": "file", - "src": "test/postman/attachment.png" - }, - { - "key": "dataLocations", - "value": "", - "type": "text", - "disabled": true - } - ] - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/datastreams/{{attDataRecordOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "datastreams", - "{{attDataRecordOid}}" - ] - } - }, - "response": [] - }, - { - "name": "List Attachments for Datarecord", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has attachments\", function () {", - " var jsonData = pm.response.json();", - " // pm.expect()", - " pm.expect(_.size(jsonData)).to.gt(0);", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/datastreams/{{attDataRecordOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "datastreams", - "{{attDataRecordOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Get Attachment for Datarecord", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {\n", - " pm.response.to.have.status(200);\n", - "});\n", - "pm.test(\"Body has attachment content\", function () {\n", - " pm.expect(pm.response.size().body).to.eql(30148);\n", - " pm.expect(pm.response.contentInfo().contentType).to.eql('image/png');\n", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/datastreams/{{attDataRecordOid}}/{{attDataRecordStreamId}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "datastreams", - "{{attDataRecordOid}}", - "{{attDataRecordStreamId}}" - ] - } - }, - "response": [] - }, - { - "name": "Create Temporary Datapub", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"tempDataPubOid\", jsonData.oid);", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"dataRecordGetter\": \"\",\n \"\": {},\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"foaf:fundedBy_foaf:Agent\": [\n {}\n ],\n \"foaf:fundedBy_vivo:Grant\": [\n {}\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"timePeriod\": \"\",\n \"geolocations\": [\n \"\"\n ],\n \"geospatial\": {},\n \"accessRightsToggle\": \"\",\n \"dataLocations\": [\n {\n \"type\": \"attachment\",\n \"location\": \"b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"mimeType\": \"image/png\",\n \"name\": \"Screen Shot 2018-11-26 at 3.39.48 pm.png\",\n \"fileId\": \"d3de61376e5bc93c814607ee604ebac5\",\n \"uploadUrl\": \"http://localhost:1500/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"selected\": true\n }\n ],\n \"dataLicensingAccess_manager\": \"Prof Paul Gleeson\",\n \"dc:accessRights\": \"Open\",\n \"accessRights_url\": \"\",\n \"related_publications\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_websites\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_metadata\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_data\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_services\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"license_identifier\": \"\",\n \"license_notes\": \"\",\n \"license_other_url\": \"\",\n \"license_statement\": \"Copyright ReDBox Research Data 2018\",\n \"license_statement_url\": \"\",\n \"citation_doi\": \"\",\n \"requestIdentifier\": [],\n \"citation_title\": \"A Data Record\",\n \"creators\": [\n {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"role\": \"Chief Investigator\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"Zweinstein\",\n \"given_name\": \"Alberto\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Data manager\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Contributors\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": null,\n \"email\": null,\n \"role\": \"Supervisor\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"\",\n \"given_name\": \"\"\n }\n ],\n \"citation_publisher\": \"ReDBox Research Data\",\n \"citation_url\": \"\",\n \"citation_publication_date\": \"\",\n \"citation_generated\": \"Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}\",\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"Prof\",\n \"family_name\": \"Paul Gleeson\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"Paul Gleeson, Prof\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_supervisor\": {\n \"text_full_name\": \"\",\n \"full_name_honorific\": \"\",\n \"email\": \"\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\"\n },\n \"embargoByDate\": \"\",\n \"embargoUntil\": null,\n \"embargoNote\": \"\",\n \"reviewerNote\": \"\",\n \"ckanLocation\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/dataPublication", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "dataPublication" - ] - } - }, - "response": [] - }, - { - "name": "Transition Workflow of Data publication", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Success is set and is equal to true\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('success');", - " pm.expect(jsonData.success).to.eql(true);", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/records/workflow/step/queued/{{tempDataPubOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "workflow", - "step", - "queued", - "{{tempDataPubOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Give role view permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Role view permission added\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.viewRoles).to.include(\"Chief Investigator\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"roles\": [\"Chief Investigator\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/viewRole/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "viewRole", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Remove role view permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Role view permission removed\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.viewRoles).to.not.include(\"Chief Investigator\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"roles\": [\"Chief Investigator\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/viewRole/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "viewRole", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Give role edit permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Role edit permission added\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.editRoles).to.include(\"Chief Investigator\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"roles\": [\"Chief Investigator\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/editRole/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "editRole", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Remove role edit permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Role edit permission removed\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.editRoles).to.not.include(\"Chief Investigator\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"roles\": [\"Chief Investigator\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/editRole/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "editRole", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Create record type Existing Locations", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 201\", function () {\n", - " pm.response.to.have.status(201);\n", - "});\n", - "\n", - "pm.test(\"Test oid exists\", function () {\n", - " var jsonData = pm.response.json();\n", - " pm.expect(jsonData).to.have.property('workspaceOid');\n", - " postman.setEnvironmentVariable(\"existingLocationsOid\", jsonData.workspaceOid);\n", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"authorization\": {\n \"edit\": [\"admin\", \"userExistingLocationsTest1\"],\n \"view\": [\"admin\", \"userExistingLocationsTest1\"],\n \"editPending\": [],\n \"viewPending\":[\"userExistingLocationsTest2\"]\n },\n \"metadata\": {\"rdmpOid\":\"{{dmpOid}}\"}\n \n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/metadata/existing-locations", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "metadata", - "existing-locations" - ] - } - }, - "response": [] - }, - { - "name": "Give user view permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"User view permission added\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.view).to.include(\"user\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"users\": [\"user\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/view/{{existingLocationsOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "view", - "{{existingLocationsOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Remove user view permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"User view permission removed\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.view).to.not.include(\"user\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"users\": [\"user\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/view/{{existingLocationsOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "view", - "{{existingLocationsOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Give user edit permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Edit permissions applied\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.edit).to.include(\"user\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"users\": [\"user\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/edit/{{existingLocationsOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "edit", - "{{existingLocationsOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Remove user edit permissions to RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"User edit permission removed\", function () {", - " var jsonData = pm.response.json();", - " //TODO: This is because of the save trigger", - " pm.expect(true).to.eql(true);", - " pm.expect(jsonData.edit).to.not.include(\"user\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"users\": [\"user\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/records/permissions/edit/{{existingLocationsOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "records", - "permissions", - "edit", - "{{existingLocationsOid}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "User Management", - "item": [ - { - "name": "List Users", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Number of users returned in results array equals numFound or 10\", function () {", - " var jsonData = pm.response.json();", - " ", - " var numFound = jsonData.summary.numFound;", - " ", - " if(numFound < 10) {", - " pm.expect(jsonData.records.length).to.eql(numFound);", - " } else {", - " pm.expect(jsonData.records.length).to.eql(10);", - " }", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/users", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "users" - ] - } - }, - "response": [] - }, - { - "name": "Get Admin User Details", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Username is admin\", function () {", - " var jsonData = pm.response.json();", - " ", - " var username = jsonData.username;", - " ", - " pm.expect(username).to.eql('admin');", - " ", - " ", - "});", - "", - "pm.test(\"email address is admin@redboxresearchdata.com.au\", function () {", - " var jsonData = pm.response.json();", - " ", - " var email = jsonData.email;", - " ", - " pm.expect(email).to.eql('admin@redboxresearchdata.com.au');", - " ", - " ", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/users/get?searchBy=email&query=admin@redboxresearchdata.com.au", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "users", - "get" - ], - "query": [ - { - "key": "searchBy", - "value": "email" - }, - { - "key": "query", - "value": "admin@redboxresearchdata.com.au" - } - ] - } - }, - "response": [] - }, - { - "name": "Attempt to retrieve user that does not exist", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 404\", function () {", - " pm.response.to.have.status(404);", - "});", - "", - "pm.test(\"Error message is correct\", function () {", - " var jsonData = pm.response.json();", - " ", - " var message = jsonData.message;", - " ", - " pm.expect(message).to.eql('No user found with given criteria');", - " ", - " ", - "});", - "", - "pm.test(\"Details message is correct\", function () {", - " var jsonData = pm.response.json();", - " ", - " var details = jsonData.details;", - " ", - " pm.expect(details).to.eql('Searchby: email and Query: fake@redboxresearchdata.com.au');", - " ", - " ", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/users/get?searchBy=email&query=fake@redboxresearchdata.com.au", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "users", - "get" - ], - "query": [ - { - "key": "searchBy", - "value": "email" - }, - { - "key": "query", - "value": "fake@redboxresearchdata.com.au" - } - ] - } - }, - "response": [] - }, - { - "name": "Create API Researcher User", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Test response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('id');", - " pm.expect(jsonData).to.have.property('username');", - " pm.expect(jsonData).to.have.property('name');", - " pm.expect(jsonData).to.have.property('email');", - " pm.expect(jsonData).to.have.property('type');", - " pm.expect(jsonData).to.have.property('lastLogin');", - " postman.setEnvironmentVariable(\"apiUserId\", jsonData.id);", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"username\": \"apiresearcher34\",\n \"name\": \"researcher created via API\",\n \"email\": \"apiresearcher34@redboxresearchdata.com.au\",\n \"password\": \"a12345672A!\",\n \"roles\": [\"Admin\",\"Researcher\",\"Librarian\"]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/users", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "users" - ] - } - }, - "response": [] - }, - { - "name": "Update API Researcher User", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - "});", - "", - "pm.test(\"Test response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('id');", - " pm.expect(jsonData).to.have.property('username');", - " pm.expect(jsonData).to.have.property('name');", - " pm.expect(jsonData).to.have.property('email');", - " pm.expect(jsonData).to.have.property('type');", - " pm.expect(jsonData).to.have.property('lastLogin');", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{apiUserId}}\",\n \"name\": \"researcher created via API - modified\",\n \"email\": \"apiresearcher@redboxresearchdata.com.au\",\n \"password\": \"a12345672A!\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/users", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "users" - ] - } - }, - "response": [] - }, - { - "name": "Generate API Researcher User API Token", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('token');", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/users/token/generate?id={{apiUserId}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "users", - "token", - "generate" - ], - "query": [ - { - "key": "id", - "value": "{{apiUserId}}" - } - ] - } - }, - "response": [] - }, - { - "name": "Revoke API Researcher User API Token", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('id');", - "});" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{host}}/default/rdmp/api/users/token/revoke?id={{apiUserId}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "users", - "token", - "revoke" - ], - "query": [ - { - "key": "id", - "value": "{{apiUserId}}" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Search", - "item": [ - { - "name": "Search Index", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has record array\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"records\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/search/?searchStr=Andrew", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "search", - "" - ], - "query": [ - { - "key": "searchStr", - "value": "Andrew" - } - ] - } - }, - "response": [] - }, - { - "name": "Index Record", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/search/index?oid={{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "search", - "index" - ], - "query": [ - { - "key": "oid", - "value": "{{dmpOid}}" - } - ] - } - }, - "response": [] - }, - { - "name": "Remove All", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {\n", - " pm.response.to.have.status(200);\n", - "});\n", - "\n", - "pm.test(\"Has expected message\", function () {\n", - " var jsonData = pm.response.json();\n", - " pm.expect(jsonData).to.have.property(\"message\");\n", - " pm.expect(jsonData.message).to.eql(\"Remove all records request added to message queue for processing\")\n", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/search/removeAll", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "search", - "removeAll" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Form Management", - "item": [ - { - "name": "List Forms", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has forms in response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"records\");", - " pm.expect(jsonData.records.length).to.be.greaterThan(0)", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/forms", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "forms" - ] - } - }, - "response": [] - }, - { - "name": "Get Form", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has name property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"name\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/forms/get?name=default-1.0-draft", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "forms", - "get" - ], - "query": [ - { - "key": "name", - "value": "default-1.0-draft" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Record Type Management", - "item": [ - { - "name": "List Record Types", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has forms in response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"records\");", - " pm.expect(jsonData.records.length).to.be.greaterThan(0)", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/forms", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "forms" - ] - } - }, - "response": [] - }, - { - "name": "Get Record Type", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has name property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"name\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/forms/get?name=default-1.0-draft", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "forms", - "get" - ], - "query": [ - { - "key": "name", - "value": "default-1.0-draft" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Administration", - "item": [ - { - "name": "Refresh Cached Resources", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}", - "type": "text" - }, - { - "key": "", - "value": "", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/admin/refreshCachedResources", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "admin", - "refreshCachedResources" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "App Config", - "item": [ - { - "name": "Get App Config", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has enabled property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"enabled\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/api/appconfig/systemMessage", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "appconfig", - "systemMessage" - ] - } - }, - "response": [] - }, - { - "name": "Update App Config", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has enabled property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"enabled\");", - "});", - "", - "pm.test(\"Has title property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"title\");", - "});", - "", - "pm.test(\"Has message property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"message\");", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "type": "text", - "value": "Bearer {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"enabled\": false,\n \"title\": \"The new title\",\n \"message\": \"The new message\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{host}}/default/rdmp/api/appconfig/systemMessage", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "api", - "appconfig", - "systemMessage" - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "AJAX calls", - "item": [ - { - "name": "Admin User Tests", - "item": [ - { - "name": "Login via Internal authentication", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "postman.setGlobalVariable(\"cookie\",postman.getResponseHeader(\"set-cookie\") );", - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check that user returned is admin\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.user.username).to.eql(\"admin\");", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/user/login" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"username\": \"admin\",\n \"password\": \"rbadmin\",\n \"branding\": \"default\",\n \"portal\": \"rdmp\"\n}" - }, - "url": { - "raw": "{{host}}/user/login_local", - "host": [ - "{{host}}" - ], - "path": [ - "user", - "login_local" - ] - } - }, - "response": [] - }, - { - "name": "List Dashboard Types", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has forms in response\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"dashboardTypes\");", - " pm.expect(jsonData.dashboardTypes.length).to.be.greaterThan(0)", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "X-Source", - "value": "jsclient", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*", - "type": "text" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/dashboard/type", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "dashboard", - "type" - ] - } - }, - "response": [] - }, - { - "name": "Get Dashboard Type Standard", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has name property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"name\");", - " pm.expect(jsonData).to.have.property(\"formatRules\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "X-Source", - "value": "jsclient", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*", - "type": "text" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/dashboard/type/standard", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "dashboard", - "type", - "standard" - ] - } - }, - "response": [] - }, - { - "name": "Get Dashboard Type Workspace", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has name property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"name\");", - " pm.expect(jsonData).to.have.property(\"formatRules\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "X-Source", - "value": "jsclient", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*", - "type": "text" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/dashboard/type/workspace", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "dashboard", - "type", - "workspace" - ] - } - }, - "response": [] - }, - { - "name": "Get Dashboard Type Consolidated", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has name property\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"name\");", - " pm.expect(jsonData).to.have.property(\"formatRules\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "X-Source", - "value": "jsclient", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*", - "type": "text" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/dashboard/type/consolidated", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "dashboard", - "type", - "consolidated" - ] - } - }, - "response": [] - }, - { - "name": "Dashboard List RDMP Records", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Number of items returned in results array equals totalItems or 10\", function () {", - " var jsonData = pm.response.json();", - " ", - " var numFound = jsonData.totalItems;", - " ", - " if(numFound < 10) {", - " pm.expect(jsonData.items.length).to.eql(numFound);", - " } else {", - " pm.expect(jsonData.items.length).to.eql(10);", - " }", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "X-Source", - "value": "jsclient", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*", - "type": "text" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/listRecords?recordType=rdmp&state=draft&sort=\"lastSaveDate\":-1&start=0&rows=10", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "listRecords" - ], - "query": [ - { - "key": "recordType", - "value": "rdmp" - }, - { - "key": "state", - "value": "draft" - }, - { - "key": "sort", - "value": "\"lastSaveDate\":-1" - }, - { - "key": "start", - "value": "0" - }, - { - "key": "rows", - "value": "10" - } - ] - } - }, - "response": [] - }, - { - "name": "Get view form config for RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"RDMP form name is default-1.0-draft\", function () {", - " var jsonData = pm.response.json();", - " ", - " var numFound = jsonData.totalItems;", - " pm.expect(jsonData.name).to.eql(\"default-1.0-draft\");", - "});", - "", - "pm.test(\"Fields array has values\", function () {", - " var jsonData = pm.response.json();", - " ", - " var numFound = jsonData.totalItems;", - " pm.expect(jsonData.fields).to.be.an('array').that.is.not.empty", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "X-Source", - "value": "jsclient", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*", - "type": "text" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/form/auto/{{dmpOid}}?edit=false", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "form", - "auto", - "{{dmpOid}}" - ], - "query": [ - { - "key": "edit", - "value": "false" - } - ] - } - }, - "response": [] - }, - { - "name": "Get edit form config for RDMP", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"RDMP form name is default-1.0-draft\", function () {", - " var jsonData = pm.response.json();", - " ", - " var numFound = jsonData.totalItems;", - " pm.expect(jsonData.name).to.eql(\"default-1.0-draft\");", - "});", - "", - "pm.test(\"Fields array has values\", function () {", - " var jsonData = pm.response.json();", - " ", - " var numFound = jsonData.totalItems;", - " pm.expect(jsonData.fields).to.be.an('array').that.is.not.empty", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "type": "text", - "value": "application/json" - }, - { - "key": "X-Source", - "type": "text", - "value": "jsclient" - }, - { - "key": "Accept", - "type": "text", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/form/auto/{{dmpOid}}?edit=true", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "form", - "auto", - "{{dmpOid}}" - ], - "query": [ - { - "key": "edit", - "value": "true" - } - ] - } - }, - "response": [] - }, - { - "name": "Update RDMP Metadata using AJAX form call", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "http://localhost:1500" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "http://localhost:1500/default/rdmp/record/edit/{{dmpOid}}" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"title\": \"Andrew's Postman test - Updated from form AJAX call\",\n \"dc:identifier\": \"http://purl.org/au-research/grants/nhmrc/566728\",\n \"description\": \"Movement of molecules within cells by a process known as membrane transport is critical for normal cell function and also exploited by bacteria to promote infection. The pathway that connects the import pathway to the export pathway is essential for the function of a large number of proteins, however this connecting pathway is poorly characterised. This study will define the machinery of this trafficking pathway, which will provide the ability to modulate biological processes and cytotoxicity.\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"vivo:Dataset_redbox:DataCollectionMethodology\": \"The data collection methodology\",\n \"vivo:Dataset_dc_format\": \"xls\",\n \"vivo:Dataset_dc:location_rdf:PlainLiteral\": \"eResearch Store network drive\",\n \"vivo:Dataset_dc:source_dc:location_rdf:PlainLiteral\": \"shared university network drive (e.g. G, H, etc)\",\n \"vivo:Dataset_dc:extent\": \"100GB - 2TB\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"dc:rightsHolder_dc:name\": \"myUni\",\n \"dc:accessRights\": \"permission from the data manager\",\n \"authorization\": []\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/recordmeta/{{dmpOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "recordmeta", - "{{dmpOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Create new researcher user", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check response status\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.status).to.eql(true);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/users" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"username\": \"{{researcherUsername}}\",\n \"details\": {\n \"name\": \"A dummy researcher\",\n \"email\": \"{{researcherEmail}}\",\n \"password\": \"{{researcherPassword}}\",\n \"roles\": [\n \"Researcher\",\n \"Guest\"\n ]\n }\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/admin/users/newUser", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "users", - "newUser" - ] - } - }, - "response": [] - }, - { - "name": "Try to create same researcher user", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check response status\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.status).to.eql(false);", - "});", - "", - "pm.test(\"Check response message\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).to.eql(\"Username already exists\");", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/users" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"username\": \"{{researcherUsername}}\",\n \"details\": {\n \"name\": \"A dummy researcher\",\n \"email\": \"{{researcherEmail}}\",\n \"password\": \"`{{ researcherPassword }}\",\n \"roles\": [\n \"Researcher\",\n \"Guest\"\n ]\n }\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/admin/users/newUser", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "users", - "newUser" - ] - } - }, - "response": [] - }, - { - "name": "Get list of users and find new researcher user", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check response is an array\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.be.an.instanceof(Array);", - "});", - "", - "pm.test(\"Check researcheruser is in the array\", function () {", - " var jsonData = pm.response.json();", - " var found = false;", - " for(var i=0; i< jsonData.length; i++) {", - " if(_.startsWith(jsonData[i].username, \"researcheruser\")) {", - " found = true;", - " postman.setEnvironmentVariable(\"researcherUserId\", jsonData[i].id);", - " break;", - " }", - " }", - " pm.expect(found).to.eq(true);", - " ", - "});", - "", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "http://localhost:1500/default/rdmp/admin/users" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/admin/users/get", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "users", - "get" - ] - } - }, - "response": [] - }, - { - "name": "Generate API key for new researcher user", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check response status\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.status).to.eql(true);", - "});", - "", - "pm.test(\"Check for API Key\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('message');", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/users" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{ \"userid\": \"{{researcherUserId}}\"}" - }, - "url": { - "raw": "{{host}}/default/rdmp/admin/users/genKey", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "users", - "genKey" - ] - } - }, - "response": [] - }, - { - "name": "Update researcher user's password", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check response status\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.status).to.eql(true);", - "});", - "", - "pm.test(\"Check response message\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).to.eql(\"User updated successfully\");", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/users" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"userid\": \"{{researcherUserId}}\",\n \"details\": {\n \"name\": \"A dummy researcher\",\n \"email\": \"{{researcherEmail}}\",\n \"password\": \"{{researcherPassword}}\",\n \"roles\": [\n \"Researcher\",\n \"Guest\"\n ]\n }\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/admin/users/update", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "users", - "update" - ] - } - }, - "response": [] - }, - { - "name": "Add librarian role to researcher user from the user management page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check response status\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.status).to.eql(true);", - "});", - "", - "pm.test(\"Check response message\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).to.eql(\"User updated successfully\");", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/users" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"userid\": \"{{researcherUserId}}\",\n \"details\": {\n \"name\": \"A dummy researcher\",\n \"email\": \"{{researcherEmail}}\",\n \"password\": \"{{researcherPassword}}\",\n \"roles\": [\n \"Librarians\",\n \"Researcher\",\n \"Guest\"\n ]\n }\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/admin/users/update", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "users", - "update" - ] - } - }, - "response": [] - }, - { - "name": "Get list of users and roles", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "pm.test(\"Check that researcher user has guest, researcher and librarian roles\", function(){", - " var researchUserRoles = [];", - " var jsonData = pm.response.json();", - " for(var i=0; i< jsonData.length; i++) {", - " var role = jsonData[i];", - " for(var j=0; j< role.users.length; j++) {", - " if(role.users[j].id == pm.environment.get(\"researcherUserId\")) {", - " researchUserRoles.push(role.name);", - " }", - " }", - " }", - " ", - " pm.expect(researchUserRoles).to.contain(\"Researcher\");", - " pm.expect(researchUserRoles).to.contain(\"Guest\");", - " pm.expect(researchUserRoles).to.contain(\"Librarians\");", - " pm.expect(researchUserRoles).to.not.contain(\"Admin\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/roles" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/admin/roles/get", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "roles", - "get" - ] - } - }, - "response": [] - }, - { - "name": "Remove Librarian role from Researcher User", - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/roles" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"userid\": \"{{researcherUserId}}\",\n \"roles\": [\n \"Researcher\",\n \"Guest\"\n ]\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/admin/roles/user", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "roles", - "user" - ] - } - }, - "response": [] - }, - { - "name": "Get list of users and roles - Check researcher user no longer has librarian role", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "pm.test(\"Check that researcher user has guest and researcher roles\", function(){", - " var researchUserRoles = [];", - " var jsonData = pm.response.json();", - " for(var i=0; i< jsonData.length; i++) {", - " var role = jsonData[i];", - " for(var j=0; j< role.users.length; j++) {", - " if(role.users[j].id == pm.environment.get(\"researcherUserId\")) {", - " researchUserRoles.push(role.name);", - " }", - " }", - " }", - " ", - " pm.expect(researchUserRoles).to.contain(\"Researcher\");", - " pm.expect(researchUserRoles).to.contain(\"Guest\");", - " pm.expect(researchUserRoles).to.not.contain(\"Librarians\");", - " pm.expect(researchUserRoles).to.not.contain(\"Admin\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/admin/roles" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/admin/roles/get", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "roles", - "get" - ] - } - }, - "response": [] - }, - { - "name": "Export RDMP Data", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "const parse = require('csv-parse/lib/sync'),", - " parsedCSV = parse(responseBody, {relax_column_count: true});", - " ", - "pm.test(\"Correct CSV response\", function () {", - " // Check that we have at least 2 two (header + row)", - " pm.expect(parsedCSV).to.have.length.above(1);", - " ", - "});", - "", - "pm.test(\"CSV contains Test record\", function () {", - " var found = false;", - " const head = parsedCSV.shift(),", - " title = head.indexOf('redboxOid');", - " parsedCSV.forEach(function(row) {", - " if(row[title] == pm.environment.get('dmpOid')) {", - " found = true;", - " }", - " });", - " ", - " pm.expect(found).to.eq(true);", - " ", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/export" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/export/record/download/csv?before=&after=&recType=rdmp", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "export", - "record", - "download", - "csv" - ], - "query": [ - { - "key": "before", - "value": "" - }, - { - "key": "after", - "value": "" - }, - { - "key": "recType", - "value": "rdmp" - } - ] - } - }, - "response": [] - }, - { - "name": "Create data record via form", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"dataRecordOid\", jsonData.oid);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}{/default/rdmp/record/dataRecord/edit" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"rdmpGetter\": \"\",\n \"\": {},\n \"rdmp\": {\n \"oid\": \"{{dmpOid}}\",\n \"title\": \"Andrew's Postman test - Updated from form AJAX call\"\n },\n \"aim_project_name\": \"Andrew's Postman test - Updated from form AJAX call\",\n \"foaf:fundedBy_foaf:Agent\": [\n \"\"\n ],\n \"dc:coverage_vivo:DateTimeInterval_vivo:end\": \"\",\n \"foaf:fundedBy_vivo:Grant\": [\n \"\"\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\",\n \"orcid\": null\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"username\": \"\",\n \"role\": \"Contributors\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"contributor_supervisor\": {\n \"text_full_name\": null,\n \"full_name_honorific\": \"\",\n \"email\": null,\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\",\n \"orcid\": null\n },\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"redbox:retentionPeriod_dc:date_skos:note\": \"\",\n \"disposalDate\": \"\",\n \"related_publications\": [\n {\n \"related_url\": \"\",\n \"related_title\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"dataLocations\": [],\n \"software_equipment\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/recordmeta/dataRecord", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "recordmeta", - "dataRecord" - ] - } - }, - "response": [] - }, - { - "name": "First Phase of attachment upload", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - " var location = postman.getResponseHeader(\"Location\");", - " postman.setEnvironmentVariable(\"attachmentLocation\", location );", - " postman.setEnvironmentVariable(\"attachmentId\", location.split(\"/\")[8] );", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Upload-Length", - "value": "194397" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Tus-Resumable", - "value": "1.0.0" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Upload-Metadata", - "value": "name U2NyZWVuIFNob3QgMjAxOC0xMS0yNiBhdCAyLjM0LjI2IHBtLnBuZw==,type aW1hZ2UvcG5n" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Accept", - "value": "*/*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/x-www-form-urlencoded", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/{{dataRecordOid}}/attach", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "{{dataRecordOid}}", - "attach" - ] - } - }, - "response": [] - }, - { - "name": "Second Phase of attachment upload", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 204\", function () {", - " pm.response.to.have.status(204);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PATCH", - "header": [ - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Tus-Resumable", - "value": "1.0.0" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/offset+octet-stream", - "type": "text" - }, - { - "key": "Accept", - "value": "*/*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/edit/b869b4fae83a1f01082465d165d868a8" - }, - { - "key": "Upload-Offset", - "value": "0" - } - ], - "body": { - "mode": "file", - "file": { - "src": "test/postman/attachment.png" - } - }, - "url": { - "raw": "http:{{attachmentLocation}}", - "host": [ - "http" - ], - "port": "{{attachmentLocation}}" - } - }, - "response": [] - }, - { - "name": "Save attachment on Data Record", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/edit/{{dataRecordOid}}" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"rdmpGetter\": \"\",\n \"\": {},\n \"rdmp\": {\n \"oid\": \"{{dmpOid}}\",\n \"title\": \"Andrew's Postman test - Updated from form AJAX call\"\n },\n \"aim_project_name\": \"Andrew's Postman test - Updated from form AJAX call\",\n \"foaf:fundedBy_foaf:Agent\": [\n \"\"\n ],\n \"dc:coverage_vivo:DateTimeInterval_vivo:end\": \"\",\n \"foaf:fundedBy_vivo:Grant\": [\n \"\"\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\",\n \"orcid\": null\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Contributors\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"contributor_supervisor\": {\n \"text_full_name\": \"\",\n \"full_name_honorific\": \"\",\n \"email\": \"\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\",\n \"orcid\": null\n },\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"redbox:retentionPeriod_dc:date_skos:note\": \"\",\n \"disposalDate\": \"\",\n \"related_publications\": [\n {\n \"related_url\": \"\",\n \"related_title\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"dataLocations\": [\n {\n \"type\": \"attachment\",\n \"location\": \"{{dataRecordOid}}/attach/{{attachmentId}}\",\n \"mimeType\": \"image/png\",\n \"name\": \"Screen Shot 2018-11-26 at 3.39.48 pm.png\",\n \"fileId\": \"{{attachmentId}}\",\n \"uploadUrl\": \"http:{{attachmentLocation}}\"\n }\n ],\n \"software_equipment\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/recordmeta/{{dataRecordOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "recordmeta", - "{{dataRecordOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Download attachment", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "http:{{attachmentLocation}}", - "host": [ - "http" - ], - "port": "{{attachmentLocation}}" - } - }, - "response": [] - }, - { - "name": "Get all Record Types Info", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Reponse is an array with more than one result\", function () {", - " ", - "});", - "", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/type/", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "type", - "" - ] - } - }, - "response": [] - }, - { - "name": "Get DataRecord Type info", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Response is correct package type\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.packageType).to.eql(\"dataRecord\");", - "});", - "", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/type/dataRecord", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "type", - "dataRecord" - ] - } - }, - "response": [] - }, - { - "name": "Get DataPublication Workflow Steps", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "pm.test(\"Response contains 5 steps\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.length).to.eql(5);", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/wfSteps/dataPublication", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "wfSteps", - "dataPublication" - ] - } - }, - "response": [] - }, - { - "name": "Create data publication", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"dataPublicationOid\", jsonData.oid);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/dataPublication/edit" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"dataRecordGetter\": \"\",\n \"\": {},\n \"dataRecord\": {\n \"oid\": \"{{dataRecordOid}}\",\n \"title\": \"A Data record\"\n },\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"foaf:fundedBy_foaf:Agent\": [\n {}\n ],\n \"foaf:fundedBy_vivo:Grant\": [\n {}\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"timePeriod\": \"\",\n \"geolocations\": [\n \"\"\n ],\n \"geospatial\": {},\n \"accessRightsToggle\": \"\",\n \"dataLocations\": [\n {\n \"type\": \"attachment\",\n \"location\": \"b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"mimeType\": \"image/png\",\n \"name\": \"Screen Shot 2018-11-26 at 3.39.48 pm.png\",\n \"fileId\": \"d3de61376e5bc93c814607ee604ebac5\",\n \"uploadUrl\": \"http://localhost:1500/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"selected\": true\n }\n ],\n \"dataLicensingAccess_manager\": \"Prof Paul Gleeson\",\n \"dc:accessRights\": \"Open\",\n \"accessRights_url\": \"\",\n \"related_publications\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_websites\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_metadata\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_data\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_services\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"license_identifier\": \"\",\n \"license_notes\": \"\",\n \"license_other_url\": \"\",\n \"license_statement\": \"Copyright ReDBox Research Data 2018\",\n \"license_statement_url\": \"\",\n \"citation_doi\": \"\",\n \"requestIdentifier\": [],\n \"citation_title\": \"A Data Record\",\n \"creators\": [\n {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"role\": \"Chief Investigator\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"Zweinstein\",\n \"given_name\": \"Alberto\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Data manager\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Contributors\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": null,\n \"email\": null,\n \"role\": \"Supervisor\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"\",\n \"given_name\": \"\"\n }\n ],\n \"citation_publisher\": \"ReDBox Research Data\",\n \"citation_url\": \"\",\n \"citation_publication_date\": \"\",\n \"citation_generated\": \"Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}\",\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"Prof\",\n \"family_name\": \"Paul Gleeson\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"Paul Gleeson, Prof\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_supervisor\": {\n \"text_full_name\": \"\",\n \"full_name_honorific\": \"\",\n \"email\": \"\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\"\n },\n \"embargoByDate\": \"\",\n \"embargoUntil\": null,\n \"embargoNote\": \"\",\n \"reviewerNote\": \"\",\n \"ckanLocation\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/recordmeta/dataPublication", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "recordmeta", - "dataPublication" - ] - } - }, - "response": [] - }, - { - "name": "Migrate data publication to reviewing", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/edit/49a33460c794498a56fa29ed08567cc4" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"dataRecordGetter\": \"\",\n \"\": {},\n \"dataRecord\": {\n \"oid\": \"{{dataRecordOid}}\",\n \"title\": \"A Data record\"\n },\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"foaf:fundedBy_foaf:Agent\": [\n {}\n ],\n \"foaf:fundedBy_vivo:Grant\": [\n {}\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"timePeriod\": \"\",\n \"geolocations\": [\n \"\"\n ],\n \"geospatial\": {},\n \"accessRightsToggle\": \"\",\n \"dataLocations\": [\n {\n \"type\": \"attachment\",\n \"location\": \"b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"mimeType\": \"image/png\",\n \"name\": \"Screen Shot 2018-11-26 at 3.39.48 pm.png\",\n \"fileId\": \"d3de61376e5bc93c814607ee604ebac5\",\n \"uploadUrl\": \"http://localhost:1500/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"selected\": true\n }\n ],\n \"dataLicensingAccess_manager\": \"Prof Paul Gleeson\",\n \"dc:accessRights\": \"Open\",\n \"accessRights_url\": \"\",\n \"related_publications\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_websites\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_metadata\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_data\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_services\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"license_identifier\": \"\",\n \"license_notes\": \"\",\n \"license_other_url\": \"\",\n \"license_statement\": \"Copyright ReDBox Research Data 2018\",\n \"license_statement_url\": \"\",\n \"citation_doi\": \"\",\n \"requestIdentifier\": [],\n \"citation_title\": \"A Data Record\",\n \"creators\": [\n {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"role\": \"Chief Investigator\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"Zweinstein\",\n \"given_name\": \"Alberto\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Data manager\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Contributors\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": null,\n \"email\": null,\n \"role\": \"Supervisor\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"\",\n \"given_name\": \"\"\n }\n ],\n \"citation_publisher\": \"ReDBox Research Data\",\n \"citation_url\": \"\",\n \"citation_publication_date\": \"\",\n \"citation_generated\": \"Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}\",\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"Prof\",\n \"family_name\": \"Paul Gleeson\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"Paul Gleeson, Prof\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_supervisor\": {\n \"text_full_name\": \"\",\n \"full_name_honorific\": \"\",\n \"email\": \"\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\"\n },\n \"embargoByDate\": \"\",\n \"embargoUntil\": null,\n \"embargoNote\": \"\",\n \"reviewerNote\": \"\",\n \"ckanLocation\": \"\"\n}" - }, - "url": { - "raw": "http://localhost:1500/default/rdmp/recordmeta/{{dataPublicationOid}}?targetStep=reviewing", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "1500", - "path": [ - "default", - "rdmp", - "recordmeta", - "{{dataPublicationOid}}" - ], - "query": [ - { - "key": "targetStep", - "value": "reviewing" - } - ] - } - }, - "response": [] - }, - { - "name": "Search Index", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has record array\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property(\"records\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/search/rdmp/?searchStr=Andrew&facetNames=grant_number_name,finalKeywords,workflow_stageLabel", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "search", - "rdmp", - "" - ], - "query": [ - { - "key": "searchStr", - "value": "Andrew" - }, - { - "key": "facetNames", - "value": "grant_number_name,finalKeywords,workflow_stageLabel" - } - ] - } - }, - "response": [] - }, - { - "name": "Report", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "// pm.test(\"Has items array\", function () {", - "// var jsonData = pm.response.json();", - "// pm.expect(jsonData).to.have.property(\"items\");", - "// });" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/admin/getReportResults?name=rdmpRecords", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "getReportResults" - ], - "query": [ - { - "key": "name", - "value": "rdmpRecords" - } - ] - } - }, - "response": [ - { - "name": "Report", - "originalRequest": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/admin/getReportResults?name=rdmpRecords&start=0&rows=10&dateObjectModifiedRange_fromDate=2021-04-30T14:00:00Z&dateObjectModifiedRange_toDate=2021-05-30T14:00:00Z", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "getReportResults" - ], - "query": [ - { - "key": "name", - "value": "rdmpRecords" - }, - { - "key": "start", - "value": "0" - }, - { - "key": "rows", - "value": "10" - }, - { - "key": "dateObjectModifiedRange_fromDate", - "value": "2021-04-30T14:00:00Z" - }, - { - "key": "dateObjectModifiedRange_toDate", - "value": "2021-05-30T14:00:00Z" - } - ] - } - }, - "_postman_previewlanguage": "Text", - "header": [], - "cookie": [], - "body": "" - } - ] - }, - { - "name": "Delete the created data record", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "http://localhost:1500/default/rdmp/record/edit/ee3a12b7a95dd42619ebe16ecd2461f9" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/delete/{{dataRecordOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "delete", - "{{dataRecordOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Get App Config Form - System Messages", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "pm.test(\"Response contains model attribute\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.model).is.not.null;", - "});", - "", - "pm.test(\"Response contains schema attribute\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.schema).is.not.null;", - "});", - "", - "pm.test(\"Response contains fieldOrder attribute\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.fieldOrder).is.not.null;", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/appconfig/form/systemMessage", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "appconfig", - "form", - "systemMessage" - ] - } - }, - "response": [] - }, - { - "name": "Save App Config - System Messages", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "pm.test(\"Enabled value in response is true\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.enabled).is.true;", - "});", - "", - "pm.test(\"title value in response is The new title\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.title).to.eq(\"The new title\");", - "});", - "", - "pm.test(\"message value in response is The new message\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).to.eq(\"The new message\");", - "});", - "", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"enabled\": true,\n \"title\": \"The new title\",\n \"message\": \"The new message\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{host}}/default/rdmp/appconfig/form/systemMessage", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "appconfig", - "form", - "systemMessage" - ] - } - }, - "response": [] - }, - { - "name": "Get App Config View - System Messages", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "pm.test(\"HTML returned correctly sets the configKey in the app-config tag\", function () {", - " var responseBody = pm.response.text();", - " pm.expect(responseBody).to.include('');", - "});" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Content-Type", - "value": "application/json;charset=utf-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/search?q=Record" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Cache-Control", - "value": "no-cache" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/admin/appconfig/edit/systemMessage", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "admin", - "appconfig", - "edit", - "systemMessage" - ] - } - }, - "response": [] - }, - { - "name": "Logout Admin User", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Upgrade-Insecure-Requests", - "value": "1" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Accept", - "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/researcher/home" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/user/logout", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "user", - "logout" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Guest User Tests", - "item": [ - { - "name": "Get view form config for RDMP - Unauthorised", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 403\", function () {", - " pm.response.to.have.status(403);", - "});", - "", - "pm.test(\"Message is access denied\", function () {", - " var jsonData = pm.response.json();", - " ", - " pm.expect(jsonData.message).to.eql(\"Access Denied\");", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "X-Source", - "value": "jsclient", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*", - "type": "text" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/record/form/auto/{{dmpOid}}?edit=false", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "record", - "form", - "auto", - "{{dmpOid}}" - ], - "query": [ - { - "key": "edit", - "value": "false" - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Researcher User Tests", - "item": [ - { - "name": "Login via Internal authentication using researcheruser with invalid password", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "postman.setGlobalVariable(\"cookie\",postman.getResponseHeader(\"set-cookie\") );", - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Message is incorrect username/password\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.message).to.eql(\"Incorrect username/password\");", - "});", - "", - "pm.test(\"User is false\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData.user).to.eql(false);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/user/login" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"username\": \"{{researcherUsername}}\",\n \"password\": \"notthepassword\",\n \"branding\": \"default\",\n \"portal\": \"rdmp\"\n}" - }, - "url": { - "raw": "http://localhost:1500/user/login_local", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "1500", - "path": [ - "user", - "login_local" - ] - } - }, - "response": [] - }, - { - "name": "Login via Internal authentication using researcher data", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "postman.setGlobalVariable(\"cookie\",postman.getResponseHeader(\"set-cookie\") );", - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Check that we have logged in correctly.\", function () {", - " var jsonData = pm.response.json();", - " var researcherUsername = pm.environment.get(\"researcherUsername\");", - " pm.expect(jsonData.user.username).to.eql(researcherUsername);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/user/login" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"username\": \"{{researcherUsername}}\",\n \"password\": \"{{researcherPassword}}\",\n \"branding\": \"default\",\n \"portal\": \"rdmp\"\n}" - }, - "url": { - "raw": "http://localhost:1500/user/login_local", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "1500", - "path": [ - "user", - "login_local" - ] - } - }, - "response": [] - }, - { - "name": "Create data record via form", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"dataRecordOid\", jsonData.oid);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}{/default/rdmp/record/dataRecord/edit" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"rdmpGetter\": \"\",\n \"\": {},\n \"rdmp\": {\n \"oid\": \"{{dmpOid}}\",\n \"title\": \"Andrew's Postman test - Updated from form AJAX call\"\n },\n \"aim_project_name\": \"Andrew's Postman test - Updated from form AJAX call\",\n \"foaf:fundedBy_foaf:Agent\": [\n \"\"\n ],\n \"dc:coverage_vivo:DateTimeInterval_vivo:end\": \"\",\n \"foaf:fundedBy_vivo:Grant\": [\n \"\"\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"title\": \"A Data record - researcher\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\",\n \"orcid\": null\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributors\": [\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"username\": \"\",\n \"role\": \"Contributors\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n }\n ],\n \"contributor_supervisor\": {\n \"text_full_name\": null,\n \"full_name_honorific\": \"\",\n \"email\": null,\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\",\n \"orcid\": null\n },\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"redbox:retentionPeriod_dc:date\": \"1year\",\n \"redbox:retentionPeriod_dc:date_skos:note\": \"\",\n \"disposalDate\": \"\",\n \"related_publications\": [\n {\n \"related_url\": \"\",\n \"related_title\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"dataLocations\": [],\n \"software_equipment\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/recordmeta/dataRecord", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "recordmeta", - "dataRecord" - ] - } - }, - "response": [] - }, - { - "name": "Create data publication", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - " postman.setEnvironmentVariable(\"dataPublicationOid\", jsonData.oid);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "X-CSRF-Token", - "value": "" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/dataPublication/edit" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"dataRecordGetter\": \"\",\n \"\": {},\n \"dataRecord\": {\n \"oid\": \"{{dataRecordOid}}\",\n \"title\": \"A Data record\"\n },\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"foaf:fundedBy_foaf:Agent\": [\n {}\n ],\n \"foaf:fundedBy_vivo:Grant\": [\n {}\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"timePeriod\": \"\",\n \"geolocations\": [\n \"\"\n ],\n \"geospatial\": {},\n \"accessRightsToggle\": \"\",\n \"dataLocations\": [\n {\n \"type\": \"attachment\",\n \"location\": \"b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"mimeType\": \"image/png\",\n \"name\": \"Screen Shot 2018-11-26 at 3.39.48 pm.png\",\n \"fileId\": \"d3de61376e5bc93c814607ee604ebac5\",\n \"uploadUrl\": \"http://localhost:1500/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"selected\": true\n }\n ],\n \"dataLicensingAccess_manager\": \"Prof Paul Gleeson\",\n \"dc:accessRights\": \"Open\",\n \"accessRights_url\": \"\",\n \"related_publications\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_websites\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_metadata\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_data\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_services\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"license_identifier\": \"\",\n \"license_notes\": \"\",\n \"license_other_url\": \"\",\n \"license_statement\": \"Copyright ReDBox Research Data 2018\",\n \"license_statement_url\": \"\",\n \"citation_doi\": \"\",\n \"requestIdentifier\": [],\n \"citation_title\": \"A Data Record\",\n \"creators\": [\n {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"role\": \"Chief Investigator\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"Zweinstein\",\n \"given_name\": \"Alberto\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Data manager\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Contributors\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": null,\n \"email\": null,\n \"role\": \"Supervisor\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"\",\n \"given_name\": \"\"\n }\n ],\n \"citation_publisher\": \"ReDBox Research Data\",\n \"citation_url\": \"\",\n \"citation_publication_date\": \"\",\n \"citation_generated\": \"Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}\",\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"Prof\",\n \"family_name\": \"Paul Gleeson\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"Paul Gleeson, Prof\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_supervisor\": {\n \"text_full_name\": \"\",\n \"full_name_honorific\": \"\",\n \"email\": \"\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\"\n },\n \"embargoByDate\": \"\",\n \"embargoUntil\": null,\n \"embargoNote\": \"\",\n \"reviewerNote\": \"\",\n \"ckanLocation\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/recordmeta/dataPublication", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "recordmeta", - "dataPublication" - ] - } - }, - "response": [] - }, - { - "name": "Migrate data publication to reviewing", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Test oid exists\", function () {", - " var jsonData = pm.response.json();", - " pm.expect(jsonData).to.have.property('oid');", - "});", - "", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "{{host}}" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/record/edit/49a33460c794498a56fa29ed08567cc4" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - }, - { - "key": "Connection", - "value": "keep-alive" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"dataRecordGetter\": \"\",\n \"\": {},\n \"dataRecord\": {\n \"oid\": \"{{dataRecordOid}}\",\n \"title\": \"A Data record\"\n },\n \"title\": \"A Data record\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"foaf:fundedBy_foaf:Agent\": [\n {}\n ],\n \"foaf:fundedBy_vivo:Grant\": [\n {}\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"timePeriod\": \"\",\n \"geolocations\": [\n \"\"\n ],\n \"geospatial\": {},\n \"accessRightsToggle\": \"\",\n \"dataLocations\": [\n {\n \"type\": \"attachment\",\n \"location\": \"b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"mimeType\": \"image/png\",\n \"name\": \"Screen Shot 2018-11-26 at 3.39.48 pm.png\",\n \"fileId\": \"d3de61376e5bc93c814607ee604ebac5\",\n \"uploadUrl\": \"http://localhost:1500/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"selected\": true\n }\n ],\n \"dataLicensingAccess_manager\": \"Prof Paul Gleeson\",\n \"dc:accessRights\": \"Open\",\n \"accessRights_url\": \"\",\n \"related_publications\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_websites\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_metadata\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_data\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_services\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"license_identifier\": \"\",\n \"license_notes\": \"\",\n \"license_other_url\": \"\",\n \"license_statement\": \"Copyright ReDBox Research Data 2018\",\n \"license_statement_url\": \"\",\n \"citation_doi\": \"\",\n \"requestIdentifier\": [],\n \"citation_title\": \"A Data Record\",\n \"creators\": [\n {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"role\": \"Chief Investigator\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"Zweinstein\",\n \"given_name\": \"Alberto\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Data manager\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Contributors\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": null,\n \"email\": null,\n \"role\": \"Supervisor\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"\",\n \"given_name\": \"\"\n }\n ],\n \"citation_publisher\": \"ReDBox Research Data\",\n \"citation_url\": \"\",\n \"citation_publication_date\": \"\",\n \"citation_generated\": \"Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}\",\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"Prof\",\n \"family_name\": \"Paul Gleeson\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"Paul Gleeson, Prof\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_supervisor\": {\n \"text_full_name\": \"\",\n \"full_name_honorific\": \"\",\n \"email\": \"\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\"\n },\n \"embargoByDate\": \"\",\n \"embargoUntil\": null,\n \"embargoNote\": \"\",\n \"reviewerNote\": \"\",\n \"ckanLocation\": \"\"\n}" - }, - "url": { - "raw": "http://localhost:1500/default/rdmp/recordmeta/{{dataPublicationOid}}?targetStep=reviewing", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "1500", - "path": [ - "default", - "rdmp", - "recordmeta", - "{{dataPublicationOid}}" - ], - "query": [ - { - "key": "targetStep", - "value": "reviewing" - } - ] - } - }, - "response": [] - }, - { - "name": "Update data publication after in review", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "//Record is now in review so the researcher should no longer be able to edit the record", - "pm.test(\"Status code is 403\", function () {", - " pm.response.to.have.status(403);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "PUT", - "header": [ - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Origin", - "value": "http://localhost:1500" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "X-Source", - "value": "jsclient" - }, - { - "key": "Content-Type", - "value": "application/json;charset=UTF-8" - }, - { - "key": "Accept", - "value": "application/json, text/plain, */*" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "http://localhost:1500/default/rdmp/record/edit/{{dmpOid}}" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Cookie", - "value": "{{cookie}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"parameterRetriever\": \"\",\n \"dataRecordGetter\": \"\",\n \"\": {},\n \"dataRecord\": {\n \"oid\": \"{{dataRecordOid}}\",\n \"title\": \"A Data record\"\n },\n \"title\": \"A Data record - changed\",\n \"description\": \"Data record\",\n \"datatype\": \"collection\",\n \"finalKeywords\": [\n \"270199\",\n \"Golgi apparatus\",\n \"endocytosis\",\n \"membrane transport\",\n \"protein trafficking\",\n \"secretion\",\n \"HIV-AIDS\",\n \"bacterial pathogen\",\n \"hormone secretion\",\n \"immune development\",\n \"lysosomal storage disorder\"\n ],\n \"foaf:fundedBy_foaf:Agent\": [\n {}\n ],\n \"foaf:fundedBy_vivo:Grant\": [\n {}\n ],\n \"dc:subject_anzsrc:for\": [\n {\n \"name\": \"01 - MATHEMATICAL SCIENCES\",\n \"label\": \"MATHEMATICAL SCIENCES\",\n \"notation\": \"01\"\n }\n ],\n \"dc:subject_anzsrc:seo\": [],\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"timePeriod\": \"\",\n \"geolocations\": [\n \"\"\n ],\n \"geospatial\": {},\n \"accessRightsToggle\": \"\",\n \"dataLocations\": [\n {\n \"type\": \"attachment\",\n \"location\": \"b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"mimeType\": \"image/png\",\n \"name\": \"Screen Shot 2018-11-26 at 3.39.48 pm.png\",\n \"fileId\": \"d3de61376e5bc93c814607ee604ebac5\",\n \"uploadUrl\": \"http://localhost:1500/default/rdmp/record/b869b4fae83a1f01082465d165d868a8/attach/d3de61376e5bc93c814607ee604ebac5\",\n \"selected\": true\n }\n ],\n \"dataLicensingAccess_manager\": \"Prof Paul Gleeson\",\n \"dc:accessRights\": \"Open\",\n \"accessRights_url\": \"\",\n \"related_publications\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_websites\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_metadata\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_data\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"related_services\": [\n {\n \"related_title\": \"\",\n \"related_url\": \"\",\n \"related_notes\": \"\"\n }\n ],\n \"license_identifier\": \"\",\n \"license_notes\": \"\",\n \"license_other_url\": \"\",\n \"license_statement\": \"Copyright ReDBox Research Data 2018\",\n \"license_statement_url\": \"\",\n \"citation_doi\": \"\",\n \"requestIdentifier\": [],\n \"citation_title\": \"A Data Record\",\n \"creators\": [\n {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"role\": \"Chief Investigator\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"Zweinstein\",\n \"given_name\": \"Alberto\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Data manager\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"email\": \"notAReal@email.edu.au\",\n \"role\": \"Contributors\",\n \"username\": \"\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\",\n \"family_name\": \"Paul Gleeson\",\n \"given_name\": \"Prof\"\n },\n {\n \"text_full_name\": null,\n \"email\": null,\n \"role\": \"Supervisor\",\n \"username\": \"\",\n \"orcid\": \"\",\n \"family_name\": \"\",\n \"given_name\": \"\"\n }\n ],\n \"citation_publisher\": \"ReDBox Research Data\",\n \"citation_url\": \"\",\n \"citation_publication_date\": \"\",\n \"citation_generated\": \"Zweinstein, Alberto; Paul Gleeson, Prof; Paul Gleeson, Prof (Invalid date): A Data Record. ReDBox Research Data. {ID_WILL_BE_HERE}\",\n \"dataowner_name\": \"Alberto Zweinstein\",\n \"dataowner_email\": \"alberto.zweinstein@example.edu.au\",\n \"contributor_ci\": {\n \"text_full_name\": \"Alberto Zweinstein\",\n \"full_name_honorific\": \"Dr Alberto Zweinstein\",\n \"email\": \"alberto.zweinstein@example.edu.au\",\n \"given_name\": \"Alberto\",\n \"family_name\": \"Zweinstein\",\n \"honorific\": \"Dr\",\n \"full_name_family_name_first\": \"Zweinstein, Alberto\",\n \"username\": \"\",\n \"role\": \"Chief Investigator\"\n },\n \"contributor_data_manager\": {\n \"text_full_name\": \"Prof Paul Gleeson\",\n \"full_name_honorific\": \"\",\n \"email\": \"notAReal@email.edu.au\",\n \"given_name\": \"Prof\",\n \"family_name\": \"Paul Gleeson\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"Paul Gleeson, Prof\",\n \"username\": \"\",\n \"role\": \"Data manager\",\n \"orcid\": \"http://orcid.org/0000-0000-0000-000\"\n },\n \"contributor_supervisor\": {\n \"text_full_name\": \"\",\n \"full_name_honorific\": \"\",\n \"email\": \"\",\n \"given_name\": \"\",\n \"family_name\": \"\",\n \"honorific\": \"\",\n \"full_name_family_name_first\": \"\",\n \"username\": \"\",\n \"role\": \"Supervisor\"\n },\n \"embargoByDate\": \"\",\n \"embargoUntil\": null,\n \"embargoNote\": \"\",\n \"reviewerNote\": \"\",\n \"ckanLocation\": \"\"\n}" - }, - "url": { - "raw": "{{host}}/default/rdmp/recordmeta/{{dataPublicationOid}}", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "recordmeta", - "{{dataPublicationOid}}" - ] - } - }, - "response": [] - }, - { - "name": "Logout Researcher User", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Upgrade-Insecure-Requests", - "value": "1" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" - }, - { - "key": "Accept", - "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" - }, - { - "key": "Referer", - "value": "{{host}}/default/rdmp/researcher/home" - }, - { - "key": "Accept-Encoding", - "value": "gzip, deflate, br" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Cookie", - "value": "{{cookie}}" - } - ], - "url": { - "raw": "{{host}}/default/rdmp/user/logout", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "user", - "logout" - ] - } - }, - "response": [] - } - ] - } - ] - }, - { - "name": "OpenID Connect", - "item": [ - { - "name": "Load login page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " // Just loading page to get a session cookiw", - " pm.response.to.have.status(200);", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": { - "user-agent": true - }, - "followRedirects": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "http://localhost:1500/default/rdmp/user/login" - }, - { - "key": "Sec-Fetch-Dest", - "value": "document" - }, - { - "key": "Sec-Fetch-Mode", - "value": "navigate" - }, - { - "key": "Sec-Fetch-Site", - "value": "same-origin" - }, - { - "key": "Sec-Fetch-User", - "value": "?1" - }, - { - "key": "Upgrade-Insecure-Requests", - "value": "1" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36" - }, - { - "key": "sec-ch-ua", - "value": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"100\", \"Google Chrome\";v=\"100\"" - }, - { - "key": "sec-ch-ua-mobile", - "value": "?0" - }, - { - "key": "sec-ch-ua-platform", - "value": "\"macOS\"" - } - ], - "url": { - "raw": "http://localhost:1500/default/rdmp/user/login", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "1500", - "path": [ - "default", - "rdmp", - "user", - "login" - ] - } - }, - "response": [] - }, - { - "name": "Begin OIDC login", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 302\", function () {", - " pm.response.to.have.status(302);", - " postman.setEnvironmentVariable(\"kc_redir_url\", pm.response.headers.get('Location'));", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": { - "user-agent": true - }, - "followRedirects": false - }, - "request": { - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "http://localhost:1500/default/rdmp/user/login" - }, - { - "key": "Sec-Fetch-Dest", - "value": "document" - }, - { - "key": "Sec-Fetch-Mode", - "value": "navigate" - }, - { - "key": "Sec-Fetch-Site", - "value": "same-origin" - }, - { - "key": "Sec-Fetch-User", - "value": "?1" - }, - { - "key": "Upgrade-Insecure-Requests", - "value": "1" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36" - }, - { - "key": "sec-ch-ua", - "value": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"100\", \"Google Chrome\";v=\"100\"" - }, - { - "key": "sec-ch-ua-mobile", - "value": "?0" - }, - { - "key": "sec-ch-ua-platform", - "value": "\"macOS\"" - } - ], - "url": { - "raw": "http://localhost:1500/user/begin_oidc", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "1500", - "path": [ - "user", - "begin_oidc" - ] - } - }, - "response": [] - }, - { - "name": "Keycloak login page", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - " const $ = cheerio.load(pm.response.text());", - "", - " postman.setEnvironmentVariable(\"kc_login_url\", $(\"#kc-form-login\").attr('action'));", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": { - "user-agent": true - }, - "followRedirects": false - }, - "request": { - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Referer", - "value": "http://localhost:1500/default/rdmp/user/login" - }, - { - "key": "Sec-Fetch-Dest", - "value": "document" - }, - { - "key": "Sec-Fetch-Mode", - "value": "navigate" - }, - { - "key": "Sec-Fetch-Site", - "value": "same-origin" - }, - { - "key": "Sec-Fetch-User", - "value": "?1" - }, - { - "key": "Upgrade-Insecure-Requests", - "value": "1" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36" - }, - { - "key": "sec-ch-ua", - "value": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"100\", \"Google Chrome\";v=\"100\"" - }, - { - "key": "sec-ch-ua-mobile", - "value": "?0" - }, - { - "key": "sec-ch-ua-platform", - "value": "\"macOS\"" - } - ], - "url": { - "raw": "{{kc_redir_url}}", - "host": [ - "{{kc_redir_url}}" - ] - } - }, - "response": [] - }, - { - "name": "Keycloak login action", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 302\", function () {", - " pm.response.to.have.status(302);", - " postman.setEnvironmentVariable(\"rb_login_url\", pm.response.headers.get('Location'));", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "followRedirects": false - }, - "request": { - "method": "POST", - "header": [ - { - "key": "Accept", - "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Content-Type", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Origin", - "value": "null" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Upgrade-Insecure-Requests", - "value": "1" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "username", - "value": "test-researcher", - "type": "text" - }, - { - "key": "password", - "value": "password", - "type": "text" - }, - { - "key": "credentialId", - "value": "", - "type": "text" - } - ] - }, - "url": { - "raw": "{{kc_login_url}}", - "host": [ - "{{kc_login_url}}" - ] - } - }, - "response": [] - }, - { - "name": "RedBox OIDC return login", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "", - "", - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Welcome message in HTML\", function () {", - " //Testing login worked by looking for welcome message on page", - " pm.expect(pm.response.text()).to.include(\"Test Researcher\")", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" - }, - { - "key": "Accept-Language", - "value": "en-US,en;q=0.9,en-AU;q=0.8,it;q=0.7" - }, - { - "key": "Cache-Control", - "value": "no-cache" - }, - { - "key": "Connection", - "value": "keep-alive" - }, - { - "key": "Pragma", - "value": "no-cache" - }, - { - "key": "Sec-Fetch-Dest", - "value": "document" - }, - { - "key": "Sec-Fetch-Mode", - "value": "navigate" - }, - { - "key": "Sec-Fetch-Site", - "value": "cross-site" - }, - { - "key": "Sec-Fetch-User", - "value": "?1" - }, - { - "key": "Upgrade-Insecure-Requests", - "value": "1" - }, - { - "key": "User-Agent", - "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36" - } - ], - "url": { - "raw": "{{rb_login_url}}", - "host": [ - "{{rb_login_url}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "General", - "item": [ - { - "name": "Get stylesheet", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Has valid content\", function () {", - " pm.expect(pm.response.stream.toString()).to.match(/^.*@charset \"UTF-8\"/)", - "});", - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "setTimeout(function(){},30000)" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{host}}/default/rdmp/styles/style.min.css", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "styles", - "style.min.css" - ] - } - }, - "response": [] - }, - { - "name": "Get logo", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "", - "pm.test(\"Has valid content and type\", function () {", - " pm.response.to.have.header(\"Content-Type\", \"image/png\")", - " pm.expect(pm.response.size().body).to.be.greaterThan(0);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{host}}/default/rdmp/images/logo", - "host": [ - "{{host}}" - ], - "path": [ - "default", - "rdmp", - "images", - "logo" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Solr", - "item": [ - { - "name": "Start indexing", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Solr HTTP status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});", - "", - "pm.test(\"Solr reports no error\", function () {", - " pm.expect(pm.response.stream.toString()).to.include('\"status\":0')", - "});", - "", - "pm.test(\"Solr reports Query Time\", function () {", - " pm.expect(pm.response.stream.toString()).to.include('\"QTime\":')", - "});", - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "setTimeout(function(){},30000)" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{solrhost}}/solr/redbox/update/json?wt=json&add=[8d95849003df11ed8b078341db3bde98 (1738385794638282752)]", - "host": [ - "{{solrhost}}" - ], - "path": [ - "solr", - "redbox", - "update", - "json" - ], - "query": [ - { - "key": "wt", - "value": "json" - }, - { - "key": "add", - "value": "[8d95849003df11ed8b078341db3bde98 (1738385794638282752)]" - } - ] - } - }, - "response": [] - } - ] - } - ] -} \ No newline at end of file