Throws error when endpoint method is not found
This commit is contained in:
@ -130,6 +130,10 @@ class API {
|
|||||||
|
|
||||||
$endpoint = new $this->_request_endpoint_class();
|
$endpoint = new $this->_request_endpoint_class();
|
||||||
|
|
||||||
|
if(!method_exists($endpoint, $this->_request_method)) {
|
||||||
|
throw new \Exception(__('Invalid API endpoint method.', 'mailpoet'));
|
||||||
|
}
|
||||||
|
|
||||||
// check the accessibility of the requested endpoint's action
|
// check the accessibility of the requested endpoint's action
|
||||||
// by default, an endpoint's action is considered "private"
|
// by default, an endpoint's action is considered "private"
|
||||||
if(!$this->validatePermissions($this->_request_method, $endpoint->permissions)) {
|
if(!$this->validatePermissions($this->_request_method, $endpoint->permissions)) {
|
||||||
|
@ -221,6 +221,26 @@ class APITest extends \MailPoetTest {
|
|||||||
expect($api->validatePermissions('test', $permissions))->true();
|
expect($api->validatePermissions('test', $permissions))->true();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItThrowsExceptionWhenInvalidEndpointMethodIsCalled() {
|
||||||
|
$this->api = API::JSON(new AccessControl());
|
||||||
|
$namespace = array(
|
||||||
|
'name' => 'MailPoet\API\JSON\v2',
|
||||||
|
'version' => 'v2'
|
||||||
|
);
|
||||||
|
$this->api->addEndpointNamespace($namespace['name'], $namespace['version']);
|
||||||
|
|
||||||
|
$data = array(
|
||||||
|
'endpoint' => 'a_p_i_test_namespaced_endpoint_stub_v2',
|
||||||
|
'api_version' => 'v2',
|
||||||
|
'method' => 'fakeMethod'
|
||||||
|
);
|
||||||
|
$this->api->setRequestData($data);
|
||||||
|
$response = $this->api->processRoute();
|
||||||
|
|
||||||
|
expect($response->status)->equals(Response::STATUS_BAD_REQUEST);
|
||||||
|
expect($response->errors[0]['message'])->equals('Invalid API endpoint method.');
|
||||||
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
WPHooksHelper::releaseAllHooks();
|
WPHooksHelper::releaseAllHooks();
|
||||||
wp_delete_user($this->wp_user_id);
|
wp_delete_user($this->wp_user_id);
|
||||||
|
Reference in New Issue
Block a user