This commit is contained in:
2026-08-04 14:15:24 +08:00
parent 7af1d0250b
commit d5eaa75329
9 changed files with 62 additions and 46 deletions
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict'
import test from 'node:test'
import { formatQualificationFileSize, QUALIFICATION_MAX_FILE_SIZE, validateQualificationFile } from './qualificationFile.ts'
import { formatQualificationFileSize, qualificationUploadErrorMessage, QUALIFICATION_MAX_FILE_SIZE, validateQualificationFile } from './qualificationFile.ts'
test('accepts the backend-confirmed PDF, JPG and PNG formats up to 5MB', () => {
assert.equal(validateQualificationFile({ name: '营业执照.jpeg', size: QUALIFICATION_MAX_FILE_SIZE, type: 'image/jpeg' }), '')
@@ -20,3 +20,9 @@ test('formats selected file sizes for review', () => {
assert.equal(formatQualificationFileSize(1536), '1.5 KB')
assert.equal(formatQualificationFileSize(2 * 1024 * 1024), '2.0 MB')
})
test('turns gateway 413 responses into an actionable upload message', () => {
assert.match(qualificationUploadErrorMessage({ status: 413 }), /上传网关拒绝(413)/)
assert.match(qualificationUploadErrorMessage({ status: 413 }), /已小于 5MB.*检查网关上传限制/)
assert.equal(qualificationUploadErrorMessage(new Error('服务暂不可用')), '服务暂不可用')
})
@@ -23,3 +23,13 @@ export function formatQualificationFileSize(bytes: number) {
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`
return `${(bytes / 1024 / 1024).toFixed(1)} MB`
}
export function qualificationUploadErrorMessage(error: unknown) {
const status = typeof error === 'object' && error !== null && 'status' in error
? (error as { status?: unknown }).status
: undefined
if (status === 413) {
return '文件被上传网关拒绝(413)。请压缩后重试;若文件已小于 5MB,请联系平台管理员检查网关上传限制'
}
return error instanceof Error ? error.message : '资质文件上传失败'
}