CorsExtensionTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 4

Importance

Changes 0
Metric Value
dl 0
loc 49
rs 10
c 0
b 0
f 0
wmc 3
lcom 2
cbo 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 9 1
A tearDown() 0 5 1
A testCorsHeaders() 0 16 1
1
<?php
2
/**
3
 * Copyright 2016 - 2018, Cake Development Corporation (http://cakedc.com)
4
 *
5
 * Licensed under The MIT License
6
 * Redistributions of files must retain the above copyright notice.
7
 *
8
 * @copyright Copyright 2016 - 2018, Cake Development Corporation (http://cakedc.com)
9
 * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
10
 */
11
12
namespace CakeDC\Api\Test\TestCase\Integration\Service\Action\Extension;
13
14
use CakeDC\Api\TestSuite\IntegrationTestCase;
15
use CakeDC\Api\Test\ConfigTrait;
16
use CakeDC\Api\Test\FixturesTrait;
17
use CakeDC\Api\Test\Settings;
18
use Cake\Core\Configure;
19
use Cake\Utility\Hash;
20
21
/**
22
 * Class CorsExtensionTest
23
 *
24
 * @package CakeDC\Api\Test\TestCase\Integration\Service\Extension
25
 */
26
class CorsExtensionTest extends IntegrationTestCase
27
{
28
29
    use ConfigTrait;
30
    use FixturesTrait;
31
32
    /**
33
     * setUp
34
     *
35
     * @return void
36
     */
37
    public function setUp()
38
    {
39
        parent::setUp();
40
        Configure::write('App.fullBaseUrl', 'http://example.com');
41
        $this->_tokenAccess();
42
        $this->_loadDefaultExtensions('CakeDC/Api.Cors');
43
        $this->_loadDefaultExtensions('CakeDC/Api.Paginate');
44
        $this->getDefaultUser(Settings::USER1);
45
    }
46
47
    /**
48
     * tearDown
49
     *
50
     * @return void
51
     */
52
    public function tearDown()
53
    {
54
        parent::tearDown();
55
        Configure::write('Test.Api.Extension', null);
56
    }
57
58
    public function testCorsHeaders()
59
    {
60
        $this->_request['headers']['Origin'] = 'http://foobar.com';
61
        $this->sendRequest('/authors', 'GET', ['limit' => 4, 'sort' => 'id']);
62
        $result = $this->getJsonResponse();
63
        $headers = $this->_response->getHeaders();
64
        $this->assertSuccess($result);
65
        $this->assertTrue(!empty($headers));
66
        $this->assertEquals(['*'], $headers['Access-Control-Allow-Origin']);
67
        $expectedMethods = ['GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH'];
68
        $this->assertEquals($expectedMethods, $headers['Access-Control-Allow-Methods']);
69
        $expectedHeaders = ['X-CSRF-Token, Content-Type, Access-Control-Allow-Headers, Access-Control-Allow-Origin, Authorization, X-Requested-With'];
70
        $this->assertEquals($expectedHeaders, $headers['Access-Control-Allow-Headers']);
71
        $this->assertEquals(['true'], $headers['Access-Control-Allow-Credentials']);
72
        $this->assertEquals([300], $headers['Access-Control-Max-Age']);
73
    }
74
}
75