@defra/forms-engine-plugin 4.0.52 → 4.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/.server/server/plugins/engine/components/PaymentField.js +2 -2
  2. package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
  3. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +14 -1
  4. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
  5. package/.server/server/plugins/engine/routes/payment-helper.d.ts +22 -0
  6. package/.server/server/plugins/engine/routes/payment-helper.js +29 -1
  7. package/.server/server/plugins/engine/routes/payment-helper.js.map +1 -1
  8. package/.server/server/plugins/engine/routes/payment-helper.test.js +27 -1
  9. package/.server/server/plugins/engine/routes/payment-helper.test.js.map +1 -1
  10. package/.server/server/plugins/engine/routes/payment.js +23 -1
  11. package/.server/server/plugins/engine/routes/payment.js.map +1 -1
  12. package/.server/server/plugins/payment/service.d.ts +4 -2
  13. package/.server/server/plugins/payment/service.js +8 -21
  14. package/.server/server/plugins/payment/service.js.map +1 -1
  15. package/.server/server/plugins/payment/service.test.js +5 -5
  16. package/.server/server/plugins/payment/service.test.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/server/plugins/engine/components/PaymentField.ts +5 -1
  19. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +84 -0
  20. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +20 -1
  21. package/src/server/plugins/engine/routes/payment-helper.js +38 -1
  22. package/src/server/plugins/engine/routes/payment-helper.test.js +44 -1
  23. package/src/server/plugins/engine/routes/payment.js +46 -1
  24. package/src/server/plugins/payment/service.js +32 -24
  25. package/src/server/plugins/payment/service.test.js +8 -2
@@ -1,6 +1,10 @@
1
1
  import { StatusCodes } from 'http-status-codes'
2
2
 
3
3
  import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
4
+ import {
5
+ buildPaymentInfo,
6
+ convertPenceToPounds
7
+ } from '~/src/server/plugins/engine/routes/payment-helper.js'
4
8
  import { get, post, postJson } from '~/src/server/services/httpService.js'
5
9
 
6
10
  const PAYMENT_BASE_URL = 'https://publicapi.payments.service.gov.uk'
@@ -35,9 +39,17 @@ export class PaymentService {
35
39
  * @param {string} description
36
40
  * @param {string} returnUrl
37
41
  * @param {string} reference
42
+ * @param {boolean} isLivePayment
38
43
  * @param {{ formId: string, slug: string }} metadata
39
44
  */
40
- async createPayment(amount, description, returnUrl, reference, metadata) {
45
+ async createPayment(
46
+ amount,
47
+ description,
48
+ returnUrl,
49
+ reference,
50
+ isLivePayment,
51
+ metadata
52
+ ) {
41
53
  const response = await this.postToPayProvider({
42
54
  amount,
43
55
  description,
@@ -48,15 +60,13 @@ export class PaymentService {
48
60
  })
49
61
 
50
62
  logger.info(
51
- {
52
- event: {
53
- category: 'payment',
54
- action: 'create-payment',
55
- outcome: 'success',
56
- reason: `amount=${amount}`,
57
- reference: response.payment_id
58
- }
59
- },
63
+ buildPaymentInfo(
64
+ 'create-payment',
65
+ 'success',
66
+ `amount=${convertPenceToPounds(amount)}`,
67
+ isLivePayment,
68
+ response.payment_id
69
+ ),
60
70
  `[payment] Created payment and user taken to enter pre-auth details for paymentId=${response.payment_id}`
61
71
  )
62
72
 
@@ -68,9 +78,10 @@ export class PaymentService {
68
78
 
69
79
  /**
70
80
  * @param {string} paymentId
81
+ * @param {boolean} isLivePayment
71
82
  * @returns {Promise<GetPaymentResponse>}
72
83
  */
73
- async getPaymentStatus(paymentId) {
84
+ async getPaymentStatus(paymentId, isLivePayment) {
74
85
  const getByType = /** @type {typeof get<GetPaymentApiResponse>} */ (get)
75
86
 
76
87
  try {
@@ -92,18 +103,15 @@ export class PaymentService {
92
103
 
93
104
  const state = response.payload.state
94
105
  logger.info(
95
- {
96
- event: {
97
- category: 'payment',
98
- action: 'get-payment-status',
99
- outcome:
100
- state.status === 'capturable' || state.status === 'success'
101
- ? 'success'
102
- : 'failure',
103
- reason: `status:${state.status} code:${state.code ?? 'N/A'} message:${state.message ?? 'N/A'}`,
104
- reference: paymentId
105
- }
106
- },
106
+ buildPaymentInfo(
107
+ 'get-payment-status',
108
+ state.status === 'capturable' || state.status === 'success'
109
+ ? 'success'
110
+ : 'failure',
111
+ `status:${state.status} code:${state.code ?? 'N/A'} message:${state.message ?? 'N/A'}`,
112
+ isLivePayment,
113
+ paymentId
114
+ ),
107
115
  `[payment] Got payment status for paymentId=${paymentId}: status=${state.status}`
108
116
  )
109
117
 
@@ -151,7 +159,7 @@ export class PaymentService {
151
159
  category: 'payment',
152
160
  action: 'capture-payment',
153
161
  outcome: 'success',
154
- reason: `amount=${amount}`,
162
+ reason: `amount=${convertPenceToPounds(amount)}`,
155
163
  reference: paymentId
156
164
  }
157
165
  },
@@ -41,6 +41,7 @@ describe('payment service', () => {
41
41
  'Payment description',
42
42
  returnUrl,
43
43
  referenceNumber,
44
+ false,
44
45
  metadata
45
46
  )
46
47
  expect(payment.paymentId).toBe('payment-id-12345')
@@ -61,6 +62,7 @@ describe('payment service', () => {
61
62
  'Payment description',
62
63
  returnUrl,
63
64
  referenceNumber,
65
+ false,
64
66
  metadata
65
67
  )
66
68
  ).rejects.toThrow('internal creation error')
@@ -90,6 +92,7 @@ describe('payment service', () => {
90
92
  'Payment description',
91
93
  returnUrl,
92
94
  referenceNumber,
95
+ false,
93
96
  metadata
94
97
  )
95
98
  ).rejects.toThrow('Failed to create payment')
@@ -119,7 +122,10 @@ describe('payment service', () => {
119
122
  error: undefined
120
123
  })
121
124
 
122
- const paymentStatus = await service.getPaymentStatus('payment-id-12345')
125
+ const paymentStatus = await service.getPaymentStatus(
126
+ 'payment-id-12345',
127
+ false
128
+ )
123
129
  expect(paymentStatus.paymentId).toBe('payment-id-12345')
124
130
  expect(paymentStatus._links.next_url?.href).toBe(
125
131
  'http://next-url-href/payment'
@@ -137,7 +143,7 @@ describe('payment service', () => {
137
143
  })
138
144
 
139
145
  await expect(() =>
140
- service.getPaymentStatus('payment-id-12345')
146
+ service.getPaymentStatus('payment-id-12345', false)
141
147
  ).rejects.toThrow('Failed to get payment status: some-error')
142
148
  })
143
149
  })