Skip to content
This repository has been archived by the owner on Jan 20, 2022. It is now read-only.

Commit

Permalink
Additional Testing
Browse files Browse the repository at this point in the history
  • Loading branch information
achhabra2 committed Sep 19, 2017
1 parent f7ba3e9 commit 9a589c4
Show file tree
Hide file tree
Showing 12 changed files with 160 additions and 96 deletions.
Binary file modified .DS_Store
Binary file not shown.
4 changes: 4 additions & 0 deletions app.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
"studio_token": {
"description": "BotKit Studio Access Token",
"required": false
},
"secret": {
"description": "Webhook Secret",
"required": true
}
},
"addons": ["mongolab"]
Expand Down
5 changes: 5 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"main": "./src/server.js",
"repository": "https://github.com/achhabra2/inquire",
"author": "Aman Chhabra <aman.chhabra1@gmail.com>",
"license": "MIT",
"dependencies": {
"async": "^0.2.10",
"body-parser": "^1.18.1",
Expand All @@ -14,6 +15,7 @@
"connect-mongo": "^1.3.2",
"console-stamp": "^0.2.5",
"debug": "^3.0.1",
"dotenv": "^4.0.0",
"express": "^4.15.4",
"express-session": "^1.15.5",
"mocha": "^3.5.3",
Expand All @@ -35,8 +37,8 @@
"superagent": "^3.6.0"
},
"scripts": {
"start": "node ./src/server.js",
"test": "nyc --reporter=html --reporter=text mocha",
"start": "node -r dotenv/config ./src/server.js",
"test": "nyc --reporter=html --reporter=text mocha -r dotenv/config",
"coverage": "nyc report --reporter=text-lcov | coveralls"
},
"devDependencies": {
Expand All @@ -48,4 +50,4 @@
"sinon": "^3.2.1",
"supertest": "^3.0.0"
}
}
}
28 changes: 28 additions & 0 deletions src/authentication.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const qnaController = require('./qnaController');

function ensureAuthenticated( req, res, next ) {
if ( req.isAuthenticated() ) {
return next();
}
res.redirect( authUrl )
}

function ensureAccessRights( req, res, next ) {
if ( req.params.room ) {
let roomId = req.params.room;
let personId = req.user.id;
qnaController.checkRights( personId, roomId ).then( rights => {
if ( rights )
return next()
else
res.redirect( errorUrl )
} )
} else {
res.redirect( errorUrl )
}
}

module.exports = {
ensureAccessRights,
ensureAccessRights
}
12 changes: 6 additions & 6 deletions src/qnaController.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';

const debug = require('debug')('Controller');
const Room = require( './qnaModel' ).Room;
const Question = require( './qnaModel' ).Question;
const Spark = require( 'ciscospark/env');
Expand Down Expand Up @@ -34,7 +34,7 @@ var updateRoomActivity = ( roomId ) => {
return room.save()
} )
.then( savedRoom => {
console.log( 'Updated Activity: ' + savedRoom.displayName )
debug( 'Updated Activity: ' + savedRoom.displayName )
return savedRoom
} )
.catch( err => {
Expand Down Expand Up @@ -87,11 +87,11 @@ var updateRoomMemberships = ( roomId ) => {
} )
} )
.then( savedRoom => {
console.log( 'Updated Room Memberships: ' + savedRoom.displayName )
debug( 'Updated Room Memberships: ' + savedRoom.displayName )
return savedRoom
} )
.catch( err => {
console.log( 'Error saving Room Memberships ' )
debug( 'Error saving Room Memberships ' )
} )
}

Expand All @@ -100,7 +100,7 @@ var handleMembershipChange = ( data ) => {
if ( room )
return updateRoomMemberships( data.channel )
else {
console.log( 'Existing room not found' )
debug( 'Existing room not found' )
return null
}
} )
Expand Down Expand Up @@ -172,7 +172,7 @@ var addQuestion = ( message, room ) => {
question.html = message.html
}
return room.save().then( room => {
console.log( 'Updated room successfully.' );
debug( 'Updated room successfully.' );
return question.save()
} );
};
Expand Down
12 changes: 6 additions & 6 deletions src/qnaRouter.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';

