Release 2.5.13
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const os = require('node:os');
|
||||
const path = require('node:path');
|
||||
const express = require('express');
|
||||
|
||||
require('../src/common');
|
||||
|
||||
const { createUploadSyncService } = require('../src/web/lib/media');
|
||||
|
||||
test('multipart uploads accept large text fields used by slide and template forms', async () => {
|
||||
const uploadDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pulse-signage-upload-'));
|
||||
const uploadSyncService = createUploadSyncService({
|
||||
common: {},
|
||||
playerSnapshotCache: new Map(),
|
||||
notifyPlayerScreens: async () => {}
|
||||
});
|
||||
const upload = uploadSyncService.createUploadMiddleware(uploadDir);
|
||||
const app = express();
|
||||
|
||||
app.post('/upload', upload.any(), function (_req, res) {
|
||||
res.sendStatus(204);
|
||||
});
|
||||
|
||||
app.use(function (error, _req, res, _next) {
|
||||
res.status(error.statusCode || 500).send(String(error && error.message ? error.message : error));
|
||||
});
|
||||
|
||||
const server = app.listen(0);
|
||||
|
||||
try {
|
||||
const address = server.address();
|
||||
const largeValue = 'x'.repeat(1_100_000);
|
||||
const formData = new FormData();
|
||||
formData.set('region_text_6', largeValue);
|
||||
|
||||
const response = await fetch(`http://127.0.0.1:${address.port}/upload`, {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
|
||||
assert.equal(response.status, 204);
|
||||
} finally {
|
||||
await new Promise((resolve) => server.close(resolve));
|
||||
fs.rmSync(uploadDir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user