Skip to content

Commit c414770

Browse files
authored
Merge pull request #493 from DEFRA/fix/df-957-csat-scopes
fix/df-957: CSAT permissions fix
2 parents f089d8c + 6a30bc8 commit c414770

5 files changed

Lines changed: 78 additions & 52 deletions

File tree

package-lock.json

Lines changed: 37 additions & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"@aws-sdk/client-sqs": "^3.982.0",
4545
"@aws-sdk/s3-request-presigner": "^3.679.0",
4646
"@defra/forms-engine-plugin": "^4.4.0",
47-
"@defra/forms-model": "^3.0.638",
47+
"@defra/forms-model": "^3.0.642",
4848
"@defra/hapi-tracing": "^1.12.0",
4949
"@elastic/ecs-pino-format": "^1.5.0",
5050
"@hapi/boom": "^10.0.1",

src/routes/admin.js

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,19 +102,43 @@ export default [
102102
*/
103103
({
104104
method: 'POST',
105-
path: '/feedback/{formId?}',
105+
path: '/feedback',
106106
async handler(request) {
107-
const { auth, params } = request
108-
const { formId } = params
107+
const { auth } = request
108+
109+
if (!auth.credentials.user) {
110+
throw new Error('Missing user credential')
111+
}
112+
await generateFeedbackSubmissionsFileForAll(auth.credentials.user)
109113

110-
if (formId) {
111-
await generateFeedbackSubmissionsFileForForm(formId)
112-
} else {
113-
if (!auth.credentials.user) {
114-
throw new Error('Missing user credential')
114+
return {
115+
message: 'Generate feedback submissions file success'
116+
}
117+
},
118+
options: {
119+
tags: ['api'],
120+
auth: {
121+
scope: [`+${Scopes.FormsFeedbackAllForms}`]
122+
},
123+
response: {
124+
status: {
125+
200: generateFeedbackSubmissionsFileResponseSchema
115126
}
116-
await generateFeedbackSubmissionsFileForAll(auth.credentials.user)
117127
}
128+
}
129+
}),
130+
131+
/**
132+
* @satisfies {ServerRoute<GenerateFeedbackSubmissionsFile>}
133+
*/
134+
({
135+
method: 'POST',
136+
path: '/feedback/{formId}',
137+
async handler(request) {
138+
const { params } = request
139+
const { formId } = params
140+
141+
await generateFeedbackSubmissionsFileForForm(formId)
118142

119143
return {
120144
message: 'Generate feedback submissions file success'
@@ -128,7 +152,7 @@ export default [
128152
validate: {
129153
params: Joi.object()
130154
.keys({
131-
formId: idSchema.optional()
155+
formId: idSchema.required()
132156
})
133157
.label('generateFeedbackSubmissionsFileParams')
134158
},

src/routes/admin.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,15 @@ describe('Admin route', () => {
166166
)
167167
})
168168

169-
test('Testing POST /feedback/{formId} route is successful with optional missing params', async () => {
169+
test('Testing POST /feedback route is successful', async () => {
170170
jest.mocked(generateSubmissionsFile).mockResolvedValue({
171171
fileId: 'b93a5f08-e044-46f6-baec-0e5a5d8eaa53'
172172
})
173173

174174
const response = await server.inject({
175175
method: 'POST',
176176
url: '/feedback',
177-
auth: authAdmin
177+
auth: authSuperadmin
178178
})
179179

180180
expect(response.statusCode).toEqual(StatusCodes.OK)
@@ -208,7 +208,7 @@ describe('Admin route', () => {
208208
expect(response.statusCode).toEqual(StatusCodes.UNAUTHORIZED)
209209
})
210210

211-
test('Testing POST /feedback/{formId} route fails if user missing and optional missing param', async () => {
211+
test('Testing POST /feedback route fails if user missing', async () => {
212212
const badAuth = structuredClone(authAdmin)
213213
// @ts-expect-error - forceably construct bad user object
214214
badAuth.credentials.user = undefined

test/fixtures/auth.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const authSuperadmin = {
2424
Scopes.UserDelete,
2525
Scopes.UserEdit,
2626
Scopes.FormsFeedback,
27+
Scopes.FormsFeedbackAllForms,
2728
Scopes.FormsBackup,
2829
Scopes.ResetSaveAndExit,
2930
Scopes.DeadLetterQueues
@@ -54,7 +55,8 @@ export const authAdmin = {
5455
Scopes.UserCreate,
5556
Scopes.UserDelete,
5657
Scopes.UserEdit,
57-
Scopes.FormsFeedback
58+
Scopes.FormsFeedback,
59+
Scopes.FormsFeedbackAllForms
5860
]
5961
}
6062
}

0 commit comments

Comments
 (0)