Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/sites/node_modules/multer-s3/test/ drwxr-xr-x | |
| Viewing file: Select action/file-type: /* eslint-env mocha */
var multerS3 = require('../')
var fs = require('fs')
var path = require('path')
var extend = require('xtend')
var assert = require('assert')
var multer = require('multer')
var stream = require('stream')
var FormData = require('form-data')
var onFinished = require('on-finished')
var mockS3 = require('./util/mock-s3')
var VALID_OPTIONS = {
bucket: 'string'
}
var INVALID_OPTIONS = [
['numeric key', { key: 1337 }],
['string key', { key: 'string' }],
['numeric bucket', { bucket: 1337 }],
['numeric contentType', { contentType: 1337 }]
]
function submitForm (multer, form, cb) {
form.getLength(function (err, length) {
if (err) return cb(err)
var req = new stream.PassThrough()
req.complete = false
form.once('end', function () {
req.complete = true
})
form.pipe(req)
req.headers = {
'content-type': 'multipart/form-data; boundary=' + form.getBoundary(),
'content-length': length
}
multer(req, null, function (err) {
onFinished(req, function () { cb(err, req) })
})
})
}
describe('Multer S3', function () {
it('is exposed as a function', function () {
assert.equal(typeof multerS3, 'function')
})
INVALID_OPTIONS.forEach(function (testCase) {
it('throws when given ' + testCase[0], function () {
function testBody () {
multerS3(extend(VALID_OPTIONS, testCase[1]))
}
assert.throws(testBody, TypeError)
})
})
it('upload files', function (done) {
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test' })
var upload = multer({ storage: storage })
var parser = upload.single('image')
var image = fs.createReadStream(path.join(__dirname, 'files', 'ffffff.png'))
form.append('name', 'Multer')
form.append('image', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'image')
assert.equal(req.file.originalname, 'ffffff.png')
assert.equal(req.file.size, 68)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
done()
})
})
it('uploads file with AES256 server-side encryption', function (done) {
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test', serverSideEncryption: 'AES256' })
var upload = multer({ storage: storage })
var parser = upload.single('image')
var image = fs.createReadStream(path.join(__dirname, 'files', 'ffffff.png'))
form.append('name', 'Multer')
form.append('image', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'image')
assert.equal(req.file.originalname, 'ffffff.png')
assert.equal(req.file.size, 68)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
assert.equal(req.file.serverSideEncryption, 'AES256')
done()
})
})
it('uploads file with AWS KMS-managed server-side encryption', function (done) {
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test', serverSideEncryption: 'aws:kms' })
var upload = multer({ storage: storage })
var parser = upload.single('image')
var image = fs.createReadStream(path.join(__dirname, 'files', 'ffffff.png'))
form.append('name', 'Multer')
form.append('image', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'image')
assert.equal(req.file.originalname, 'ffffff.png')
assert.equal(req.file.size, 68)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
assert.equal(req.file.serverSideEncryption, 'aws:kms')
done()
})
})
it('uploads PNG file with correct content-type', function (done) {
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test', serverSideEncryption: 'aws:kms', contentType: multerS3.AUTO_CONTENT_TYPE })
var upload = multer({ storage: storage })
var parser = upload.single('image')
var image = fs.createReadStream(path.join(__dirname, 'files', 'ffffff.png'))
form.append('name', 'Multer')
form.append('image', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'image')
assert.equal(req.file.contentType, 'image/png')
assert.equal(req.file.originalname, 'ffffff.png')
assert.equal(req.file.size, 68)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
assert.equal(req.file.serverSideEncryption, 'aws:kms')
done()
})
})
it('uploads pure SVG file with correct content-type', function (done) {
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test', serverSideEncryption: 'aws:kms', contentType: multerS3.AUTO_CONTENT_TYPE })
var upload = multer({ storage: storage })
var parser = upload.single('image')
var image = fs.createReadStream(path.join(__dirname, 'files', 'test.svg'))
form.append('name', 'Multer')
form.append('image', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'image')
assert.equal(req.file.contentType, 'image/svg+xml')
assert.equal(req.file.originalname, 'test.svg')
assert.equal(req.file.size, 100)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
assert.equal(req.file.serverSideEncryption, 'aws:kms')
done()
})
})
it('uploads common SVG file with correct content-type', function (done) {
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test', serverSideEncryption: 'aws:kms', contentType: multerS3.AUTO_CONTENT_TYPE })
var upload = multer({ storage: storage })
var parser = upload.single('image')
var image = fs.createReadStream(path.join(__dirname, 'files', 'test2.svg'))
form.append('name', 'Multer')
form.append('image', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'image')
assert.equal(req.file.contentType, 'image/svg+xml')
assert.equal(req.file.originalname, 'test2.svg')
assert.equal(req.file.size, 285)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
assert.equal(req.file.serverSideEncryption, 'aws:kms')
done()
})
})
it('uploads SVG file without quadratic regex', function (done) {
this.timeout('10s')
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test', serverSideEncryption: 'aws:kms', contentType: multerS3.AUTO_CONTENT_TYPE })
var upload = multer({ storage: storage })
var parser = upload.single('image')
fs.writeFileSync(path.join(__dirname, 'files', 'test_generated.svg'), '<!doctype svg ' + ' '.repeat(34560))
var image = fs.createReadStream(path.join(__dirname, 'files', 'test_generated.svg'))
form.append('name', 'Multer')
form.append('image', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'image')
assert.equal(req.file.contentType, 'application/octet-stream')
assert.equal(req.file.originalname, 'test_generated.svg')
assert.equal(req.file.size, 34574)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
assert.equal(req.file.serverSideEncryption, 'aws:kms')
done()
})
})
it('uploads common file as gzip content encoded', function (done) {
var s3 = mockS3()
var form = new FormData()
var storage = multerS3({ s3: s3, bucket: 'test', serverSideEncryption: 'aws:kms', contentType: multerS3.AUTO_CONTENT_TYPE, contentEncoding: 'gzip' })
var upload = multer({ storage: storage })
var parser = upload.single('file')
var image = fs.createReadStream(path.join(__dirname, 'files', 'a.txt'))
form.append('name', 'Multer')
form.append('file', image)
submitForm(parser, form, function (err, req) {
assert.ifError(err)
assert.equal(req.body.name, 'Multer')
assert.equal(req.file.fieldname, 'file')
assert.equal(req.file.contentType, 'application/octet-stream')
assert.equal(req.file.originalname, 'a.txt')
assert.equal(req.file.size, 7)
assert.equal(req.file.bucket, 'test')
assert.equal(req.file.etag, 'mock-etag')
assert.equal(req.file.location, 'mock-location')
assert.equal(req.file.serverSideEncryption, 'aws:kms')
assert.equal(req.file.contentEncoding, 'gzip')
done()
})
})
})
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0225 ]-- |