public function testCheckRequestMethods($apiConfig, $exception, $requestMethods)
{
$listener = $this->getMockBuilder('\\Crud\\Listener\\ApiListener')->setMethods(['_action', '_request'])->disableOriginalConstructor()->getMock();
$action = $this->getMockBuilder('\\Crud\\Action\\IndexAction')->setMethods(['config'])->disableOriginalConstructor()->getMock();
$request = $this->getMockBuilder('\\Cake\\Network\\Request')->setMethods(['is'])->disableOriginalConstructor()->getMock();
$listener->expects($this->at(0))->method('_action')->will($this->returnValue($action));
$action->expects($this->at(0))->method('config')->with('api')->will($this->returnValue($apiConfig));
if (!empty($apiConfig['methods'])) {
$listener->expects($this->at(1))->method('_request')->will($this->returnValue($request));
$r = 0;
foreach ($requestMethods as $method => $bool) {
$request->expects($this->at($r++))->method('is')->with($method)->will($this->returnValue($bool));
}
} else {
$listener->expects($this->never())->method('_request');
}
if (is_string($exception)) {
$this->setExpectedException($exception);
}
$this->setReflectionClassInstance($listener);
$result = $this->callProtectedMethod('_checkRequestMethods', [], $listener);
if (is_bool($exception)) {
$this->assertEquals($exception, $result);
}
}