const debug = require('debug')('Router');
const express = require( 'express' );
const bodyParser = require( 'body-parser' );
const qnaController = require( './qnaController' );
Expand All @@ -17,7 +17,7 @@ let errorUrl = base + '/error';
let apiUrl = base + '/api/spaces/';

router.get( '/motd', ( req, res ) => {
console.log( 'Received api query for motds' );
debug( 'Received api query for motds' );
qnaController.getMotd()
.then( motds => {
res.json( motds );
Expand All @@ -28,7 +28,7 @@ router.get( '/motd', ( req, res ) => {

router.get( '/spaces/:room', ensureAuthenticated, ensureAccessRights, ( req, res ) => {
let room = req.params.room;
console.log( 'Received room api query for' + room );
debug( 'Received room api query for' + room );
let page = 1;
let limit = 10;
let search;
Expand Down Expand Up @@ -66,7 +66,7 @@ router.get( '/spaces/:room', ensureAuthenticated, ensureAccessRights, ( req, res
} );

router.get( '/listSpaces', ensureAuthenticated, ( req, res ) => {
console.log( 'Received detail api query for all rooms' );
debug( 'Received detail api query for all rooms' );
qnaController.authenticatedRooms( req.user.id )
.then( rooms => {
res.json( rooms );
Expand All @@ -77,7 +77,7 @@ router.get( '/listSpaces', ensureAuthenticated, ( req, res ) => {

router.get( '/spaces/detail/:room', ensureAuthenticated, ensureAccessRights, ( req, res ) => {
let room = req.params.room;
console.log( 'Received detail api query for' + room );
debug( 'Received detail api query for' + room );
qnaController.findRoom( room )
.then( roomDetail => {
res.send( roomDetail );
Expand All @@ -93,7 +93,7 @@ router.get( '/updateSpaces', ( req, res ) => {

router.delete( '/questions/:question', ensureAuthenticated, ( req, res ) => {
let question = req.params.question;
console.log( 'Received delete request for ' + question );
debug( 'Received delete request for ' + question );
qnaController.removeQuestion( question )
.then( roomDetail => {
res.status( 204 ).end();
Expand Down
17 changes: 9 additions & 8 deletions src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@
require( 'console-stamp' )( console, 'yyyy.mm.dd HH:MM:ss.l' );
const debug = require('debug')('Inquire-Server');
debug( 'Initializing App In: ' + process.env.NODE_ENV + ' mode.' );
const fs = require('fs');
// TESTING the use of dotenv instead of node-env-file
// Check for production
// If development environment load .env file
if (fs.existsSync('./.env')) {
console.log('Found env file');
const env = require( 'node-env-file' );
env( './.env' );
}

process.env.CISCOSPARK_ACCESS_TOKEN = process.env.access_token;
// const fs = require('fs');
// if (fs.existsSync('./.env')) {
// console.log('Found env file');
// const env = require( 'node-env-file' );
// env( './.env' );
// }

process.env['CISCOSPARK_ACCESS_TOKEN'] = process.env.access_token;

const session = require( 'express-session' );
const passport = require( 'passport' );
Expand Down
28 changes: 14 additions & 14 deletions src/skills/question.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';

const debug = require('debug')('Skills:Question');
const qnaController = require('../qnaController');
// remove html formatting for Spark Messages
const reg1 = /(\<p\>)/i;
Expand All @@ -11,8 +11,8 @@ const regArray = [/(answer|\/a\/?)(?:\s+)?(\d+)\s+(?:\-\s+)?(\w+.*)$/i]

module.exports = function (controller) {
controller.on('direct_mention', function (bot, message) {
// console.log( 'Debugging answer: ' )
// console.log( message )
// debug( 'Debugging answer: ' )
// debug( message )
let match;
for (let reg of regArray) {
match = reg.exec(message.text)
Expand All @@ -25,13 +25,13 @@ module.exports = function (controller) {
if (match) {
if (message.html) {
filterHtml = message.html.replace(reg5, '').replace(reg4, '').replace(reg3, '').replace(reg1, '').replace(reg2, '');
// console.log( 'HTML Filtering: ' )
// console.log( filterHtml )
// console.log( message.html )
// debug( 'HTML Filtering: ' )
// debug( filterHtml )
// debug( message.html )
message.html = filterHtml;
}
qnaController.handleAnswer(message).then(response => {
console.log('Handled Answer');
debug('Handled Answer');
let questioner = response.personId;
let question;
let answer;
Expand All @@ -58,7 +58,7 @@ module.exports = function (controller) {
markdown: answerMessage
}, (err, message) => {
if(err) console.error(err)
console.log('Answer sent successfully.')
debug('Answer sent successfully.')
})
// bot.startPrivateConversationWithPersonId(questioner, (error, convo) => {
// if (error)
Expand All @@ -69,7 +69,7 @@ module.exports = function (controller) {
// });
// });
var mdMessage = `Answer logged. Click ${mdLink} to view all FAQ.`;
console.log('Received Answer');
debug('Received Answer');
bot.reply(message, {
markdown: mdMessage
});
Expand Down Expand Up @@ -136,8 +136,8 @@ module.exports = function (controller) {
} else {
personalMessage = `<strong>Q - </strong>` + `__${message.text}__`;
}
// console.log( 'Debugging' )
// console.log( message )
// debug( 'Debugging' )
// debug( message )
qnaController.handleQuestion(message).then(room => {
if (room) {
personalMessage += ' has been logged. '
Expand All @@ -153,7 +153,7 @@ module.exports = function (controller) {
markdown: personalMessage
});
});
console.log('Handled question successfully. ');
debug('Handled question successfully. ');
} else {
let errorMsg = 'Sorry there was an error processing your request.';
bot.reply(message, {
Expand All @@ -172,10 +172,10 @@ module.exports = function (controller) {
});
controller.on('user_space_join', function (bot, data) {
qnaController.handleMembershipChange(data)
console.log('Person Joined')
debug('Person Joined')
});
controller.on('user_space_leave', function (bot, data) {
console.log('Person Left')
debug('Person Left')
qnaController.handleMembershipChange(data)
});
controller.hears(/^dbstats/i, 'direct_message', function (bot, message) {
Expand Down
32 changes: 20 additions & 12 deletions test/controller.test.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
const fs = require('fs');
if (fs.existsSync('./.env')) {
console.log('Found env file');
const env = require('node-env-file');
env('./.env');
}
// require('dotenv').config()

const chai = require('chai');
chai.should();
const chaiAsPromised = require("chai-as-promised");

chai.use(chaiAsPromised);
chai.use(require('chai-things'));
chai.use(require("chai-as-promised"));

const qnaController = require('../src/qnaController');

Expand All @@ -21,11 +15,14 @@ describe('Controller ', function () {
it('Should connect to MongoDB', function (done) {
if (!mongoose.connection.readyState)
mongoose.connect(process.env.mongo, {
useMongoClient: true});
useMongoClient: true
});
mongoose.connection.once('open', function () {
mongoose.connection.readyState.should.equal(1);
done();
});
if(mongoose.connection.readyState == 1)
done();
});
});

Expand All @@ -38,8 +35,19 @@ describe('Function: Format Text', function () {
});
});

describe('Controller Database Functions', function() {
it('Should GET MOTDs', function() {
return qnaController.getMotd().should.eventually.be.an('array');
describe('Function: MOTD', function () {
let testMotd;
const Motd = require('../src/motdModel');
before(function () {
testMotd = new Motd({
message: 'Test Message'
});
return testMotd.save();
});
it('Should GET MOTDs', function () {
return qnaController.getMotd().should.eventually.contain.an.item.with.property('message', 'Test Message');
});
after(function() {
return Motd.remove(testMotd);
});
});
Loading

0 comments on commit 9a589c4

Please sign in to comment.