Skip to content
13 changes: 8 additions & 5 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand All @@ -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

Expand Down Expand Up @@ -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&)
Expand Down
3 changes: 2 additions & 1 deletion Verification.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Then run `npm run test:newman:clear` before calling `npm run test:newman` again.

3 changes: 2 additions & 1 deletion app-constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ const UserRoles = {
}

const ChallengeStatuses = {
Completed: 'Completed'
Completed: 'Completed',
Active: 'Active'
}

module.exports = {
Expand Down
2 changes: 2 additions & 0 deletions config/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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']
}
4 changes: 4 additions & 0 deletions src/services/ResourceService.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
22 changes: 12 additions & 10 deletions test/postman/newman.js
Original file line number Diff line number Diff line change
Expand Up @@ -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()
}
})
})