test(order): assert multipart rejection for oversized imports

This commit is contained in:
2026-10-02 21:53:29 +08:00
parent afb02a0a1b
commit 25580dab86
2 changed files with 7 additions and 3 deletions
@@ -271,11 +271,11 @@ function importHarness(fault = '') {
addDraft('leaked-first', parsed[0])
}
if (fault === 'changed-existing-row') orders.get('second').order.customerRemark = 'incorrectly-overwritten'
} else code = 'A0422'
} else code = name === 'reject over five MiB' ? 'A0400' : 'A0422'
} else if (request.path.includes('?page=')) {
data = { page: 1, total: orders.size, records: [...orders.keys()].map(orderId => ({ orderId })) }
} else data = structuredClone(orders.get(request.path.split('/').at(-1)))
const response = { status: 200, headers: new Map([['content-type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']]), bytes, json: { code, data } }
const response = { status: 200, headers: new Map([['content-type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']]), bytes, json: { code, data, message: code === 'A0400' ? '上传文件超过服务允许大小' : undefined } }
validate(response); return response
},
})
+5 -1
View File
@@ -2441,7 +2441,11 @@ async function orderExcelImportModule() {
missingHeader.set('xl/worksheets/sheet1.xml', missingHeader.get('xl/worksheets/sheet1.xml').replace(/<row\b[^>]*\br="2"[^>]*>[\s\S]*?<\/row>/, '<row r="2"/>'))
invalidCases.push(['missing Chinese headers', orderZipWrite(missingHeader), 'orders.xlsx'])
for (const [name, bytes, filename] of invalidCases) {
await upload(`reject ${name}`, 'ATOMIC', newIdempotencyKey('excel-invalid'), bytes, rejection('A0422'), filename)
await upload(`reject ${name}`, 'ATOMIC', newIdempotencyKey('excel-invalid'), bytes, response => {
// Multipart rejects the oversized file before the import service validates its contents.
rejection(name === 'over five MiB' ? 'A0400' : 'A0422')(response)
if (name === 'over five MiB') assertTrue(/上传文件.*(?:超过|大小)/.test(response.json.message), 'explicit upload size rejection')
}, filename)
await importOrderSet(`${name}: order set unchanged`, seeded)
}
const forged = makeRow('forged-catalog'); forged[3] = `FORGED-${marker}`