Родитель
7b1d06caa8
Коммит
55b0744e68
|
@ -23,15 +23,23 @@ function processImage(src, width, height) {
|
|||
// The '>' modifier does this.
|
||||
// See more: http://www.graphicsmagick.org/GraphicsMagick.html
|
||||
limit(gm(src)
|
||||
.resize(width, height, '>'))
|
||||
.noProfile()
|
||||
.toBuffer('png', function(err, buf) {
|
||||
.identify(function (err) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(buf);
|
||||
// if gm cannot identify this image, then reject
|
||||
return reject (err);
|
||||
}
|
||||
});
|
||||
|
||||
limit(gm(src).resize(width, height, '>')
|
||||
.noProfile()
|
||||
.toBuffer('png', function(err, buf) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(buf);
|
||||
}
|
||||
}));
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -30,13 +30,17 @@ exports.upload = function upload(id, payload, headers) {
|
|||
};
|
||||
logger.verbose('upload', url);
|
||||
payload.pipe(request.post(url, opts, function(err, res, body) {
|
||||
var nestedError = null;
|
||||
if (body && body[0] && body[0].error) {
|
||||
nestedError = body[0].error;
|
||||
}
|
||||
if (err) {
|
||||
logger.error('upload.network.error', err);
|
||||
reject(AppError.processingError(err));
|
||||
return;
|
||||
}
|
||||
|
||||
if (res.statusCode >= 400 || body.error) {
|
||||
if (res.statusCode >= 400 || body.error || nestedError) {
|
||||
logger.error('upload.worker.error', body);
|
||||
reject(AppError.processingError(body));
|
||||
return;
|
||||
|
|
34
test/api.js
34
test/api.js
|
@ -480,6 +480,40 @@ describe('/avatar', function() {
|
|||
});
|
||||
});
|
||||
|
||||
it('should fail with an error if image cannot be identified', function() {
|
||||
this.slow(2000);
|
||||
this.timeout(3000);
|
||||
|
||||
var dataLength = 2;
|
||||
mock.token({
|
||||
user: USERID,
|
||||
email: 'user@example.domain',
|
||||
scope: ['profile:avatar:write']
|
||||
});
|
||||
mock.log('img_workers', function(rec) {
|
||||
if (rec.levelname === 'ERROR') {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
mock.log('server', function(rec) {
|
||||
if (rec.levelname === 'ERROR') {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
return Server.api.post({
|
||||
url: '/avatar/upload',
|
||||
payload: Buffer('{}'),
|
||||
headers: { authorization: 'Bearer ' + tok,
|
||||
'content-type': 'image/png',
|
||||
'content-length': dataLength
|
||||
}
|
||||
}).then(function(res) {
|
||||
assert.equal(res.statusCode, 500);
|
||||
assert.equal(res.result.message, 'Image processing error');
|
||||
});
|
||||
});
|
||||
|
||||
it('should gracefully handle and report upload failures', function() {
|
||||
mock.token({
|
||||
user: USERID,
|
||||
|
|
Загрузка…
Ссылка в новой задаче