From 51557df3cb0b886b0f82cfe7ddbeb1db85cc4319 Mon Sep 17 00:00:00 2001 From: Stuart Adair <43574728+StuAA78@users.noreply.github.com> Date: Fri, 4 Dec 2020 17:56:40 +0000 Subject: [PATCH] Create add transaction endpoint (#80) This change creates the POST /v2/{regimeId}/bill-runs/{billRunId}/transactions endpoint, along with a v1 endpoint that passes the request to the 'not supported' controller. --- app/controllers/index.js | 2 + .../add_bill_run_transaction.controller.js | 9 +++ app/routes/bill_run.routes.js | 18 +++++- ...dd_bill_run_transaction.controller.test.js | 55 +++++++++++++++++++ .../presroc/bill_runs.controller.test.js | 4 +- 5 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 app/controllers/presroc/add_bill_run_transaction.controller.js create mode 100644 test/controllers/presroc/add_bill_run_transaction.controller.test.js diff --git a/app/controllers/index.js b/app/controllers/index.js index 3d6d59241..fc79555df 100644 --- a/app/controllers/index.js +++ b/app/controllers/index.js @@ -11,6 +11,7 @@ const BaseCalculateChargeController = require('./base_calculate_charge.controlle const NotSupportedController = require('./not_supported.controller') +const PresrocAddBillRunTransactionController = require('./presroc/add_bill_run_transaction.controller') const PresrocBillRunsController = require('./presroc/bill_runs.controller') const PresrocTransactionsController = require('./presroc/transactions.controller') const PresrocCalculateChargeController = require('./presroc/calculate_charge.controller') @@ -24,6 +25,7 @@ module.exports = { AuthorisedSystemsController, BaseCalculateChargeController, DatabaseController, + PresrocAddBillRunTransactionController, PresrocBillRunsController, PresrocTransactionsController, PresrocCalculateChargeController, diff --git a/app/controllers/presroc/add_bill_run_transaction.controller.js b/app/controllers/presroc/add_bill_run_transaction.controller.js new file mode 100644 index 000000000..74d37b00e --- /dev/null +++ b/app/controllers/presroc/add_bill_run_transaction.controller.js @@ -0,0 +1,9 @@ +'use strict' + +class PresrocAddBillRunTransactionController { + static async create (_req, _h) { + return 'hello, pre-sroc add bill run transaction' + } +} + +module.exports = PresrocAddBillRunTransactionController diff --git a/app/routes/bill_run.routes.js b/app/routes/bill_run.routes.js index e3286effc..76aa17948 100644 --- a/app/routes/bill_run.routes.js +++ b/app/routes/bill_run.routes.js @@ -1,6 +1,10 @@ 'use strict' -const { NotSupportedController, PresrocBillRunsController } = require('../controllers') +const { + NotSupportedController, + PresrocAddBillRunTransactionController, + PresrocBillRunsController +} = require('../controllers') const routes = [ { @@ -10,8 +14,18 @@ const routes = [ }, { method: 'POST', - path: '/v2/{regimeId}/billruns', + path: '/v2/{regimeId}/bill-runs', handler: PresrocBillRunsController.create + }, + { + method: 'POST', + path: '/v1/{regimeId}/billruns/{billRunId}/transactions', + handler: NotSupportedController.index + }, + { + method: 'POST', + path: '/v2/{regimeId}/bill-runs/{billRunId}/transactions', + handler: PresrocAddBillRunTransactionController.create } ] diff --git a/test/controllers/presroc/add_bill_run_transaction.controller.test.js b/test/controllers/presroc/add_bill_run_transaction.controller.test.js new file mode 100644 index 000000000..39054db7c --- /dev/null +++ b/test/controllers/presroc/add_bill_run_transaction.controller.test.js @@ -0,0 +1,55 @@ +'use strict' + +// Test framework dependencies +const Lab = require('@hapi/lab') +const Code = require('@hapi/code') +const Sinon = require('sinon') + +const { describe, it, before, after } = exports.lab = Lab.script() +const { expect } = Code + +// For running our service +const { deployment } = require('../../../server') + +// Test helpers +const { AuthorisationHelper } = require('../../support/helpers') + +// Things we need to stub +const JsonWebToken = require('jsonwebtoken') + +describe('Presroc Add Bill Run Transaction controller', () => { + const clientID = '1234546789' + const billRunId = 'b976d8e4-3644-11eb-adc1-0242ac120002' + let server + let authToken + + before(async () => { + server = await deployment() + authToken = AuthorisationHelper.nonAdminToken(clientID) + + Sinon + .stub(JsonWebToken, 'verify') + .returns(AuthorisationHelper.decodeToken(authToken)) + }) + + after(async () => { + Sinon.restore() + }) + + describe('Add a bill run transaction: POST /v2/{regimeId}/bill-runs/{billRunId}/transactions', () => { + const options = (token, payload) => { + return { + method: 'POST', + url: `/v2/wrls/bill-runs/${billRunId}/transactions`, + headers: { authorization: `Bearer ${token}` }, + payload: payload + } + } + + it('responds to POST request', async () => { + const response = await server.inject(options(authToken, {})) + + expect(response.statusCode).to.equal(200) + }) + }) +}) diff --git a/test/controllers/presroc/bill_runs.controller.test.js b/test/controllers/presroc/bill_runs.controller.test.js index 13905d053..a313d1a8b 100644 --- a/test/controllers/presroc/bill_runs.controller.test.js +++ b/test/controllers/presroc/bill_runs.controller.test.js @@ -42,11 +42,11 @@ describe('Presroc Bill Runs controller', () => { Sinon.restore() }) - describe('Adding an authorised system: POST /v2/{regimeId}/billruns', () => { + describe('Adding an authorised system: POST /v2/{regimeId}/bill-runs', () => { const options = (token, payload) => { return { method: 'POST', - url: '/v2/wrls/billruns', + url: '/v2/wrls/bill-runs', headers: { authorization: `Bearer ${token}` }, payload: payload }