fix(scaffolder-backend): sets router max upload size to 10MB

Signed-off-by: Adam Letizia <LetiziaAdam@JohnDeere.com>
This commit is contained in:
Adam Letizia
2025-08-25 09:35:48 -05:00
parent 56bf797146
commit c3405dbc91
3 changed files with 27 additions and 29 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend': patch
---
Fixed a regression that prevented uploads greater than 100KB. Uploads up to 10MB are supported again.
@@ -1385,34 +1385,24 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
expect.anything(),
);
});
it('disallows users from seeing tasks they do not own', async () => {
const { permissions, router, taskBroker } = await createTestRouter();
jest
.spyOn(permissions, 'authorizeConditional')
.mockImplementationOnce(async () => [
{
conditions: {
resourceType: 'scaffolder-task',
rule: 'IS_TASK_OWNER',
params: { createdBy: ['user'] },
},
pluginId: 'scaffolder',
resourceType: 'scaffolder-task',
result: AuthorizeResult.CONDITIONAL,
it('allows payloads up to 10MB', async () => {
const { unwrappedRouter } = await createTestRouter();
const mockToken = mockCredentials.user.token();
const mockTemplate = generateMockTemplate();
const response = await request(unwrappedRouter)
.post('/v2/dry-run')
.set('Authorization', `Bearer ${mockToken}`)
.send({
template: mockTemplate,
values: {
requiredParameter1: 'A'.repeat(9 * 1024 * 1024), // ~9MB
requiredParameter2: 'required-value-2',
},
]);
const response = await request(router).get(
`/v2/tasks?createdBy=not-user`,
);
expect(taskBroker.list).toHaveBeenCalledWith({
filters: { createdBy: ['not-user'], status: undefined },
order: undefined,
pagination: { limit: undefined, offset: undefined },
permissionFilters: { key: 'created_by', values: ['user'] },
});
directoryContents: [],
});
expect(response.status).toBe(200);
expect(response.body.totalTasks).toBe(0);
expect(response.body.tasks).toEqual([]);
});
});
@@ -186,9 +186,12 @@ const readDuration = (
export async function createRouter(
options: RouterOptions,
): Promise<express.Router> {
const router = await createOpenApiRouter();
// Be generous in upload size to support a wide range of templates in dry-run mode.
router.use(express.json({ limit: '10MB' }));
const router = await createOpenApiRouter({
middleware: [
// Be generous in upload size to support a wide range of templates in dry-run mode.
express.json({ limit: '10MB' }),
],
});
const {
logger: parentLogger,