-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathunicode.js
More file actions
117 lines (92 loc) · 2.65 KB
/
unicode.js
File metadata and controls
117 lines (92 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/* eslint-env mocha */
var assert = require('assert')
var multer = require('../')
var temp = require('fs-temp')
var rimraf = require('rimraf')
var stream = require('stream')
describe('Unicode', function () {
var uploadDir, upload
beforeEach(function (done) {
temp.mkdir(function (err, path) {
if (err) return done(err)
var storage = multer.diskStorage({
destination: path,
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})
uploadDir = path
upload = multer({ storage: storage })
done()
})
})
afterEach(function (done) {
rimraf(uploadDir, done)
})
it('should handle unicode filenames', function (done) {
var req = new stream.PassThrough()
var boundary = 'AaB03x'
var body = [
'--' + boundary,
'Content-Disposition: form-data; name="small0"; filename="poo.dat"; filename*=utf-8\'\'%F0%9F%92%A9.dat',
'Content-Type: text/plain',
'',
'test with unicode filename',
'--' + boundary + '--'
].join('\r\n')
req.headers = {
'content-type': 'multipart/form-data; boundary=' + boundary,
'content-length': body.length
}
req.end(body)
upload.single('small0')(req, null, function (err) {
assert.ifError(err)
assert.strictEqual(req.file.originalname, '\ud83d\udca9.dat')
assert.strictEqual(req.file.fieldname, 'small0')
done()
})
})
})
describe('UTF-8 filenames', function () {
var uploadDir, upload
beforeEach(function (done) {
temp.mkdir(function (err, path) {
if (err) return done(err)
var storage = multer.diskStorage({
destination: path,
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})
uploadDir = path
upload = multer({ storage: storage, charset: 'utf-8' })
done()
})
})
afterEach(function (done) {
rimraf(uploadDir, done)
})
it('should handle UTF-8 filenames', function (done) {
var req = new stream.PassThrough()
var boundary = 'AaB03x'
var body = [
'--' + boundary,
'Content-Disposition: form-data; name="small0"; filename="ÖoϪ.dat"',
'Content-Type: text/plain',
'',
'test with UTF-8 filename',
'--' + boundary + '--'
].join('\r\n')
req.headers = {
'content-type': 'multipart/form-data; boundary=' + boundary,
'content-length': body.length
}
req.end(body)
upload.single('small0')(req, null, function (err) {
assert.ifError(err)
assert.strictEqual(req.file.originalname, 'ÖoϪ.dat')
assert.strictEqual(req.file.fieldname, 'small0')
done()
})
})
})