diff --git a/core/server/middleware/validation/blog-icon.js b/core/server/middleware/validation/blog-icon.js index e1a2be58ea..bf5aa132fd 100644 --- a/core/server/middleware/validation/blog-icon.js +++ b/core/server/middleware/validation/blog-icon.js @@ -61,7 +61,7 @@ module.exports = function blogIcon() { // CASE: file should not be larger than 100kb if (!validIconSize(req.file.size)) { - return next(new errors.RequestEntityTooLargeError({message: i18n.t('errors.api.icons.fileSizeTooLarge', {extensions: iconExtensions})})); + return next(new errors.ValidationError({message: i18n.t('errors.api.icons.invalidFile', {extensions: iconExtensions})})); } return getIconDimensions(req.file).then(function (dimensions) { @@ -70,18 +70,18 @@ module.exports = function blogIcon() { // CASE: file needs to be a square if (req.file.dimensions.width !== req.file.dimensions.height) { - return next(new errors.ValidationError({message: i18n.t('errors.api.icons.iconNotSquare', {extensions: iconExtensions})})); + return next(new errors.ValidationError({message: i18n.t('errors.api.icons.invalidFile', {extensions: iconExtensions})})); } - // CASE: icon needs to be bigger than 32px - // .ico files can contain multiple sizes, we need at least a minimum of 32px (16px is ok, as long as 32px are present as well) - if (req.file.dimensions.width < 32) { - return next(new errors.ValidationError({message: i18n.t('errors.api.icons.fileTooSmall', {extensions: iconExtensions})})); + // CASE: icon needs to be bigger than 60px + // .ico files can contain multiple sizes, we need at least a minimum of 60px (16px is ok, as long as 60px are present as well) + if (req.file.dimensions.width <= 60) { + return next(new errors.ValidationError({message: i18n.t('errors.api.icons.invalidFile', {extensions: iconExtensions})})); } // CASE: icon needs to be smaller than 1000px if (req.file.dimensions.width > 1000) { - return next(new errors.ValidationError({message: i18n.t('errors.api.icons.fileTooLarge', {extensions: iconExtensions})})); + return next(new errors.ValidationError({message: i18n.t('errors.api.icons.invalidFile', {extensions: iconExtensions})})); } next(); diff --git a/core/server/public/favicon.ico b/core/server/public/favicon.ico old mode 100644 new mode 100755 index c24e3c4103..a60606aa2f Binary files a/core/server/public/favicon.ico and b/core/server/public/favicon.ico differ diff --git a/core/server/translations/en.json b/core/server/translations/en.json index 06809d34a1..7e16c86f3d 100644 --- a/core/server/translations/en.json +++ b/core/server/translations/en.json @@ -371,11 +371,7 @@ }, "icons": { "missingFile": "Please select an icon.", - "fileSizeTooLarge": "Please select an icon file smaller than 100kb.", - "iconNotSquare": "The icon needs to be a square.", - "fileTooLarge": "Please select an icon file smaller than 1000px.", - "fileTooSmall": "Please select an icon file larger than 32px.", - "invalidFile": "Please select a valid icon file.", + "invalidFile": "Blog icon must be a square .ico or .png file between 60px – 1,000px, under 100kb.", "couldNotGetSize": "Couldn/'t get icon dimensions" }, "users": { diff --git a/core/test/functional/routes/api/upload_icon_spec.js b/core/test/functional/routes/api/upload_icon_spec.js index 5397682711..2de1b7d46b 100644 --- a/core/test/functional/routes/api/upload_icon_spec.js +++ b/core/test/functional/routes/api/upload_icon_spec.js @@ -73,7 +73,7 @@ describe('Upload Icon API', function () { request.post(testUtils.API.getApiQuery('uploads/icon')) .set('Authorization', 'Bearer ' + accesstoken) .expect('Content-Type', /json/) - .attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/favicon_32x_single.ico')) + .attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/favicon_64x_single.ico')) .expect(200) .end(function (err, res) { if (err) { @@ -151,7 +151,7 @@ describe('Upload Icon API', function () { .set('Authorization', 'Bearer ' + accesstoken) .expect('Content-Type', /json/) .attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/favicon_size_too_large.png')) - .expect(413) + .expect(422) .end(function (err) { if (err) { return done(err); diff --git a/core/test/unit/middleware/serve-favicon_spec.js b/core/test/unit/middleware/serve-favicon_spec.js index 5db57193a0..5384884142 100644 --- a/core/test/unit/middleware/serve-favicon_spec.js +++ b/core/test/unit/middleware/serve-favicon_spec.js @@ -118,7 +118,7 @@ describe('Serve Favicon', function () { statusCode.should.eql(200); }, end: function (body) { - body.length.should.eql(15086); + body.length.should.eql(34494); done(); } }; diff --git a/core/test/utils/fixtures/images/favicon_32x_single.ico b/core/test/utils/fixtures/images/favicon_32x_single.ico deleted file mode 100755 index a5f1611c14..0000000000 Binary files a/core/test/utils/fixtures/images/favicon_32x_single.ico and /dev/null differ diff --git a/core/test/utils/fixtures/images/favicon_64x_single.ico b/core/test/utils/fixtures/images/favicon_64x_single.ico new file mode 100755 index 0000000000..5a6625acbc Binary files /dev/null and b/core/test/utils/fixtures/images/favicon_64x_single.ico differ diff --git a/core/test/utils/fixtures/images/favicon_multi_sizes.ico b/core/test/utils/fixtures/images/favicon_multi_sizes.ico old mode 100644 new mode 100755 index c24e3c4103..a60606aa2f Binary files a/core/test/utils/fixtures/images/favicon_multi_sizes.ico and b/core/test/utils/fixtures/images/favicon_multi_sizes.ico differ