Skip to content

Commit

Permalink
✨ Allowed pages to accept HTML as a source (#11422)
Browse files Browse the repository at this point in the history
refs #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.
  • Loading branch information
simiansim authored and naz committed Jan 8, 2020
1 parent 97ea664 commit 6247b52
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 2 deletions.
10 changes: 9 additions & 1 deletion core/server/api/canary/pages.js
Expand Up @@ -85,12 +85,16 @@ module.exports = {
statusCode: 201,
headers: {},
options: [
'include'
'include',
'source'
],
validation: {
options: {
include: {
values: ALLOWED_INCLUDES
},
source: {
values: ['html']
}
}
},
Expand All @@ -117,6 +121,7 @@ module.exports = {
options: [
'include',
'id',
'source',
// NOTE: only for internal context
'forUpdate',
'transacting'
Expand All @@ -128,6 +133,9 @@ module.exports = {
},
id: {
required: true
},
source: {
values: ['html']
}
}
},
Expand Down
10 changes: 9 additions & 1 deletion core/server/api/v2/pages.js
Expand Up @@ -85,12 +85,16 @@ module.exports = {
statusCode: 201,
headers: {},
options: [
'include'
'include',
'source'
],
validation: {
options: {
include: {
values: ALLOWED_INCLUDES
},
source: {
values: ['html']
}
}
},
Expand All @@ -117,6 +121,7 @@ module.exports = {
options: [
'include',
'id',
'source',
// NOTE: only for internal context
'forUpdate',
'transacting'
Expand All @@ -128,6 +133,9 @@ module.exports = {
},
id: {
required: true
},
source: {
values: ['html']
}
}
},
Expand Down
47 changes: 47 additions & 0 deletions core/test/regression/api/canary/admin/pages_spec.js
@@ -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"]]]]}');
});
});
});
});
47 changes: 47 additions & 0 deletions core/test/regression/api/v2/admin/pages_spec.js
@@ -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"]]]]}');
});
});
});
});

0 comments on commit 6247b52

Please sign in to comment.