/**
* Test CORS
*
* @dataProvider corsData
* @param Request $request
* @param string $origin
* @param string|array $domains
* @param string|array $methods
* @param string|array $headers
* @param string|bool $expectedOrigin
* @param string|bool $expectedMethods
* @param string|bool $expectedHeaders
* @return void
*/
public function testCors($request, $origin, $domains, $methods, $headers, $expectedOrigin, $expectedMethods = false, $expectedHeaders = false)
{
$request->env('HTTP_ORIGIN', $origin);
$response = new Response();
$result = $response->cors($request, $domains, $methods, $headers);
$this->assertInstanceOf('Cake\\Network\\CorsBuilder', $result);
$headers = $response->header();
if ($expectedOrigin) {
$this->assertArrayHasKey('Access-Control-Allow-Origin', $headers);
$this->assertEquals($expectedOrigin, $headers['Access-Control-Allow-Origin']);
}
if ($expectedMethods) {
$this->assertArrayHasKey('Access-Control-Allow-Methods', $headers);
$this->assertEquals($expectedMethods, $headers['Access-Control-Allow-Methods']);
}
if ($expectedHeaders) {
$this->assertArrayHasKey('Access-Control-Allow-Headers', $headers);
$this->assertEquals($expectedHeaders, $headers['Access-Control-Allow-Headers']);
}
unset($_SERVER['HTTP_ORIGIN']);
}