Skip to content

Commit 034a959

Browse files
committed
Changed delete to contain receiptHandle in the payload
1 parent c902118 commit 034a959

4 files changed

Lines changed: 44 additions & 14 deletions

File tree

src/api/types.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
*/
6565

6666
/**
67-
* @typedef {{ Params: { dlq: string, receiptHandle: string }}} DeadLetterQueueAndHandleRequest
67+
* @typedef {{ Params: { dlq: string, messageId: string }, Payload: { receiptHandle: string }}} DeadLetterQueueAndHandleRequest
6868
*/
6969

7070
/**

src/models/form.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,6 @@ export const resetSaveAndExitLinkResponseSchema = Joi.object({
4949

5050
export const dqlSchema = Joi.string().valid('form-submissions', 'save-and-exit')
5151

52+
export const messageIdSchema = Joi.string()
53+
5254
export const receiptHandleSchema = Joi.string()

src/routes/admin.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Scopes, idSchema } from '@defra/forms-model'
22
import Joi from 'joi'
33

4+
import { createLogger } from '~/src/helpers/logging/logger.js'
45
import {
56
deleteDlqMessage,
67
receiveDlqMessages,
@@ -11,6 +12,7 @@ import {
1112
generateFeedbackSubmissionsFileResponseSchema,
1213
generateFormSubmissionsFileResponseSchema,
1314
magicLinkSchema,
15+
messageIdSchema,
1416
receiptHandleSchema,
1517
resetSaveAndExitLinkResponseSchema
1618
} from '~/src/models/form.js'
@@ -23,6 +25,8 @@ import {
2325

2426
const OK_RESPONSE = 200
2527

28+
const logger = createLogger()
29+
2630
export default [
2731
/**
2832
* @satisfies {ServerRoute<ResetSaveAndExit>}
@@ -170,7 +174,10 @@ export default [
170174
path: '/admin/deadletter/{dlq}/redrive',
171175
async handler(request, h) {
172176
const { params } = request
173-
await redriveDlqMessages(params.dlq)
177+
const { dlq } = params
178+
logger.info(`Redriving DLQ ${dlq}`)
179+
await redriveDlqMessages(dlq)
180+
logger.info(`Redriving DLQ ${dlq} triggered successfully`)
174181
return h.response({ message: 'success' }).code(OK_RESPONSE)
175182
},
176183
options: {
@@ -193,10 +200,14 @@ export default [
193200
*/
194201
({
195202
method: 'DELETE',
196-
path: '/admin/deadletter/{dlq}/{receiptHandle}',
203+
path: '/admin/deadletter/{dlq}/{messageId}',
197204
async handler(request, h) {
198-
const { params } = request
199-
await deleteDlqMessage(params.dlq, params.receiptHandle)
205+
const { params, payload } = request
206+
const { dlq, messageId } = params
207+
const { receiptHandle } = payload
208+
logger.info(`Deleting DLQ message ${messageId} on ${dlq}`)
209+
await deleteDlqMessage(dlq, receiptHandle)
210+
logger.info(`Deleted DLQ message ${messageId} on ${dlq}`)
200211
return h.response({ message: 'success' }).code(OK_RESPONSE)
201212
},
202213
options: {
@@ -208,9 +219,14 @@ export default [
208219
params: Joi.object()
209220
.keys({
210221
dlq: dqlSchema.required(),
222+
messageId: messageIdSchema.required()
223+
})
224+
.label('deadLetterDeleteMessageParams'),
225+
payload: Joi.object()
226+
.keys({
211227
receiptHandle: receiptHandleSchema.required()
212228
})
213-
.label('deadLetterQueueAndHandleParams')
229+
.label('deadLetterDeleteMessagePayload')
214230
}
215231
}
216232
})

src/routes/admin.test.js

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -254,30 +254,42 @@ describe('Admin route', () => {
254254
})
255255

256256
describe('DELETE', () => {
257-
test('/admin/dead-letter/save-and-exit/receiptHandle route returns 200', async () => {
257+
test('/admin/dead-letter/save-and-exit/message-id route returns 200', async () => {
258258
const response = await server.inject({
259259
method: 'DELETE',
260-
url: '/admin/deadletter/save-and-exit/receipt-handle',
261-
auth: authSuperadmin
260+
url: '/admin/deadletter/save-and-exit/message-id',
261+
auth: authSuperadmin,
262+
payload: {
263+
receiptHandle: 'receipt-handle'
264+
}
262265
})
263266

264267
expect(response.statusCode).toEqual(okStatusCode)
265268
expect(response.headers['content-type']).toContain(jsonContentType)
266269
expect(response.result).toEqual({ message: 'success' })
267-
expect(deleteDlqMessage).toHaveBeenCalled()
270+
expect(deleteDlqMessage).toHaveBeenCalledWith(
271+
'save-and-exit',
272+
'receipt-handle'
273+
)
268274
})
269275

270-
test('/admin/dead-letter/form-submissions/receiptHandle route returns 200', async () => {
276+
test('/admin/dead-letter/form-submissions/message-id route returns 200', async () => {
271277
const response = await server.inject({
272278
method: 'DELETE',
273-
url: '/admin/deadletter/form-submissions/receipt-handle',
274-
auth: authSuperadmin
279+
url: '/admin/deadletter/form-submissions/message-id',
280+
auth: authSuperadmin,
281+
payload: {
282+
receiptHandle: 'receipt-handle'
283+
}
275284
})
276285

277286
expect(response.statusCode).toEqual(okStatusCode)
278287
expect(response.headers['content-type']).toContain(jsonContentType)
279288
expect(response.result).toEqual({ message: 'success' })
280-
expect(deleteDlqMessage).toHaveBeenCalled()
289+
expect(deleteDlqMessage).toHaveBeenCalledWith(
290+
'form-submissions',
291+
'receipt-handle'
292+
)
281293
})
282294
})
283295
})

0 commit comments

Comments
 (0)