From 978553479359bb18d19316555aa5af211f5e7984 Mon Sep 17 00:00:00 2001 From: Richard Girges Date: Sun, 19 Feb 2017 16:37:20 -0800 Subject: [PATCH] adding more tests --- test/multipartUploads.spec.js | 37 +++++++++++++++++++++++++++++++++++ test/server.js | 31 +++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/test/multipartUploads.spec.js b/test/multipartUploads.spec.js index 76520e5..d237404 100644 --- a/test/multipartUploads.spec.js +++ b/test/multipartUploads.spec.js @@ -15,6 +15,12 @@ const mockFiles = [ 'basketball.png' ]; +let mockUser = { + firstName: 'Joe', + lastName: 'Schmo', + email: 'joe@mailinator.com' +}; + describe('Test Directory Cleaning Method', function() { it('emptied "uploads" directory', function(done) { clearUploadsDir(); @@ -151,3 +157,34 @@ describe('Test File Array Upload', function() { }); }); }); + +describe('Test Upload With Fields', function() { + for (let i = 0; i < mockFiles.length; i++) { + let fileName = mockFiles[i]; + + it(`upload ${fileName} and submit fields at the same time`, function(done) { + let filePath = path.join(fileDir, fileName); + let uploadedFilePath = path.join(uploadDir, fileName); + + clearUploadsDir(); + + request(app) + .post('/upload/single/withfields') + .attach('testFile', filePath) + .field('firstName', mockUser.firstName) + .field('lastName', mockUser.lastName) + .field('email', mockUser.email) + .expect(200, { + firstName: mockUser.firstName, + lastName: mockUser.lastName, + email: mockUser.email + }, + function(err, res) { + if (err) + return done(err); + + fs.stat(uploadedFilePath, done); + }); + }); + } +}); diff --git a/test/server.js b/test/server.js index bfb0195..41a80b7 100644 --- a/test/server.js +++ b/test/server.js @@ -35,6 +35,37 @@ app.all('/upload/single', function(req, res) { }); }); +app.all('/upload/single/withfields', function(req, res) { + if (!req.files) + return res.status(400).send('No files were uploaded.'); + + if (!req.body) + return res.status(400).send('No request body found'); + + if (!req.body.firstName || !req.body.firstName.trim()) + return res.status(400).send('Invalid first name'); + + if (!req.body.lastName || !req.body.lastName.trim()) + return res.status(400).send('Invalid last name'); + + if (!req.body.email || !req.body.email.trim()) + return res.status(400).send('Invalid email'); + + let testFile = req.files.testFile; + let uploadPath = path.join(uploadDir, testFile.name); + + testFile.mv(uploadPath, function(err) { + if (err) + return res.status(500).send(err); + + res.json({ + firstName: req.body.firstName, + lastName: req.body.lastName, + email: req.body.email + }); + }); +}); + app.all('/upload/multiple', function(req, res) { if (!req.files) return res.status(400).send('No files were uploaded.');