diff --git a/apiServer.js b/apiServer.js index dfb3a55..fe29fbc 100644 --- a/apiServer.js +++ b/apiServer.js @@ -5,30 +5,37 @@ let bodyParser = require('body-parser'); let morgan = require('morgan'); let wolframBot = require('./wolframBot'); -module.exports = function(){ - console.log('process.env -->', process.env); - let app = express(); - let port = process.env.PORT || config.get('port'); - - app.use(bodyParser.urlencoded({ extended: true })); - app.use(morgan('dev')); +console.log('process.env -->', process.env); +let app = express(); +let port = process.env.PORT || config.get('port'); - app.use('/',router()); +// app.use(bodyParser()); +app.use(bodyParser.urlencoded({ extended: false })); +app.use(morgan('dev')); - let server = app.listen(port, function () { - console.log('Slack-Wolfram|Alpha listening on port ' + port); - }); +app.use('/',router()); + +process.on('SIGINT', function() { + server.close(); + process.exit(); +}); - process.on('SIGINT', function() { - server.close(); - process.exit(); +function router(){ + var expressRouter = express.Router(); + expressRouter.post('/wolframBot', wolframBot); + expressRouter.get('/someGet', function(req, res){ + res.status(200).json({a:'result'}); + }); + return expressRouter; +} + +function start(){ + app.listen(port, function () { + console.log('Slack-Wolfram|Alpha listening on port ' + port); }); +} - function router(){ - var expressRouter = express.Router(); - expressRouter.post('/wolframBot', wolframBot); - return expressRouter; +exports.start = start; - } +exports.app = app; -}; \ No newline at end of file diff --git a/app.js b/app.js index 7988a16..9855b78 100644 --- a/app.js +++ b/app.js @@ -2,4 +2,4 @@ require('babel/register')({ optional: ['runtime', 'es7.asyncFunctions'] }); var apiServer = require('./apiServer'); -apiServer(); \ No newline at end of file +apiServer.start(); diff --git a/mocha-babel.js b/mocha-babel.js new file mode 100644 index 0000000..fa8133f --- /dev/null +++ b/mocha-babel.js @@ -0,0 +1,3 @@ +require('babel/register')({ + optional: ['runtime', 'es7.asyncFunctions'] +}); \ No newline at end of file diff --git a/package.json b/package.json index ac4cbd3..8f94341 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Slack with Wolfram|Alpha", "main": "app.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "mocha --require mocha-babel", "start": "node app.js" }, "author": "Jasper Mishra (https://www.linkedin.com/profile/view?id=168344449)", @@ -20,5 +20,10 @@ "nconf": "^0.7.1", "request": "^2.58.0", "xml2js": "^0.4.9" + }, + "devDependencies": { + "chai": "^3.2.0", + "mocha": "^2.2.5", + "supertest": "^1.0.1" } } diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..b465aae --- /dev/null +++ b/test/test.js @@ -0,0 +1,54 @@ +import mocha from 'mocha'; +import {assert, should, expect} from 'chai'; +import request from 'supertest'; +import apiServer from '../apiServer'; + +describe('Inegration tests', function(){ + let appObj = apiServer.app; + describe('testing posts to wolfram server ', function(){ + this.timeout(0); //disabling timeout coz Wolfram|Alpha takes way too long in comparison to Mocha's optimism + let textObj = {text: "wolfram parabola"}; + it("posts 'wolfram parabola' and gets 200", function(done){ + let textObj = {text: "wolfram parabola"}; + request(appObj) + .post('/wolframBot') + .type('form') + .send(textObj) + .end( (err, res) => { + if(err) return done(err); + expect(res.body.attachments).to.exist; + expect(res.body.attachments).have.length.above(0); + done(); + }); + }); + + it("posts 'wofram What bands have recorded a version of Eleanor Rigby?' and gets 200 with response", function(done){ + let textObj = {text: 'wolfram What bands have recorded a version of Eleanor Rigby?'}; + request(appObj) + .post('/wolframBot') + .type('form') + .send(textObj) + .end(function(err, res){ + if(err) return done(err); + expect(res.body.attachments).to.exist; + expect(res.body.attachments).have.length.above(0); + done(); + }); + }); + + it("post 'wofram wqruohsabfkasbfas and returns res.200 with tips response", function(done){ + let textObj = {text: 'wqruohsabfkasbfas'}; + request(appObj) + .post('/wolframBot') + .type('form') + .send(textObj) + .end(function(err, res){ + if(err) return done(err); + expect(res.body.text).to.equal('Error while processing query'); + done(); + }); + }); + }); +}); + + diff --git a/wolframBot.js b/wolframBot.js index 4acd67c..79cc4fe 100644 --- a/wolframBot.js +++ b/wolframBot.js @@ -10,6 +10,8 @@ let prequest = Promise.promisify(request); let pParseString = Promise.promisify(parseString); module.exports = function(req, res, next){ + // console.log('req -->', req); + console.log('req.body ---->', req.body); let triggerWord = req.body.trigger_word; let configUsername = process.env.username || config.get('username'); let configTriggerWords = process.env.triggerWords || config.get('triggerWords');