mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-11 02:12:21 -05:00
Added handling for PUT members endpoint (#11194)
no issue - Adds the ability to edit `name` field for a specific member by using `PUT /members/:id` endpoint
This commit is contained in:
parent
d4f71ade11
commit
30326cbd2d
12 changed files with 124 additions and 10 deletions
|
@ -68,6 +68,26 @@ const members = {
|
|||
}
|
||||
},
|
||||
|
||||
edit: {
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
options: [
|
||||
'id'
|
||||
],
|
||||
validation: {
|
||||
options: {
|
||||
id: {
|
||||
required: true
|
||||
}
|
||||
}
|
||||
},
|
||||
permissions: true,
|
||||
async query(frame) {
|
||||
const member = await membersService.api.members.update(frame.data.members[0], frame.options);
|
||||
return member;
|
||||
}
|
||||
},
|
||||
|
||||
destroy: {
|
||||
statusCode: 204,
|
||||
headers: {},
|
||||
|
|
|
@ -16,6 +16,14 @@ module.exports = {
|
|||
};
|
||||
},
|
||||
|
||||
edit(data, apiConfig, frame) {
|
||||
debug('edit');
|
||||
|
||||
frame.response = {
|
||||
members: [data]
|
||||
};
|
||||
},
|
||||
|
||||
read(data, apiConfig, frame) {
|
||||
debug('read');
|
||||
|
||||
|
|
|
@ -5,5 +5,11 @@ module.exports = {
|
|||
const schema = require('./schemas/members-add');
|
||||
const definitions = require('./schemas/members');
|
||||
return jsonSchema.validate(schema, definitions, frame.data);
|
||||
},
|
||||
|
||||
edit(apiConfig, frame) {
|
||||
const schema = require('./schemas/members-edit');
|
||||
const definitions = require('./schemas/members');
|
||||
return jsonSchema.validate(schema, definitions, frame.data);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"$id": "members.edit",
|
||||
"title": "members.edit",
|
||||
"description": "Schema for members.edit",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"members": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"maxItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"allOf": [{"$ref": "members#/definitions/member"}]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["members"]
|
||||
}
|
|
@ -68,6 +68,26 @@ const members = {
|
|||
}
|
||||
},
|
||||
|
||||
edit: {
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
options: [
|
||||
'id'
|
||||
],
|
||||
validation: {
|
||||
options: {
|
||||
id: {
|
||||
required: true
|
||||
}
|
||||
}
|
||||
},
|
||||
permissions: true,
|
||||
async query(frame) {
|
||||
const member = await membersService.api.members.update(frame.data.members[0], frame.options);
|
||||
return member;
|
||||
}
|
||||
},
|
||||
|
||||
destroy: {
|
||||
statusCode: 204,
|
||||
headers: {},
|
||||
|
|
|
@ -16,6 +16,14 @@ module.exports = {
|
|||
};
|
||||
},
|
||||
|
||||
edit(data, apiConfig, frame) {
|
||||
debug('edit');
|
||||
|
||||
frame.response = {
|
||||
members: [data]
|
||||
};
|
||||
},
|
||||
|
||||
read(data, apiConfig, frame) {
|
||||
debug('read');
|
||||
|
||||
|
|
|
@ -5,5 +5,11 @@ module.exports = {
|
|||
const schema = require('./schemas/members-add');
|
||||
const definitions = require('./schemas/members');
|
||||
return jsonSchema.validate(schema, definitions, frame.data);
|
||||
},
|
||||
|
||||
edit(apiConfig, frame) {
|
||||
const schema = require('./schemas/members-edit');
|
||||
const definitions = require('./schemas/members');
|
||||
return jsonSchema.validate(schema, definitions, frame.data);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"$id": "members.edit",
|
||||
"title": "members.edit",
|
||||
"description": "Schema for members.edit",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"members": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"maxItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"allOf": [{"$ref": "members#/definitions/member"}]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["members"]
|
||||
}
|
|
@ -105,6 +105,7 @@ module.exports = function apiRoutes() {
|
|||
router.get('/members', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.browse));
|
||||
router.post('/members', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.add));
|
||||
router.get('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.read));
|
||||
router.put('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.edit));
|
||||
router.del('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.destroy));
|
||||
|
||||
// ## Roles
|
||||
|
|
|
@ -105,6 +105,7 @@ module.exports = function apiRoutes() {
|
|||
router.get('/members', shared.middlewares.labs.members, mw.authAdminApi, http(apiv2.members.browse));
|
||||
router.post('/members', shared.middlewares.labs.members, mw.authAdminApi, http(apiv2.members.add));
|
||||
router.get('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiv2.members.read));
|
||||
router.put('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiv2.members.edit));
|
||||
router.del('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiv2.members.destroy));
|
||||
|
||||
// ## Roles
|
||||
|
|
|
@ -114,15 +114,15 @@ describe('Members API', function () {
|
|||
.expect(422);
|
||||
});
|
||||
|
||||
it.skip('Can edit by id', function () {
|
||||
it('Can edit by id', function () {
|
||||
const memberToChange = {
|
||||
name: 'changed',
|
||||
email: 'member1Changed@test.com'
|
||||
name: 'change me',
|
||||
email: 'member2Change@test.com'
|
||||
};
|
||||
|
||||
const memberChanged = {
|
||||
name: 'changed',
|
||||
email: 'member1Changed@test.com'
|
||||
email: 'cantChangeMe@test.com'
|
||||
};
|
||||
|
||||
return request
|
||||
|
@ -159,7 +159,8 @@ describe('Members API', function () {
|
|||
jsonResponse.members.should.have.length(1);
|
||||
localUtils.API.checkResponse(jsonResponse.members[0], 'member');
|
||||
jsonResponse.members[0].name.should.equal(memberChanged.name);
|
||||
jsonResponse.members[0].email.should.equal(memberChanged.email);
|
||||
jsonResponse.members[0].email.should.not.equal(memberChanged.email);
|
||||
jsonResponse.members[0].email.should.equal(memberToChange.email);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -114,15 +114,15 @@ describe('Members API', function () {
|
|||
.expect(422);
|
||||
});
|
||||
|
||||
it.skip('Can edit by id', function () {
|
||||
it('Can edit by id', function () {
|
||||
const memberToChange = {
|
||||
name: 'changed',
|
||||
email: 'member1Changed@test.com'
|
||||
name: 'change me',
|
||||
email: 'member2Change@test.com'
|
||||
};
|
||||
|
||||
const memberChanged = {
|
||||
name: 'changed',
|
||||
email: 'member1Changed@test.com'
|
||||
email: 'cantChangeMe@test.com'
|
||||
};
|
||||
|
||||
return request
|
||||
|
@ -159,7 +159,8 @@ describe('Members API', function () {
|
|||
jsonResponse.members.should.have.length(1);
|
||||
localUtils.API.checkResponse(jsonResponse.members[0], 'member');
|
||||
jsonResponse.members[0].name.should.equal(memberChanged.name);
|
||||
jsonResponse.members[0].email.should.equal(memberChanged.email);
|
||||
jsonResponse.members[0].email.should.not.equal(memberChanged.email);
|
||||
jsonResponse.members[0].email.should.equal(memberToChange.email);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue