0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00

Fixed validation for Members API newsletters endpoint

refs https://github.com/TryGhost/Toolbox/issues/465
refs 31546a6fd3/packages/admin-api-schema/lib/schemas/members.json (L93-L103)

- Updated Members API newsletter validation to match the subset of Admin API's members validation schema.
This commit is contained in:
Naz 2022-11-07 17:18:36 +07:00
parent 81566aca88
commit 6989d08b19
No known key found for this signature in database
2 changed files with 20 additions and 0 deletions

View file

@ -187,6 +187,8 @@ describe('Front-end members behavior', function () {
getJsonResponse.newsletters.should.have.length(1); getJsonResponse.newsletters.should.have.length(1);
// Can update newsletter subscription // Can update newsletter subscription
const originalNewsletters = getJsonResponse.newsletters;
const res = await request.put(`/members/api/member/newsletters?uuid=${memberUUID}`) const res = await request.put(`/members/api/member/newsletters?uuid=${memberUUID}`)
.send({ .send({
newsletters: [] newsletters: []
@ -198,6 +200,18 @@ describe('Front-end members behavior', function () {
jsonResponse.should.have.properties(['email', 'uuid', 'status', 'name', 'newsletters']); jsonResponse.should.have.properties(['email', 'uuid', 'status', 'name', 'newsletters']);
jsonResponse.should.not.have.property('id'); jsonResponse.should.not.have.property('id');
jsonResponse.newsletters.should.have.length(0); jsonResponse.newsletters.should.have.length(0);
const resRestored = await request.put(`/members/api/member/newsletters?uuid=${memberUUID}`)
.send({
newsletters: originalNewsletters
})
.expect(200);
const restoreJsonResponse = resRestored.body;
should.exist(restoreJsonResponse);
restoreJsonResponse.should.have.properties(['email', 'uuid', 'status', 'name', 'newsletters']);
restoreJsonResponse.should.not.have.property('id');
restoreJsonResponse.newsletters.should.have.length(1);
}); });
it('should serve theme 404 on members endpoint', async function () { it('should serve theme 404 on members endpoint', async function () {

View file

@ -405,6 +405,12 @@ module.exports = class MemberRepository {
'expertise' 'expertise'
]); ]);
if (data.newsletters) {
data.newsletters = data.newsletters.map(newsletter => ({
id: newsletter.id
}));
}
// Trim whitespaces from expertise // Trim whitespaces from expertise
if (memberData.expertise) { if (memberData.expertise) {
memberData.expertise = memberData.expertise.trim(); memberData.expertise = memberData.expertise.trim();