From 553ee7dcdddc101719f1f93cae81b4982ccaacc9 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 26 Oct 2016 12:06:53 +0300 Subject: [PATCH] more chat tests --- src/controllers/accounts/chats.js | 5 +- test/helpers/index.js | 2 +- test/messaging.js | 77 ++++++++++++++++++++++++++++++- test/mocks/newXhr.js | 2 +- 4 files changed, 78 insertions(+), 8 deletions(-) diff --git a/src/controllers/accounts/chats.js b/src/controllers/accounts/chats.js index aea6fbbc33..f70b9b4db8 100644 --- a/src/controllers/accounts/chats.js +++ b/src/controllers/accounts/chats.js @@ -107,10 +107,7 @@ chatsController.redirectToChat = function (req, res, next) { return next(err); } - if (!roomid) { - return helpers.redirect(res, '/user/' + userslug + '/chats'); - } - helpers.redirect(res, '/user/' + userslug + '/chats/' + roomid); + helpers.redirect(res, '/user/' + userslug + '/chats' + (roomid ? '/' + roomid : '')); }); }; diff --git a/test/helpers/index.js b/test/helpers/index.js index 2cefcd4018..116f48d49d 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -30,7 +30,7 @@ helpers.loginUser = function (username, password, callback) { if (err || response.statusCode !== 200) { return callback(err || new Error('[[error:invalid-response]]')); } - callback(); + callback(null, jar); }); }); }; \ No newline at end of file diff --git a/test/messaging.js b/test/messaging.js index ecb65c9500..7acb95000a 100644 --- a/test/messaging.js +++ b/test/messaging.js @@ -1,5 +1,4 @@ 'use strict'; -/*global require, before, after*/ var assert = require('assert'); var async = require('async'); @@ -7,15 +6,19 @@ var request = require('request'); var nconf = require('nconf'); var db = require('./mocks/databasemock'); +var meta = require('../src/meta'); var User = require('../src/user'); var Groups = require('../src/groups'); var Messaging = require('../src/messaging'); +var helpers = require('./helpers'); describe('Messaging Library', function () { var testUids; var fooUid; var bazUid; var herpUid; + var roomId; + before(function (done) { // Create 3 users: 1 admin, 2 regular async.parallel([ @@ -81,7 +84,6 @@ describe('Messaging Library', function () { }); describe('rooms', function () { - var roomId; it('should create a new chat room', function (done) { Messaging.newRoom(fooUid, [bazUid, herpUid], function (err, _roomId) { roomId = _roomId; @@ -130,13 +132,84 @@ describe('Messaging Library', function () { }); describe('controller', function () { + it('should 404 if chat is disabled', function (done) { + meta.config.disableChat = 1; + request(nconf.get('url') + '/user/baz/chats', function (err, response) { + assert.ifError(err); + assert.equal(response.statusCode, 404); + done(); + }); + }); + it('should 404 for guest', function (done) { + meta.config.disableChat = 0; request(nconf.get('url') + '/user/baz/chats', function (err, response) { assert.ifError(err); assert.equal(response.statusCode, 404); done(); }); }); + + it('should 404 for non-existent user', function (done) { + request(nconf.get('url') + '/user/doesntexist/chats', function (err, response) { + assert.ifError(err); + assert.equal(response.statusCode, 404); + done(); + }); + }); + + }); + + describe('logged in chat controller', function () { + var jar; + before(function (done) { + helpers.loginUser('herp', 'derpderp', function (err, _jar) { + assert.ifError(err); + jar = _jar; + done(); + }); + }); + + it('should return chats page data', function (done) { + request(nconf.get('url') + '/api/user/herp/chats', {json: true, jar: jar}, function (err, response, body) { + assert.ifError(err); + assert.equal(response.statusCode, 200); + assert(Array.isArray(body.rooms)); + assert.equal(body.rooms.length, 1); + assert.equal(body.title, '[[pages:chats]]'); + done(); + }); + }); + + it('should return room data', function (done) { + request(nconf.get('url') + '/api/user/herp/chats/' + roomId, {json: true, jar: jar}, function (err, response, body) { + assert.ifError(err); + assert.equal(response.statusCode, 200); + assert.equal(body.roomId, roomId); + assert.equal(body.isOwner, false); + done(); + }); + }); + + it('should redirect to chats page', function (done) { + request(nconf.get('url') + '/api/chats', {jar: jar}, function (err, response, body) { + assert.ifError(err); + assert.equal(body, '"/user/herp/chats"'); + assert.equal(response.statusCode, 308); + done(); + }); + }); + + it('should return 404 if user is not in room', function (done) { + helpers.loginUser('baz', 'quuxquux', function (err, jar) { + assert.ifError(err); + request(nconf.get('url') + '/api/user/baz/chats/' + roomId, {json: true, jar: jar}, function (err, response, body) { + assert.ifError(err); + assert.equal(response.statusCode, 404); + done(); + }); + }); + }); }); diff --git a/test/mocks/newXhr.js b/test/mocks/newXhr.js index ba0e7fa7bd..a523d77617 100644 --- a/test/mocks/newXhr.js +++ b/test/mocks/newXhr.js @@ -1,6 +1,6 @@ // see https://gist.github.com/jfromaniello/4087861#gistcomment-1447029 // XMLHttpRequest to override. -/* globals console, require, module */ + var npm2Path = '../../node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest-ssl'; var npm3Path = '../../node_modules/xmlhttprequest-ssl'; var filePath;