Skip to content

Commit 66a16f2

Browse files
committed
fix(tests): make file size assertions cross-platform
1 parent e259a7e commit 66a16f2

File tree

5 files changed

+61
-99
lines changed

5 files changed

+61
-99
lines changed

test/_util.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,26 @@ var fs = require('fs')
22
var path = require('path')
33
var stream = require('stream')
44

5+
exports.filePath = function filePath (name) {
6+
return path.join(__dirname, 'files', name)
7+
}
8+
59
exports.file = function file (name) {
6-
return fs.createReadStream(path.join(__dirname, 'files', name))
10+
return fs.createReadStream(this.filePath(name))
711
}
812

913
exports.fileSize = function fileSize (path) {
1014
return fs.statSync(path).size
1115
}
1216

17+
exports.fileSizeByName = function fileSizeByName (name) {
18+
return this.fileSize(this.filePath(name))
19+
}
20+
21+
exports.readDir = function readDir (dirPath) {
22+
return fs.readdirSync(dirPath)
23+
}
24+
1325
exports.submitForm = function submitForm (multer, form, cb) {
1426
form.getLength(function (err, length) {
1527
if (err) return cb(err)

test/disk-storage.js

Lines changed: 20 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,21 @@
33
var assert = require('assert')
44
var deepEqual = require('deep-equal')
55

6-
var fs = require('fs')
76
var path = require('path')
87
var util = require('./_util')
98
var multer = require('../')
109
var temp = require('fs-temp')
1110
var rimraf = require('rimraf')
1211
var FormData = require('form-data')
1312

13+
function assertFileProperties(file, name) {
14+
const expectedSize = util.fileSizeByName(name)
15+
assert.strictEqual(file.fieldname, path.parse(name).name)
16+
assert.strictEqual(file.originalname, name)
17+
assert.strictEqual(file.size, expectedSize)
18+
assert.strictEqual(util.fileSize(file.path), expectedSize)
19+
}
20+
1421
describe('Disk Storage', function () {
1522
var uploadDir, upload
1623

@@ -37,13 +44,10 @@ describe('Disk Storage', function () {
3744

3845
util.submitForm(parser, form, function (err, req) {
3946
assert.ifError(err)
40-
47+
4148
assert.strictEqual(req.body.name, 'Multer')
4249

43-
assert.strictEqual(req.file.fieldname, 'small0')
44-
assert.strictEqual(req.file.originalname, 'small0.dat')
45-
assert.strictEqual(req.file.size, 1778)
46-
assert.strictEqual(util.fileSize(req.file.path), 1778)
50+
assertFileProperties(req.file, 'small0.dat')
4751

4852
done()
4953
})
@@ -75,10 +79,7 @@ describe('Disk Storage', function () {
7579
assert(deepEqual(req.body.checkboxhalfempty, ['cb1', '']))
7680
assert(deepEqual(req.body.checkboxempty, ['', '']))
7781

78-
assert.strictEqual(req.file.fieldname, 'empty')
79-
assert.strictEqual(req.file.originalname, 'empty.dat')
80-
assert.strictEqual(req.file.size, 0)
81-
assert.strictEqual(util.fileSize(req.file.path), 0)
82+
assertFileProperties(req.file, 'empty.dat')
8283

8384
done()
8485
})
@@ -109,41 +110,14 @@ describe('Disk Storage', function () {
109110

110111
assert(deepEqual(req.body, {}))
111112

112-
assert.strictEqual(req.files.empty[0].fieldname, 'empty')
113-
assert.strictEqual(req.files.empty[0].originalname, 'empty.dat')
114-
assert.strictEqual(req.files.empty[0].size, 0)
115-
assert.strictEqual(util.fileSize(req.files.empty[0].path), 0)
116-
117-
assert.strictEqual(req.files.tiny0[0].fieldname, 'tiny0')
118-
assert.strictEqual(req.files.tiny0[0].originalname, 'tiny0.dat')
119-
assert.strictEqual(req.files.tiny0[0].size, 122)
120-
assert.strictEqual(util.fileSize(req.files.tiny0[0].path), 122)
121-
122-
assert.strictEqual(req.files.tiny1[0].fieldname, 'tiny1')
123-
assert.strictEqual(req.files.tiny1[0].originalname, 'tiny1.dat')
124-
assert.strictEqual(req.files.tiny1[0].size, 7)
125-
assert.strictEqual(util.fileSize(req.files.tiny1[0].path), 7)
126-
127-
assert.strictEqual(req.files.small0[0].fieldname, 'small0')
128-
assert.strictEqual(req.files.small0[0].originalname, 'small0.dat')
129-
assert.strictEqual(req.files.small0[0].size, 1778)
130-
assert.strictEqual(util.fileSize(req.files.small0[0].path), 1778)
131-
132-
assert.strictEqual(req.files.small1[0].fieldname, 'small1')
133-
assert.strictEqual(req.files.small1[0].originalname, 'small1.dat')
134-
assert.strictEqual(req.files.small1[0].size, 315)
135-
assert.strictEqual(util.fileSize(req.files.small1[0].path), 315)
136-
137-
assert.strictEqual(req.files.medium[0].fieldname, 'medium')
138-
assert.strictEqual(req.files.medium[0].originalname, 'medium.dat')
139-
assert.strictEqual(req.files.medium[0].size, 13196)
140-
assert.strictEqual(util.fileSize(req.files.medium[0].path), 13196)
141-
142-
assert.strictEqual(req.files.large[0].fieldname, 'large')
143-
assert.strictEqual(req.files.large[0].originalname, 'large.jpg')
144-
assert.strictEqual(req.files.large[0].size, 2413677)
145-
assert.strictEqual(util.fileSize(req.files.large[0].path), 2413677)
146-
113+
assertFileProperties(req.files.empty[0], 'empty.dat')
114+
assertFileProperties(req.files.tiny0[0], 'tiny0.dat')
115+
assertFileProperties(req.files.tiny1[0], 'tiny1.dat')
116+
assertFileProperties(req.files.small0[0], 'small0.dat')
117+
assertFileProperties(req.files.small1[0], 'small1.dat')
118+
assertFileProperties(req.files.medium[0], 'medium.dat')
119+
assertFileProperties(req.files.large[0], 'large.jpg')
120+
147121
done()
148122
})
149123
})
@@ -160,8 +134,7 @@ describe('Disk Storage', function () {
160134
assert.strictEqual(err.field, 'small0')
161135
assert(deepEqual(err.storageErrors, []))
162136

163-
var files = fs.readdirSync(uploadDir)
164-
assert(deepEqual(files, []))
137+
assert(deepEqual(util.readDir(uploadDir), []))
165138

166139
done()
167140
})

test/functionality.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-env mocha */
22

33
var assert = require('assert')
4-
4+
var path = require('path')
55
var util = require('./_util')
66
var multer = require('../')
77
var temp = require('fs-temp')
@@ -52,7 +52,7 @@ describe('Functionality', function () {
5252
util.submitForm(parser, env.form, function (err, req) {
5353
assert.ifError(err)
5454
assert.ok(startsWith(req.file.path, env.uploadDir))
55-
assert.strictEqual(util.fileSize(req.file.path), 1778)
55+
assert.strictEqual(util.fileSize(req.file.path), util.fileSizeByName('small0.dat'))
5656
done()
5757
})
5858
})
@@ -128,9 +128,10 @@ describe('Functionality', function () {
128128

129129
util.submitForm(parser, form, function (err, req) {
130130
assert.ifError(err)
131+
131132
assert.strictEqual(req.files.length, 2)
132-
assert.ok(req.files[0].path.indexOf('/testforme-') >= 0)
133-
assert.ok(req.files[1].path.indexOf('/testforme-') >= 0)
133+
assert.ok(req.files[0].path.indexOf(`${path.sep}testforme-`) >= 0)
134+
assert.ok(req.files[1].path.indexOf(`${path.sep}testforme-`) >= 0)
134135
done()
135136
})
136137
})

test/memory-storage.js

Lines changed: 20 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,20 @@
22

33
var assert = require('assert')
44
var deepEqual = require('deep-equal')
5-
5+
var path = require('path')
66
var util = require('./_util')
77
var multer = require('../')
88
var FormData = require('form-data')
99

10+
function assertFileProperties(file, name) {
11+
const expectedSize = util.fileSizeByName(name)
12+
assert.strictEqual(file.fieldname, path.parse(name).name)
13+
assert.strictEqual(file.originalname, name)
14+
assert.strictEqual(file.size, expectedSize)
15+
assert.ok(Buffer.isBuffer(file.buffer))
16+
assert.strictEqual(file.buffer.length, expectedSize)
17+
}
18+
1019
describe('Memory Storage', function () {
1120
var upload
1221

@@ -27,10 +36,7 @@ describe('Memory Storage', function () {
2736

2837
assert.strictEqual(req.body.name, 'Multer')
2938

30-
assert.strictEqual(req.file.fieldname, 'small0')
31-
assert.strictEqual(req.file.originalname, 'small0.dat')
32-
assert.strictEqual(req.file.size, 1778)
33-
assert.strictEqual(req.file.buffer.length, 1778)
39+
assertFileProperties(req.file, 'small0.dat')
3440

3541
done()
3642
})
@@ -62,12 +68,8 @@ describe('Memory Storage', function () {
6268
assert(deepEqual(req.body.checkboxhalfempty, ['cb1', '']))
6369
assert(deepEqual(req.body.checkboxempty, ['', '']))
6470

65-
assert.strictEqual(req.file.fieldname, 'empty')
66-
assert.strictEqual(req.file.originalname, 'empty.dat')
67-
assert.strictEqual(req.file.size, 0)
68-
assert.strictEqual(req.file.buffer.length, 0)
69-
assert.strictEqual(Buffer.isBuffer(req.file.buffer), true)
70-
71+
assertFileProperties(req.file, 'empty.dat')
72+
7173
done()
7274
})
7375
})
@@ -97,40 +99,13 @@ describe('Memory Storage', function () {
9799

98100
assert(deepEqual(req.body, {}))
99101

100-
assert.strictEqual(req.files.empty[0].fieldname, 'empty')
101-
assert.strictEqual(req.files.empty[0].originalname, 'empty.dat')
102-
assert.strictEqual(req.files.empty[0].size, 0)
103-
assert.strictEqual(req.files.empty[0].buffer.length, 0)
104-
105-
assert.strictEqual(req.files.tiny0[0].fieldname, 'tiny0')
106-
assert.strictEqual(req.files.tiny0[0].originalname, 'tiny0.dat')
107-
assert.strictEqual(req.files.tiny0[0].size, 122)
108-
assert.strictEqual(req.files.tiny0[0].buffer.length, 122)
109-
110-
assert.strictEqual(req.files.tiny1[0].fieldname, 'tiny1')
111-
assert.strictEqual(req.files.tiny1[0].originalname, 'tiny1.dat')
112-
assert.strictEqual(req.files.tiny1[0].size, 7)
113-
assert.strictEqual(req.files.tiny1[0].buffer.length, 7)
114-
115-
assert.strictEqual(req.files.small0[0].fieldname, 'small0')
116-
assert.strictEqual(req.files.small0[0].originalname, 'small0.dat')
117-
assert.strictEqual(req.files.small0[0].size, 1778)
118-
assert.strictEqual(req.files.small0[0].buffer.length, 1778)
119-
120-
assert.strictEqual(req.files.small1[0].fieldname, 'small1')
121-
assert.strictEqual(req.files.small1[0].originalname, 'small1.dat')
122-
assert.strictEqual(req.files.small1[0].size, 315)
123-
assert.strictEqual(req.files.small1[0].buffer.length, 315)
124-
125-
assert.strictEqual(req.files.medium[0].fieldname, 'medium')
126-
assert.strictEqual(req.files.medium[0].originalname, 'medium.dat')
127-
assert.strictEqual(req.files.medium[0].size, 13196)
128-
assert.strictEqual(req.files.medium[0].buffer.length, 13196)
129-
130-
assert.strictEqual(req.files.large[0].fieldname, 'large')
131-
assert.strictEqual(req.files.large[0].originalname, 'large.jpg')
132-
assert.strictEqual(req.files.large[0].size, 2413677)
133-
assert.strictEqual(req.files.large[0].buffer.length, 2413677)
102+
assertFileProperties(req.files.empty[0], 'empty.dat')
103+
assertFileProperties(req.files.tiny0[0], 'tiny0.dat')
104+
assertFileProperties(req.files.tiny1[0], 'tiny1.dat')
105+
assertFileProperties(req.files.small0[0], 'small0.dat')
106+
assertFileProperties(req.files.small1[0], 'small1.dat')
107+
assertFileProperties(req.files.medium[0], 'medium.dat')
108+
assertFileProperties(req.files.large[0], 'large.jpg')
134109

135110
done()
136111
})

test/reuse-middleware.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ describe('Reuse Middleware', function () {
1818
var pending = 8
1919

2020
function submitData (fileCount) {
21+
var expectedSize = util.fileSizeByName('small0.dat')
2122
var form = new FormData()
2223

2324
form.append('name', 'Multer')
@@ -37,8 +38,8 @@ describe('Reuse Middleware', function () {
3738
req.files.forEach(function (file) {
3839
assert.strictEqual(file.fieldname, 'them-files')
3940
assert.strictEqual(file.originalname, 'small0.dat')
40-
assert.strictEqual(file.size, 1778)
41-
assert.strictEqual(file.buffer.length, 1778)
41+
assert.strictEqual(file.size, expectedSize)
42+
assert.strictEqual(file.buffer.length, expectedSize)
4243
})
4344

4445
if (--pending === 0) done()

0 commit comments

Comments
 (0)