docparse-api
Version:
api server for the docparse project
109 lines (99 loc) • 3.12 kB
JavaScript
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});
});
});