const Settings = require('settings-sharelatex') const request = require('./helpers/request') // create a string that is longer than the max allowed (as defined in Server.js) const wayTooLongString = 'a'.repeat(Settings.max_json_request_size + 1) describe('BodyParserErrors', function() { describe('when request is too large', function() { describe('json', function() { it('return 413', function(done) { request.post( { url: '/login', body: { password: wayTooLongString }, json: true }, (error, response, body) => { if (error) { return done(error) } response.statusCode.should.equal(413) body.should.deep.equal({}) done() } ) }) }) describe('urlencoded', function() { it('return 413', function(done) { request.post( { url: '/login', form: { password: wayTooLongString } }, (error, response, body) => { if (error) { return done(error) } response.statusCode.should.equal(413) body.should.match(/I'm afraid I can't do that./) done() } ) }) }) }) describe('when request is not too large', function() { describe('json', function() { it('return normal status code', function(done) { request.post( { url: '/login', body: { password: 'foo' }, json: true }, (error, response, body) => { if (error) { return done(error) } response.statusCode.should.equal(403) done() } ) }) }) describe('urlencoded', function() { it('return normal status code', function(done) { request.post( { url: '/login', form: { password: 'foo' } }, (error, response, body) => { if (error) { return done(error) } response.statusCode.should.equal(403) done() } ) }) }) }) })