UNPKG

docparse-api

Version:

api server for the docparse project

109 lines (99 loc) 3.12 kB
var ce = require('cloneextend'); var mockFetch = require('./mockUploadFetch.js'); var mongoose = require('mongoose'); var ObjectId = mongoose.Types.ObjectId; var rewire = require('rewire'); var fs = require('fs'); var path = require('path'); var should = require('should'); var inspect = require('eyespect').inspector(); var assert = require('assert'); var request = require('request'); var server = require('../server'); var port = Math.floor(Math.random() * 5e4 + 1e4); var configFilePath = path.join(__dirname, 'config.json'); var config = require('docparse-config')(configFilePath); describe('Fetch new upload via api', function() { this.timeout(10*1000); this.slow(2*1000); var filename = 'big.pdf'; var uploadData = { supplierCode: 'FGS', filename: filename }; var filePath = path.join(__dirname, 'data', filename); assert.ok(fs.existsSync(filePath), 'test pdf file not found at path: '+ filePath); uploadData.filePath = filePath; var hash = 'fooHash'; var req = { params: { hash: hash }, user: { _id: new ObjectId() } }; var logger = { info: function(msg, data) { inspect('logger info'); // inspect(data, msg); }, debug: function(msg, data) { inspect('logger debug'); // inspect(data, msg); }, error: function(msg, data) { inspect('logger error'); // inspect(data, msg); } }; it('should get 401 unauthorized for anonymous upload fetch request', function (done) { var uploadFetchRoute = require('../lib/uploadFetch'); var serverData = { port: port }; var scraperServer = server(serverData); should.exist(scraperServer); var options = { url: 'http://localhost' + ':' + port + '/api/upload/fetch/' + hash, method: 'get' }; request(options, function (err, response, body) { scraperServer.close(); should.not.exist(err); var statusCode = response.statusCode; statusCode.should.equal(401, 'wrong status code for unauthorized request'); done(); }); }); it('should get error for upload fetch request without hash parameter', function (done) { var uploadFetchRoute = rewire('../lib/uploadFetch'); uploadFetchRoute.__set__({fetch: mockFetch}); var testRequest = ce.clone(req); testRequest.params.hash = null; var res = { send: function (data) { data.statusCode.should.eql(500); var msg = data.message; var msgData = JSON.parse(msg); var error = msgData[0]; var key = error.key; key.should.eql('hash'); done(); } }; uploadFetchRoute(testRequest, res, {logger: logger, config: config}); }); it('should process valid upload fetch request correctly', function (done) { var uploadFetchRoute = rewire('../lib/uploadFetch'); uploadFetchRoute.__set__({'fetch': mockFetch}); var testRequest = ce.clone(req); var res = { send: function (data) { should.exist(data); done(); } }; uploadFetchRoute(testRequest, res, {logger: logger, config: config}); }); });