diff --git a/.circleci/config.yml b/.circleci/config.yml index fbc92f8..817d1d9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,13 +8,15 @@ parameters: type: boolean defaults: &defaults docker: - - image: circleci/python:2.7-stretch-browsers + - image: cimg/python:3.11.0-browsers install_dependency: &install_dependency name: Installation of build and deployment dependencies. command: | + sudo apt update sudo apt install jq python3-pip - sudo pip3 install awscli --upgrade # sudo pip install docker-compose + sudo pip3 install awscli --upgrade + sudo pip3 install docker-compose install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | @@ -23,10 +25,10 @@ install_deploysuite: &install_deploysuite cp ./../buildscript/buildenv.sh . cp ./../buildscript/awsconfiguration.sh . restore_cache_settings_for_build: &restore_cache_settings_for_build - key: docker-node-modules-{{ checksum "package-lock.json" }} + key: docker-node-modules-{{ checksum "yarn.lock" }} save_cache_settings: &save_cache_settings - key: docker-node-modules-{{ checksum "package-lock.json" }} + key: docker-node-modules-{{ checksum "yarn.lock" }} paths: - node_modules @@ -95,12 +97,13 @@ jobs: - run: *install_deploysuite - run: name: 'newman test' + no_output_timeout: 30m command: | ./awsconfiguration.sh $DEPLOY_ENV source awsenvconf ./buildenv.sh -e $DEPLOY_ENV -b ${LOGICAL_ENV}-global-appvar,${LOGICAL_ENV}-${APPNAME}-qa-appvar source buildenvvar - npm i + npm install --loglevel verbose cd mock (npm run mock-challenge-api&) (NODE_ENV=test npm start&) diff --git a/Verification.md b/Verification.md index cffa15d..03ae304 100644 --- a/Verification.md +++ b/Verification.md @@ -94,4 +94,5 @@ Iteration 4/4 Then you can run `npm run test:newman:clear` to delete all testing data by above postman tests. If 'socket hang up' appears while running the `npm run test:newman`. You can increase the `WAIT_TIME` from the `default/test.js`. - Then run `npm run test:newman:clear` before calling `npm run test:newman` again. \ No newline at end of file + Then run `npm run test:newman:clear` before calling `npm run test:newman` again. + \ No newline at end of file diff --git a/app-constants.js b/app-constants.js index 3db24e1..9dc4d3b 100644 --- a/app-constants.js +++ b/app-constants.js @@ -10,7 +10,8 @@ const UserRoles = { } const ChallengeStatuses = { - Completed: 'Completed' + Completed: 'Completed', + Active: 'Active' } module.exports = { diff --git a/config/test.js b/config/test.js index 81cb802..0d5f18d 100644 --- a/config/test.js +++ b/config/test.js @@ -17,5 +17,7 @@ module.exports = { COPILOT_CREDENTIALS_PASSWORD: process.env.COPILOT_CREDENTIALS_PASSWORD || '', USER_CREDENTIALS_USERNAME: process.env.USER_CREDENTIALS_USERNAME || '', USER_CREDENTIALS_PASSWORD: process.env.USER_CREDENTIALS_PASSWORD || '', + MANAGER_CREDENTIALS_USERNAME: process.env.MANAGER_CREDENTIALS_USERNAME || '', + MANAGER_CREDENTIALS_PASSWORD: process.env.MANAGER_CREDENTIALS_PASSWORD || '', AUTOMATED_TESTING_REPORTERS_FORMAT: process.env.AUTOMATED_TESTING_REPORTERS_FORMAT || ['cli', 'html'] } diff --git a/src/services/ResourceService.js b/src/services/ResourceService.js index 199fde7..42de677 100644 --- a/src/services/ResourceService.js +++ b/src/services/ResourceService.js @@ -231,6 +231,10 @@ async function init (currentUser, challengeId, resource, isCreated) { throw new errors.BadRequestError('Cannot delete resources of a completed challenge!') } + if (_.get(challenge, 'status') !== constants.ChallengeStatuses.Active && isCreated && resource.roleId === config.SUBMITTER_RESOURCE_ROLE_ID) { + throw new errors.BadRequestError(`Cannot create submitter resource on challenge with status ${_.get(challenge, 'status')}`) + } + // Prevent from creating more than 1 submitter resources on tasks if (_.get(challenge, 'task.isTask', false) && isCreated && resource.roleId === config.SUBMITTER_RESOURCE_ROLE_ID) { const existing = await getResources(currentUser, challengeId, config.SUBMITTER_RESOURCE_ROLE_ID, null, null, 1, 1) diff --git a/test/postman/newman.js b/test/postman/newman.js index 7f029d5..bd7881e 100644 --- a/test/postman/newman.js +++ b/test/postman/newman.js @@ -183,15 +183,17 @@ async function clearTestData () { /** * Run the postman tests. */ -apiTestLib.runTests(requests, require.resolve('./resource-api.postman_collection.json'), - require.resolve('./resource-api.postman_environment.json')).then(async () => { - logger.info('newman test completed!') - await clearTestData() -}).catch(async (err) => { - logger.logFullError(err) - - // Only calling the clean up function when it is not validation error. - if (err.name !== 'ValidationError') { +clearTestData().then(() => { + apiTestLib.runTests(requests, require.resolve('./resource-api.postman_collection.json'), + require.resolve('./resource-api.postman_environment.json')).then(async () => { + logger.info('newman test completed!') await clearTestData() - } + }).catch(async (err) => { + logger.logFullError(err) + + // Only calling the clean up function when it is not validation error. + if (err.name !== 'ValidationError') { + await clearTestData() + } + }) })