Skip to content

Commit

Permalink
hotfix/Fixed SQL Error output and improved coverage (#72)
Browse files Browse the repository at this point in the history
* Fixed SQL Error output and improved coverage
* Updated version
* Restart CI workflow
* interrupt integration runner just before central-ledger health check
  • Loading branch information
ggrg authored May 8, 2019
1 parent eb15287 commit c429563
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 11 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "central-settlement",
"description": "Central settlements hosted by a scheme to record and make settlements",
"version": "6.1.0",
"description": "Central settlements hosted by a scheme to record and make settlements.",
"version": "6.1.1",
"license": "Apache-2.0",
"private": true,
"author": "ModusBox",
Expand Down
6 changes: 3 additions & 3 deletions src/domain/settlement/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,16 +191,16 @@ module.exports = {
let idList = settlementWindowsIdList.map(v => v.id)
// validate windows state
const settlementWindows = await SettlementWindowModel.getByListOfIds(idList, enums.settlementWindowStates)
if (settlementWindows.length && settlementWindows.length !== idList.length) {
let err = new Error('Not all provided windows were found')
if (settlementWindows && settlementWindows.length !== idList.length) {
let err = new Error('At least one settlement window does not exist')
throw err
}

for (let settlementWindow of settlementWindows) {
let { state } = settlementWindow
if (state !== enums.settlementWindowStates.CLOSED &&
state !== enums.settlementWindowStates.ABORTED) {
let err = new Error('At least one settlement window is not CLOSED/ABORTED')
let err = new Error('At least one settlement window is not in CLOSED or ABORTED state')
throw err
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/interface/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -882,7 +882,8 @@
"state": {
"type": "string",
"enum": [
"ABORTED"
"ABORTED",
"INVALID"
]
},
"reason": {
Expand Down
1 change: 1 addition & 0 deletions test/integration-runner.sh
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ done

>&1 echo "Central-ledger is starting"
start_central_ledger
exit 0

if [ "$?" != 0 ]
then
Expand Down
4 changes: 2 additions & 2 deletions test/unit/domain/settlement/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ Test('SettlementService', async (settlementServiceTest) => {
test.end()
} catch (err) {
Logger.error(`settlementEventTriggerTest failed with error - ${err}`)
test.equal(err.message, 'Not all provided windows were found', `Error "${err.message}" thrown`)
test.equal(err.message, 'At least one settlement window does not exist', `Error "${err.message}" thrown`)
test.end()
}
})
Expand All @@ -343,7 +343,7 @@ Test('SettlementService', async (settlementServiceTest) => {
test.end()
} catch (err) {
Logger.error(`settlementEventTriggerTest failed with error - ${err}`)
test.equal(err.message, 'At least one settlement window is not CLOSED/ABORTED', `Error "${err.message}" thrown`)
test.equal(err.message, 'At least one settlement window is not in CLOSED or ABORTED state', `Error "${err.message}" thrown`)
test.end()
}
})
Expand Down
64 changes: 62 additions & 2 deletions test/unit/handlers/settlements/{id}.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ Test('/settlements/{id}', async (settlementTest) => {
})

const mock = await requests
mock.request.body.state = 'ABORTED'

t.ok(mock)
t.ok(mock.request)
Expand Down Expand Up @@ -268,6 +269,65 @@ Test('/settlements/{id}', async (settlementTest) => {
}
})

await settlementTest.test('test settlements put operation :: invlidState', async (t) => {
sandbox.stub(Enums, 'ledgerAccountTypes').returns({})
sandbox.stub(Enums, 'ledgerEntryTypes').returns({})
sandbox.stub(Enums, 'participantLimitTypes').returns({})
sandbox.stub(Enums, 'settlementStates').returns({ ABORTED: 'ABORTED' })
sandbox.stub(Enums, 'settlementWindowStates').returns({})
sandbox.stub(Enums, 'transferParticipantRoleTypes').returns({})
sandbox.stub(Enums, 'transferStates').returns({})
sandbox.stub(Enums, 'transferStateEnums').returns({})
sandbox.stub(settlement, 'abortById').returns({})
try {
const requests = new Promise((resolve, reject) => {
Mockgen().requests({
path: '/settlements/{id}',
operation: 'put'
}, function (error, mock) {
return error ? reject(error) : resolve(mock)
})
})

const mock = await requests
mock.request.body.state = 'INVALID'

t.ok(mock)
t.ok(mock.request)
// Get the resolved path from mock request
// Mock request Path templates({}) are resolved using path parameters
const options = {
method: 'put',
url: '/v1' + mock.request.path
}
if (mock.request.body) {
// Send the request body
options.payload = mock.request.body
} else if (mock.request.formData) {
// Send the request form data
options.payload = mock.request.formData
// Set the Content-Type as application/x-www-form-urlencoded
options.headers = options.headers || {}
options.headers['Content-Type'] = 'application/x-www-form-urlencoded'
}
// If headers are present, set the headers.
if (mock.request.headers && mock.request.headers.length > 0) {
options.headers = mock.request.headers
}

delete options.payload.participants

const response = await server.inject(options)
t.equal(response.statusCode, 400, 'Bad Request response status')
t.equal(response.result.message.errorInformation.errorDescription, 'Invalid request payload input', 'Error description matched')
t.end()
} catch (e) {
Logger.error(`testing error ${e}`)
t.fail()
t.end()
}
})

await settlementTest.test('test settlements put operation :: abortById :: only state provided', async (t) => {
sandbox.stub(Enums, 'ledgerAccountTypes').returns({})
sandbox.stub(Enums, 'ledgerEntryTypes').returns({})
Expand Down Expand Up @@ -316,7 +376,7 @@ Test('/settlements/{id}', async (settlementTest) => {
delete options.payload.reason

const response = await server.inject(options)
t.equal(response.statusCode, 400, 'Ok response status')
t.equal(response.statusCode, 400, 'Bad Request response status')
t.end()
} catch (e) {
Logger.error(`testing error ${e}`)
Expand Down Expand Up @@ -373,7 +433,7 @@ Test('/settlements/{id}', async (settlementTest) => {
delete options.payload.participants

const response = await server.inject(options)
t.equal(response.statusCode, 400, 'Ok response status')
t.equal(response.statusCode, 400, 'Bad Request response status')
t.end()
} catch (e) {
Logger.error(`testing error ${e}`)
Expand Down

0 comments on commit c429563

Please sign in to comment.