API: `getText` with old revision should only return text, not atext

Co-authored-by: Richard Hansen <rhansen@rhansen.org>
This commit is contained in:
John McLear 2021-09-24 15:28:19 +01:00 committed by Richard Hansen
parent 75ee1ef535
commit 6cca27dea6
3 changed files with 22 additions and 1 deletions

View File

@ -8,6 +8,8 @@
* `padOptions.showChat`
* `padOptions.userColor`
* `padOptions.userName`
* Fixed the return value of the `getText` HTTP API when called with a specific
revision.
* Fixed a potential attribute pool corruption bug with `copyPadWithoutHistory`.
* Mappings created by the `createGroupIfNotExistsFor` HTTP API are now removed
from the database when the group is deleted.

View File

@ -172,7 +172,9 @@ exports.getText = async (padID, rev) => {
}
// get the text of this revision
const text = await pad.getInternalRevisionAText(rev);
// getInternalRevisionAText() returns an atext object but we only want the .text inside it.
// Details at https://github.com/ether/etherpad-lite/issues/5073
const {text} = await pad.getInternalRevisionAText(rev);
return {text};
}

View File

@ -102,6 +102,7 @@ describe(__filename, function () {
-> getLastEdited(padID) -- Should not be 0
-> appendText(padID, "hello")
-> getText(padID) -- Should be "hello worldhello"
-> getText(padID, rev=2) - should return "hello world"
-> setHTML(padID) -- Should fail on invalid HTML
-> setHTML(padID) *3 -- Should fail on invalid HTML
-> getHTML(padID) -- Should return HTML close to posted HTML
@ -401,6 +402,22 @@ describe(__filename, function () {
assert.equal(res.body.data.text, `${text}hello\n`);
});
it('getText of old revision', async function () {
let res = await agent.get(`${endPoint('getRevisionsCount')}&padID=${testPadId}`)
.expect(200)
.expect('Content-Type', /json/);
assert.equal(res.body.code, 0);
const rev = res.body.data.revisions;
assert(rev != null);
assert(Number.isInteger(rev));
assert(rev > 0);
res = await agent.get(`${endPoint('getText')}&padID=${testPadId}&rev=${rev - 1}`)
.expect(200)
.expect('Content-Type', /json/);
assert.equal(res.body.code, 0);
assert.equal(res.body.data.text, `${text}\n`);
});
it('Sets the HTML of a Pad attempting to pass ugly HTML', async function () {
const html = '<div><b>Hello HTML</title></head></div>';
const res = await agent.post(endPoint('setHTML'))