diff --git a/test/topics.js b/test/topics.js index de44b53ed0..e4b9e691d7 100644 --- a/test/topics.js +++ b/test/topics.js @@ -1,6 +1,7 @@ 'use strict'; const async = require('async'); +const path = require('path'); const assert = require('assert'); const validator = require('validator'); const mockdate = require('mockdate'); @@ -9,6 +10,7 @@ const request = require('request'); const util = require('util'); const db = require('./mocks/databasemock'); +const file = require('../src/file'); const topics = require('../src/topics'); const posts = require('../src/posts'); const categories = require('../src/categories'); @@ -20,7 +22,6 @@ const helpers = require('./helpers'); const socketPosts = require('../src/socket.io/posts'); const socketTopics = require('../src/socket.io/topics'); - const requestType = util.promisify((type, url, opts, cb) => { request[type](url, opts, (err, res, body) => cb(err, { res: res, body: body })); }); @@ -2860,3 +2861,18 @@ describe('Topic\'s', () => { }); }); }); + +describe('Topics\'s', async () => { + let files; + + before(async () => { + files = await file.walk(path.resolve(__dirname, './topics')); + console.log(files); + }); + + it('subfolder tests', () => { + files.forEach((filePath) => { + require(filePath); + }); + }); +}); diff --git a/test/topicEvents.js b/test/topics/events.js similarity index 91% rename from test/topicEvents.js rename to test/topics/events.js index 889a73e5d5..8a35400587 100644 --- a/test/topicEvents.js +++ b/test/topics/events.js @@ -2,12 +2,12 @@ const assert = require('assert'); -const db = require('./mocks/databasemock'); +const db = require('../mocks/databasemock'); -const plugins = require('../src/plugins'); -const categories = require('../src/categories'); -const topics = require('../src/topics'); -const user = require('../src/user'); +const plugins = require('../../src/plugins'); +const categories = require('../../src/categories'); +const topics = require('../../src/topics'); +const user = require('../../src/user'); describe('Topic Events', () => { let fooUid; diff --git a/test/topicThumbs.js b/test/topics/thumbs.js similarity index 81% rename from test/topicThumbs.js rename to test/topics/thumbs.js index 024df284e1..417d4c55d8 100644 --- a/test/topicThumbs.js +++ b/test/topics/thumbs.js @@ -4,21 +4,20 @@ const fs = require('fs'); const path = require('path'); const assert = require('assert'); const nconf = require('nconf'); -const request = require('request-promise-native'); -const db = require('./mocks/databasemock'); +const db = require('../mocks/databasemock'); -const meta = require('../src/meta'); -const user = require('../src/user'); -const groups = require('../src/groups'); -const topics = require('../src/topics'); -const posts = require('../src/posts'); -const categories = require('../src/categories'); -const plugins = require('../src/plugins'); -const file = require('../src/file'); -const utils = require('../src/utils'); +const meta = require('../../src/meta'); +const user = require('../../src/user'); +const groups = require('../../src/groups'); +const topics = require('../../src/topics'); +const posts = require('../../src/posts'); +const categories = require('../../src/categories'); +const plugins = require('../../src/plugins'); +const file = require('../../src/file'); +const utils = require('../../src/utils'); -const helpers = require('./helpers'); +const helpers = require('../helpers'); describe('Topic thumbs', () => { let topicObj; @@ -38,8 +37,8 @@ describe('Topic thumbs', () => { const uuid = utils.generateUUID(); function createFiles() { - fs.closeSync(fs.openSync(path.resolve(__dirname, './uploads', thumbPaths[0]), 'w')); - fs.closeSync(fs.openSync(path.resolve(__dirname, './uploads', thumbPaths[1]), 'w')); + fs.closeSync(fs.openSync(path.resolve(__dirname, '../uploads', thumbPaths[0]), 'w')); + fs.closeSync(fs.openSync(path.resolve(__dirname, '../uploads', thumbPaths[1]), 'w')); } before(async () => { @@ -90,10 +89,10 @@ describe('Topic thumbs', () => { describe('.get()', () => { it('should return an array of thumbs', async () => { - require('../src/cache').del(`topic:${topicObj.topicData.tid}:thumbs`); + require('../../src/cache').del(`topic:${topicObj.topicData.tid}:thumbs`); const thumbs = await topics.thumbs.get(topicObj.topicData.tid); assert.deepStrictEqual(thumbs, [{ - id: 1, + id: 2, name: 'test.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[0]}`, }]); @@ -103,7 +102,7 @@ describe('Topic thumbs', () => { const thumbs = await topics.thumbs.get([topicObj.topicData.tid, topicObj.topicData.tid + 1]); assert.deepStrictEqual(thumbs, [ [{ - id: 1, + id: 2, name: 'test.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[0]}`, }], @@ -133,7 +132,7 @@ describe('Topic thumbs', () => { path: relativeThumbPaths[0], }); - const exists = await db.isSortedSetMember(`topic:2:thumbs`, relativeThumbPaths[0]); + const exists = await db.isSortedSetMember(`topic:3:thumbs`, relativeThumbPaths[0]); assert(exists); }); @@ -154,17 +153,17 @@ describe('Topic thumbs', () => { path: relativeThumbPaths[2], }); - const exists = await db.isSortedSetMember(`topic:2:thumbs`, relativeThumbPaths[2]); + const exists = await db.isSortedSetMember(`topic:3:thumbs`, relativeThumbPaths[2]); assert(exists); }); it('should have a score equal to the number of thumbs prior to addition', async () => { - const scores = await db.sortedSetScores('topic:2:thumbs', [relativeThumbPaths[0], relativeThumbPaths[2]]); + const scores = await db.sortedSetScores('topic:3:thumbs', [relativeThumbPaths[0], relativeThumbPaths[2]]); assert.deepStrictEqual(scores, [0, 1]); }); it('should update the relevant topic hash with the number of thumbnails', async () => { - const numThumbs = await topics.getTopicField(2, 'numThumbs'); + const numThumbs = await topics.getTopicField(3, 'numThumbs'); assert.strictEqual(parseInt(numThumbs, 10), 2); }); @@ -174,7 +173,7 @@ describe('Topic thumbs', () => { path: relativeThumbPaths[0], }); - const score = await db.sortedSetScore(`topic:2:thumbs`, relativeThumbPaths[0]); + const score = await db.sortedSetScore(`topic:3:thumbs`, relativeThumbPaths[0]); assert(isFinite(score)); // exists in set assert.strictEqual(score, 2); @@ -187,7 +186,7 @@ describe('Topic thumbs', () => { score: 0, }); - const score = await db.sortedSetScore(`topic:2:thumbs`, relativeThumbPaths[0]); + const score = await db.sortedSetScore(`topic:3:thumbs`, relativeThumbPaths[0]); assert(isFinite(score)); // exists in set assert.strictEqual(score, 0); @@ -207,23 +206,23 @@ describe('Topic thumbs', () => { describe('.migrate()', () => { it('should combine the thumbs uploaded to a UUID zset and combine it with a topic\'s thumb zset', async () => { - await topics.thumbs.migrate(uuid, 2); + await topics.thumbs.migrate(uuid, 3); - const thumbs = await topics.thumbs.get(2); + const thumbs = await topics.thumbs.get(3); assert.strictEqual(thumbs.length, 3); assert.deepStrictEqual(thumbs, [ { - id: 2, + id: 3, name: 'test.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[0]}`, }, { - id: 2, + id: 3, name: 'example.org', url: 'https://example.org', }, { - id: 2, + id: 3, name: 'test2.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[1]}`, }, @@ -283,7 +282,7 @@ describe('Topic thumbs', () => { }); it('should succeed with a valid tid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/1/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/1/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 200); done(); @@ -291,7 +290,7 @@ describe('Topic thumbs', () => { }); it('should succeed with a uuid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 200); done(); @@ -309,7 +308,7 @@ describe('Topic thumbs', () => { }); await new Promise((resolve) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 200); resolve(); @@ -320,7 +319,7 @@ describe('Topic thumbs', () => { }); it('should fail with a non-existant tid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/3/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/4/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 404); done(); @@ -328,7 +327,7 @@ describe('Topic thumbs', () => { }); it('should fail when garbage is passed in', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/abracadabra/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/abracadabra/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 404); done(); @@ -336,7 +335,7 @@ describe('Topic thumbs', () => { }); it('should fail when calling user cannot edit the tid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/1/thumbs`, path.join(__dirname, './files/test.png'), {}, fooJar, fooCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/2/thumbs`, path.join(__dirname, '../files/test.png'), {}, fooJar, fooCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 403); done(); @@ -346,7 +345,7 @@ describe('Topic thumbs', () => { it('should fail if thumbnails are not enabled', (done) => { meta.config.allowTopicsThumbnail = 0; - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 503); assert(body && body.status); @@ -358,7 +357,7 @@ describe('Topic thumbs', () => { it('should fail if file is not image', (done) => { meta.config.allowTopicsThumbnail = 1; - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/503.html'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/503.html'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 500); assert(body && body.status);