test(order): assert multipart rejection for oversized imports
This commit is contained in:
@@ -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
|
||||
},
|
||||
})
|
||||
|
||||
@@ -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}`
|
||||
|
||||
Reference in New Issue
Block a user