mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-01-31 19:02:59 +01:00
bumpage
This commit is contained in:
parent
73d6030762
commit
cadb83ac5a
4 changed files with 81 additions and 7 deletions
|
@ -410,7 +410,16 @@ exports.setHTML = function(padID, html, callback)
|
||||||
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){
|
||||||
|
callback(new customError("HTML is malformed","apierror"));
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
//update the clients on the pad
|
||||||
|
padMessageHandler.updatePadClients(pad, callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//update the clients on the pad
|
//update the clients on the pad
|
||||||
padMessageHandler.updatePadClients(pad, callback);
|
padMessageHandler.updatePadClients(pad, callback);
|
||||||
|
|
|
@ -232,11 +232,9 @@ exports.doImport = function(req, res, padId)
|
||||||
if(!directDatabaseAccess){
|
if(!directDatabaseAccess){
|
||||||
var fileEnding = path.extname(srcFile).toLowerCase();
|
var fileEnding = path.extname(srcFile).toLowerCase();
|
||||||
if (abiword || fileEnding == ".htm" || fileEnding == ".html") {
|
if (abiword || fileEnding == ".htm" || fileEnding == ".html") {
|
||||||
try{
|
importHtml.setPadHTML(pad, text, function(e){
|
||||||
importHtml.setPadHTML(pad, text);
|
if(e) apiLogger.warn("Error importing, possibly caused by malformed HTML");
|
||||||
}catch(e){
|
});
|
||||||
apiLogger.warn("Error importing, possibly caused by malformed HTML");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
pad.setText(text);
|
pad.setText(text);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,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();
|
||||||
|
|
|
@ -12,6 +12,7 @@ var apiVersion = 1;
|
||||||
var testPadId = makeid();
|
var testPadId = makeid();
|
||||||
var lastEdited = "";
|
var lastEdited = "";
|
||||||
var text = generateLongText();
|
var text = generateLongText();
|
||||||
|
var ULhtml = '<!DOCTYPE html><html><body><ul class="bullet"><li>one</li><li>2</li></ul><br><ul class="bullet"><ul class="bullet"><li>UL2</li></ul></ul></body></html>';
|
||||||
|
|
||||||
describe('Connectivity', function(){
|
describe('Connectivity', function(){
|
||||||
it('errors if can not connect', function(done) {
|
it('errors if can not connect', function(done) {
|
||||||
|
@ -71,6 +72,9 @@ describe('Permission', function(){
|
||||||
-> movePad(newPadID, originalPadId) -- Should provide consistant pad data
|
-> movePad(newPadID, originalPadId) -- Should provide consistant pad data
|
||||||
-> getText(originalPadId) -- Should be "hello world"
|
-> getText(originalPadId) -- Should be "hello world"
|
||||||
-> getLastEdited(padID) -- Should not be 0
|
-> getLastEdited(padID) -- Should not be 0
|
||||||
|
-> setHTML(padID) -- Should fail on invalid HTML
|
||||||
|
-> setHTML(padID) *3 -- Should fail on invalid HTML
|
||||||
|
-> getHTML(padID) -- Should return HTML close to posted HTML
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -390,6 +394,69 @@ describe('getLastEdited', function(){
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
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 with a bunch of weird unordered lists inserted', function(done) {
|
||||||
|
api.get(endPoint('setHTML')+"&padID=test&html="+ULhtml)
|
||||||
|
.expect(function(res){
|
||||||
|
if(res.body.code !== 0) throw new Error("List HTML cant be imported")
|
||||||
|
})
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(200, done)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('getHTML', function(){
|
||||||
|
// will fail due to https://github.com/ether/etherpad-lite/issues/1604
|
||||||
|
// reminder to self this is how the HTML looks
|
||||||
|
// <ul>
|
||||||
|
// <li>one</li>
|
||||||
|
// <li>2</li>
|
||||||
|
// </ul>
|
||||||
|
// <br>
|
||||||
|
// <ul class="bullet">
|
||||||
|
// <ul class="bullet">
|
||||||
|
// <li>UL2</li>
|
||||||
|
// </ul>
|
||||||
|
// </ul>
|
||||||
|
// It will look right in the browser but the export will get it horriby wrong
|
||||||
|
|
||||||
|
// This is what the export puts out
|
||||||
|
// <ul class="bullet">
|
||||||
|
// <li>one</li>
|
||||||
|
// <li>2</li>
|
||||||
|
// </ul>
|
||||||
|
// <br>
|
||||||
|
// <ul class="bullet">
|
||||||
|
// NOTE THIS IS WHAT'S MISSING
|
||||||
|
// <li>UL2</li>
|
||||||
|
// </ul>
|
||||||
|
// <br>
|
||||||
|
|
||||||
|
it('Gets the HTML of a Pad with a bunch of weird unordered lists inserted', function(done) {
|
||||||
|
api.get(endPoint('getHTML')+"&padID=test")
|
||||||
|
.expect(function(res){
|
||||||
|
console.log(res.body.data.html);
|
||||||
|
if(res.body.data !== ULhtml) throw new Error("Imported HTML does not match served HTML")
|
||||||
|
})
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.expect(200, done)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
-> movePadForce Test
|
-> movePadForce Test
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue