mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 00:56:13 +01:00
fix: NodeBB#11482 thumbs Post Can not upload a thumbnail, only multip… (#11483)
* fix: NodeBB#11482 thumbs Post Can not upload a thumbnail, only multiple uploads * Modify upload thumbnail test * Modify upload thumbnail test +, * Get rid of v2 uploads test * edit times * Modify amount of files associated post test * edit post file amount
This commit is contained in:
@@ -102,11 +102,20 @@ middleware.pluginHooks = helpers.try(async (req, res, next) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
middleware.validateFiles = function validateFiles(req, res, next) {
|
middleware.validateFiles = function validateFiles(req, res, next) {
|
||||||
if (!Array.isArray(req.files.files) || !req.files.files.length) {
|
if (!req.files.files) {
|
||||||
return next(new Error(['[[error:invalid-files]]']));
|
return next(new Error(['[[error:invalid-files]]']));
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
if (Array.isArray(req.files.files) && req.files.files.length) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof req.files.files === 'object') {
|
||||||
|
req.files.files = [req.files.files];
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
return next(new Error(['[[error:invalid-files]]']));
|
||||||
};
|
};
|
||||||
|
|
||||||
middleware.prepareAPI = function prepareAPI(req, res, next) {
|
middleware.prepareAPI = function prepareAPI(req, res, next) {
|
||||||
|
|||||||
@@ -121,7 +121,6 @@ helpers.uploadFile = function (uploadEndPoint, filePath, body, jar, csrf_token,
|
|||||||
let formData = {
|
let formData = {
|
||||||
files: [
|
files: [
|
||||||
fs.createReadStream(filePath),
|
fs.createReadStream(filePath),
|
||||||
fs.createReadStream(filePath), // see https://github.com/request/request/issues/2445
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
formData = utils.merge(formData, body);
|
formData = utils.merge(formData, body);
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ describe('Upload Controllers', () => {
|
|||||||
meta.config.allowedFileExtensions = 'png,jpg,bmp,html';
|
meta.config.allowedFileExtensions = 'png,jpg,bmp,html';
|
||||||
require('../src/middleware/uploads').clearCache();
|
require('../src/middleware/uploads').clearCache();
|
||||||
// why / 2? see: helpers.uploadFile for a weird quirk where we actually upload 2 files per upload in our tests.
|
// why / 2? see: helpers.uploadFile for a weird quirk where we actually upload 2 files per upload in our tests.
|
||||||
const times = (meta.config.uploadRateLimitThreshold / 2) + 1;
|
const times = (meta.config.uploadRateLimitThreshold) + 1;
|
||||||
async.timesSeries(times, (i, next) => {
|
async.timesSeries(times, (i, next) => {
|
||||||
helpers.uploadFile(`${nconf.get('url')}/api/post/upload`, path.join(__dirname, '../test/files/503.html'), {}, jar, csrf_token, (err, res, body) => {
|
helpers.uploadFile(`${nconf.get('url')}/api/post/upload`, path.join(__dirname, '../test/files/503.html'), {}, jar, csrf_token, (err, res, body) => {
|
||||||
if (i + 1 >= times) {
|
if (i + 1 >= times) {
|
||||||
@@ -522,7 +522,7 @@ describe('Upload Controllers', () => {
|
|||||||
it('should return files with no post associated with them', async () => {
|
it('should return files with no post associated with them', async () => {
|
||||||
const orphans = await posts.uploads.getOrphans();
|
const orphans = await posts.uploads.getOrphans();
|
||||||
|
|
||||||
assert.strictEqual(orphans.length, 2);
|
assert.strictEqual(orphans.length, 1);
|
||||||
orphans.forEach((relPath) => {
|
orphans.forEach((relPath) => {
|
||||||
assert(relPath.startsWith('files/'));
|
assert(relPath.startsWith('files/'));
|
||||||
assert(relPath.endsWith('test.png'));
|
assert(relPath.endsWith('test.png'));
|
||||||
@@ -553,7 +553,7 @@ describe('Upload Controllers', () => {
|
|||||||
await posts.uploads.cleanOrphans();
|
await posts.uploads.cleanOrphans();
|
||||||
const orphans = await posts.uploads.getOrphans();
|
const orphans = await posts.uploads.getOrphans();
|
||||||
|
|
||||||
assert.strictEqual(orphans.length, 2);
|
assert.strictEqual(orphans.length, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not touch orphans if they are newer than the configured expiry', async () => {
|
it('should not touch orphans if they are newer than the configured expiry', async () => {
|
||||||
@@ -561,7 +561,7 @@ describe('Upload Controllers', () => {
|
|||||||
await posts.uploads.cleanOrphans();
|
await posts.uploads.cleanOrphans();
|
||||||
const orphans = await posts.uploads.getOrphans();
|
const orphans = await posts.uploads.getOrphans();
|
||||||
|
|
||||||
assert.strictEqual(orphans.length, 2);
|
assert.strictEqual(orphans.length, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should delete orphans older than the configured number of days', async () => {
|
it('should delete orphans older than the configured number of days', async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user