1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 'use strict';
- const path = require('path');
- const request = require('supertest');
- const assert = require('assert');
- const server = require('./server');
- const clearUploadsDir = server.clearUploadsDir;
- const fileDir = server.fileDir;
- describe('Test Single File Upload With File Size Limit', function() {
- let app, limitHandlerRun;
- beforeEach(function() {
- clearUploadsDir();
- });
- describe('abort connection on limit reached', function() {
- before(function() {
- app = server.setup({
- limits: {fileSize: 200 * 1024}, // set 200kb upload limit
- abortOnLimit: true
- });
- });
- it(`upload 'basketball.png' (~154kb) with 200kb size limit`, function(done) {
- let filePath = path.join(fileDir, 'basketball.png');
- request(app)
- .post('/upload/single/truncated')
- .attach('testFile', filePath)
- .expect(200)
- .end(done);
- });
- it(`fail when uploading 'car.png' (~269kb) with 200kb size limit`, function(done) {
- let filePath = path.join(fileDir, 'car.png');
- request(app)
- .post('/upload/single/truncated')
- .attach('testFile', filePath)
- .expect(413)
- .end(done);
- });
- });
- describe('Run limitHandler on limit reached.', function(){
- before(function() {
- app = server.setup({
- limits: {fileSize: 200 * 1024}, // set 200kb upload limit
- limitHandler: (req, res) => { // set limit handler
- res.writeHead(500, { Connection: 'close', 'Content-Type': 'application/json'});
- res.end(JSON.stringify({response: 'Limit reached!'}));
- limitHandlerRun = true;
- }
- });
- });
- it(`Run limit handler when uploading 'car.png' (~269kb) with 200kb size limit`, function(done) {
- let filePath = path.join(fileDir, 'car.png');
- limitHandlerRun = false;
- request(app)
- .post('/upload/single/truncated')
- .attach('testFile', filePath)
- .expect(500, {response: 'Limit reached!'})
- .end(function(err){
- if (err) return done(err);
- if (!limitHandlerRun) return done('handler did not run');
- done();
- });
- });
- });
- describe('pass truncated file to the next handler', function() {
- before(function() {
- app = server.setup({
- limits: {fileSize: 200 * 1024} // set 200kb upload limit
- });
- });
- it(`fail when uploading 'car.png' (~269kb) with 200kb size limit`, function(done) {
- let filePath = path.join(fileDir, 'car.png');
- request(app)
- .post('/upload/single/truncated')
- .attach('testFile', filePath)
- .expect(400)
- .end(function(err, res) {
- assert.ok(res.error.text === 'File too big');
- done();
- });
- });
- });
- });
|