fix commenting

This commit is contained in:
John McLear 2014-12-27 17:14:40 +01:00
parent 444bbf4cbc
commit 7708460faf
4 changed files with 53 additions and 9 deletions

View file

@ -408,12 +408,18 @@ exports.setHTML = function(padID, html, callback)
getPadSafe(padID, true, function(err, pad) getPadSafe(padID, true, function(err, pad)
{ {
if(ERR(err, callback)) return; if(ERR(err, callback)) return;
// add a new changeset with the new html to the pad // add a new changeset with the new html to the pad
importHtml.setPadHTML(pad, cleanText(html), callback); importHtml.setPadHTML(pad, cleanText(html), function(e){
if(e){
//update the clients on the pad callback(new customError("HTML is malformed","apierror"));
padMessageHandler.updatePadClients(pad, callback); return;
}else{
//update the clients on the pad
padMessageHandler.updatePadClients(pad, callback);
callback();
return;
}
});
}); });
} }

View file

@ -22,9 +22,8 @@ var cheerio = require("cheerio");
function setPadHTML(pad, html, callback) function setPadHTML(pad, html, callback)
{ {
var apiLogger = log4js.getLogger("ImportHtml"); var apiLogger = log4js.getLogger("ImportHtml");
console.warn("setting padhtml");
var $ = cheerio.load(html); var $ = cheerio.load(html);
// Appends a line break, used by Etherpad to ensure a caret is available // Appends a line break, used by Etherpad to ensure a caret is available
// below the last line of an import // below the last line of an import
$('body').append("<p></p>"); $('body').append("<p></p>");
@ -40,7 +39,7 @@ function setPadHTML(pad, html, callback)
cc.collectContent(doc); cc.collectContent(doc);
}catch(e){ }catch(e){
apiLogger.warn("HTML was not properly formed", e); apiLogger.warn("HTML was not properly formed", e);
return; // We don't process the HTML because it was bad.. return callback(e); // We don't process the HTML because it was bad..
} }
var result = cc.finish(); var result = cc.finish();
@ -91,6 +90,7 @@ function setPadHTML(pad, html, callback)
apiLogger.debug('The changeset: ' + theChangeset); apiLogger.debug('The changeset: ' + theChangeset);
pad.setText(""); pad.setText("");
pad.appendRevision(theChangeset); pad.appendRevision(theChangeset);
callback();
} }
exports.setPadHTML = setPadHTML; exports.setPadHTML = setPadHTML;

View file

@ -61,6 +61,9 @@ describe('Permission', function(){
-> setText(padId) -> setText(padId)
-> getLastEdited(padID) -- Should be when setText was performed -> getLastEdited(padID) -- Should be when setText was performed
-> padUsers(padID) -- Should be when setText was performed -> padUsers(padID) -- Should be when setText was performed
-> setHTML(padID) -- Should fail on invalid HTML
-> setHTML(padID) -- Should fail on invalid HTML
-> getHTML(padID) -- Should return HTML close to posted HTML
*/ */
describe('deletePad', function(){ describe('deletePad', function(){
@ -265,6 +268,42 @@ describe('padUsers', function(){
}); });
}) })
describe('setHTML', function(){
it('Sets the HTML of a Pad', function(done) {
var html = "<!DOCTYPE html><html><head><title>Hello HTML</title></head><body<p>Hello World!</p></body></html>";
api.get(endPoint('setHTML')+"&padID="+testPadId+"&html="+html)
.expect(function(res){
if(res.body.code !== 0) throw new Error("Error importing HTML")
})
.expect('Content-Type', /json/)
.expect(200, done)
});
})
describe('setHTML', function(){
it('Sets the HTML of a Pad attempting to pass ugly HTML', function(done) {
var html = "<div><b>Hello HTML</title></head></div>";
api.get(endPoint('setHTML')+"&padID="+testPadId+"&html="+html)
.expect(function(res){
if(res.body.code !== 1) throw new Error("Allowing crappy HTML to be imported")
})
.expect('Content-Type', /json/)
.expect(200, done)
});
})
describe('setHTML', function(){
it('Sets the HTML of a Pad attempting to pass ugly HTML', function(done) {
var html = "<!DOCTYPE html><html><head></head><body><ul><li>Hello World!</li><li>foo</li></ul></body></html>";
api.get(endPoint('setHTML')+"&padID=test&html="+html)
.expect(function(res){
if(res.body.code !== 0) throw new Error("List HTML cant be imported")
})
.expect('Content-Type', /json/)
.expect(200, done)
});
})
var endPoint = function(point){ var endPoint = function(point){

View file

@ -5,7 +5,6 @@ var assert = require('assert')
path = require('path'); path = require('path');
var filePath = path.join(__dirname, '../../../../APIKEY.txt'); var filePath = path.join(__dirname, '../../../../APIKEY.txt');
var apiKey = fs.readFileSync(filePath, {encoding: 'utf-8'}); var apiKey = fs.readFileSync(filePath, {encoding: 'utf-8'});
apiKey = apiKey.replace(/\n$/, ""); apiKey = apiKey.replace(/\n$/, "");
var apiVersion = 1; var apiVersion = 1;