Allowed pages to accept HTML as a source (#11422)

refs https://github.com/TryGhost/Ghost/issues/10471

- Allow page resource endpoints to accept HTML source. This behavior is the same as the post's resource introduced with e9ecf70ff7372f395b8917340805148bc764e2ef
- The functionality was most likely missed when post split into posts & pages was happening.
- Added symmetric changes to API v2.
This commit is contained in:
Ian Sim 2020-01-08 08:44:34 -08:00 committed by Naz Gargol
parent 97ea664d4d
commit 6247b52367
4 changed files with 112 additions and 2 deletions

View File

@ -85,12 +85,16 @@ module.exports = {
statusCode: 201,
headers: {},
options: [
'include'
'include',
'source'
],
validation: {
options: {
include: {
values: ALLOWED_INCLUDES
},
source: {
values: ['html']
}
}
},
@ -117,6 +121,7 @@ module.exports = {
options: [
'include',
'id',
'source',
// NOTE: only for internal context
'forUpdate',
'transacting'
@ -128,6 +133,9 @@ module.exports = {
},
id: {
required: true
},
source: {
values: ['html']
}
}
},

View File

@ -85,12 +85,16 @@ module.exports = {
statusCode: 201,
headers: {},
options: [
'include'
'include',
'source'
],
validation: {
options: {
include: {
values: ALLOWED_INCLUDES
},
source: {
values: ['html']
}
}
},
@ -117,6 +121,7 @@ module.exports = {
options: [
'include',
'id',
'source',
// NOTE: only for internal context
'forUpdate',
'transacting'
@ -128,6 +133,9 @@ module.exports = {
},
id: {
required: true
},
source: {
values: ['html']
}
}
},

View File

@ -0,0 +1,47 @@
const should = require('should');
const supertest = require('supertest');
const testUtils = require('../../../../utils');
const config = require('../../../../../server/config');
const localUtils = require('./utils');
const ghost = testUtils.startGhost;
let request;
describe('Pages API', function () {
before(function () {
return ghost()
.then(function (_ghostServer) {
request = supertest.agent(config.get('url'));
})
.then(function () {
return localUtils.doAuth(request, 'posts');
});
});
describe('Edit', function () {
it('accepts html source', function () {
return request
.get(localUtils.API.getApiQuery(`pages/${testUtils.DataGenerator.Content.posts[5].id}/`))
.set('Origin', config.get('url'))
.expect(200)
.then((res) => {
res.body.pages[0].slug.should.equal('static-page-test');
return request
.put(localUtils.API.getApiQuery('pages/' + testUtils.DataGenerator.Content.posts[5].id + '/?source=html'))
.set('Origin', config.get('url'))
.send({
pages: [{
html: '<p>HTML Ipsum presents</p>',
updated_at: res.body.pages[0].updated_at
}]
})
.expect('Content-Type', /json/)
.expect('Cache-Control', testUtils.cacheRules.private)
.expect(200);
})
.then((res) => {
res.body.pages[0].mobiledoc.should.equal('{"version":"0.3.1","atoms":[],"cards":[],"markups":[],"sections":[[1,"p",[[0,[],0,"HTML Ipsum presents"]]]]}');
});
});
});
});

View File

@ -0,0 +1,47 @@
const should = require('should');
const supertest = require('supertest');
const testUtils = require('../../../../utils');
const config = require('../../../../../server/config');
const localUtils = require('./utils');
const ghost = testUtils.startGhost;
let request;
describe('Pages API', function () {
before(function () {
return ghost()
.then(function (_ghostServer) {
request = supertest.agent(config.get('url'));
})
.then(function () {
return localUtils.doAuth(request, 'posts');
});
});
describe('Edit', function () {
it('accepts html source', function () {
return request
.get(localUtils.API.getApiQuery(`pages/${testUtils.DataGenerator.Content.posts[5].id}/`))
.set('Origin', config.get('url'))
.expect(200)
.then((res) => {
res.body.pages[0].slug.should.equal('static-page-test');
return request
.put(localUtils.API.getApiQuery('pages/' + testUtils.DataGenerator.Content.posts[5].id + '/?source=html'))
.set('Origin', config.get('url'))
.send({
pages: [{
html: '<p>HTML Ipsum presents</p>',
updated_at: res.body.pages[0].updated_at
}]
})
.expect('Content-Type', /json/)
.expect('Cache-Control', testUtils.cacheRules.private)
.expect(200);
})
.then((res) => {
res.body.pages[0].mobiledoc.should.equal('{"version":"0.3.1","atoms":[],"cards":[],"markups":[],"sections":[[1,"p",[[0,[],0,"HTML Ipsum presents"]]]]}');
});
});
});
});