diff --git a/src/node/db/API.js b/src/node/db/API.js index 77546bd2..edd130e2 100644 --- a/src/node/db/API.js +++ b/src/node/db/API.js @@ -432,8 +432,8 @@ getChatHistory(padId, start, end), returns a part of or the whole chat-history o Example returns: -{"code":0,"message":"ok","data":{"messages":[{"text":"foo","userId":"a.foo","time":1359199533759,"userName":"test"}, - {"text":"bar","userId":"a.foo","time":1359199534622,"userName":"test"}]}} +{"code":0,"message":"ok","data":{"messages":[{"text":"foo","authorID":"a.foo","time":1359199533759,"userName":"test"}, + {"text":"bar","authorID":"a.foo","time":1359199534622,"userName":"test"}]}} {code: 1, message:"start is higher or equal to the current chatHead", data: null} @@ -495,14 +495,14 @@ exports.getChatHistory = function(padID, start, end, callback) } /** -appendChatMessage(padID, text, userID, time), creates a chat message for the pad id +appendChatMessage(padID, text, authorID, time), creates a chat message for the pad id, time is a timestamp Example returns: {code: 0, message:"ok", data: null {code: 1, message:"padID does not exist", data: null} */ -exports.appendChatMessage = function(padID, text, userID, time, callback) +exports.appendChatMessage = function(padID, text, authorID, time, callback) { //text is required if(typeof text != "string") @@ -516,7 +516,7 @@ exports.appendChatMessage = function(padID, text, userID, time, callback) { if(ERR(err, callback)) return; - pad.appendChatMessage(text, userID, parseInt(time)); + pad.appendChatMessage(text, authorID, parseInt(time)); callback(); }); } diff --git a/src/node/handler/APIHandler.js b/src/node/handler/APIHandler.js index 48aa6cbc..a9df3abc 100644 --- a/src/node/handler/APIHandler.js +++ b/src/node/handler/APIHandler.js @@ -438,13 +438,13 @@ var version = , "getChatHistory" : ["padID"] , "getChatHistory" : ["padID", "start", "end"] , "getChatHead" : ["padID"] - , "appendChatMessage" : ["padID", "text", "userID", "time"] + , "appendChatMessage" : ["padID", "text", "authorID", "time"] , "restoreRevision" : ["padID", "rev"] } }; // set the latest available API version here -exports.latestApiVersion = '1.2.11'; +exports.latestApiVersion = '1.2.12'; // exports the versions so it can be used by the new Swagger endpoint exports.version = version; diff --git a/tests/backend/specs/api/chat.js b/tests/backend/specs/api/chat.js new file mode 100644 index 00000000..159f30da --- /dev/null +++ b/tests/backend/specs/api/chat.js @@ -0,0 +1,113 @@ +var assert = require('assert') + supertest = require(__dirname+'/../../../../src/node_modules/supertest'), + fs = require('fs'), + api = supertest('http://localhost:9001'); + path = require('path'); + +var filePath = path.join(__dirname, '../../../../APIKEY.txt'); + +var apiKey = fs.readFileSync(filePath, {encoding: 'utf-8'}); +apiKey = apiKey.replace(/\n$/, ""); +var apiVersion = 1; +var authorID = ""; +var padID = makeid(); +var timestamp = Date.now(); + +describe('API Versioning', function(){ + it('errors if can not connect', function(done) { + api.get('/api/') + .expect(function(res){ + apiVersion = res.body.currentVersion; + if (!res.body.currentVersion) throw new Error("No version set in API"); + return; + }) + .expect(200, done) + }); +}) + +// BEGIN GROUP AND AUTHOR TESTS +///////////////////////////////////// +///////////////////////////////////// + +/* Tests performed +-> createPad(padID) + -> createAuthor([name]) -- should return an authorID + -> appendChatMessage(padID, text, userID, time) + -> getChatHead(padID) + -> getChatHistory(padID) +*/ + +describe('createPad', function(){ + it('creates a new Pad', function(done) { + api.get(endPoint('createPad')+"&padID="+padID) + .expect(function(res){ + if(res.body.code !== 0) throw new Error("Unable to create new Pad"); + }) + .expect('Content-Type', /json/) + .expect(200, done) + }); +}) + +describe('createAuthor', function(){ + it('Creates an author with a name set', function(done) { + api.get(endPoint('createAuthor')) + .expect(function(res){ + if(res.body.code !== 0 || !res.body.data.authorID) throw new Error("Unable to create author"); + authorID = res.body.data.authorID; // we will be this author for the rest of the tests + }) + .expect('Content-Type', /json/) + .expect(200, done) + }); +}) + +describe('appendChatMessage', function(){ + it('Adds a chat message to the pad', function(done) { + api.get(endPoint('appendChatMessage')+"&padID="+padID+"&text=blalblalbha&authorID="+authorID+"&time="+timestamp) + .expect(function(res){ + if(res.body.code !== 0) throw new Error("Unable to create chat message"); + }) + .expect('Content-Type', /json/) + .expect(200, done) + }); +}) + + +describe('getChatHead', function(){ + it('Gets the head of chat', function(done) { + api.get(endPoint('getChatHead')+"&padID="+padID) + .expect(function(res){ + if(res.body.data.chatHead !== 0) throw new Error("Chat Head Length is wrong"); + + if(res.body.code !== 0) throw new Error("Unable to get chat head"); + }) + .expect('Content-Type', /json/) + .expect(200, done) + }); +}) + +describe('getChatHistory', function(){ + it('Gets Chat History of a Pad', function(done) { + api.get(endPoint('getChatHistory')+"&padID="+padID) + .expect(function(res){ + if(res.body.data.messages.length !== 1) throw new Error("Chat History Length is wrong"); + if(res.body.code !== 0) throw new Error("Unable to get chat history"); + }) + .expect('Content-Type', /json/) + .expect(200, done) + }); +}) + +var endPoint = function(point){ + return '/api/'+apiVersion+'/'+point+'?apikey='+apiKey; +} + +function makeid() +{ + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + + for( var i=0; i < 5; i++ ){ + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; +}