Completed
Push — develop ( b0ea9b...86030e )
by
unknown
15s
created

RestTestCase::getPrivateClassMethod()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 5
cts 5
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 2
crap 1
1
<?php
2
/**
3
 * REST test case
4
 *
5
 * Contains additional helpers for testing RESTful servers
6
 */
7
8
namespace Graviton\TestBundle\Test;
9
10
use Graviton\TestBundle\Client;
11
use Symfony\Component\HttpFoundation\Response;
12
13
/**
14
 * REST test case
15
 *
16
 * Contains additional helpers for testing RESTful servers
17
 *
18
 * @author   List of contributors <https://github.com/libgraviton/graviton/graphs/contributors>
19
 * @license  https://opensource.org/licenses/MIT MIT License
20
 * @link     http://swisscom.ch
21
 */
22
class RestTestCase extends GravitonTestCase
23
{
24
25
    /**
26
     * Create a REST Client.
27
     *
28
     * Creates a regular client first so we can profit from the bootstrapping code
29
     * in parent::createClient and is otherwise API compatible with said method.
30
     *
31
     * @param array $options An array of options to pass to the createKernel class
32
     * @param array $server  An array of server parameters
33
     *
34
     * @return \Graviton\TestBundle\Client A Client instance
35
     */
36
    protected static function createRestClient(array $options = [], array $server = array())
37
    {
38
        parent::createClient($options, $server);
39
40
        $client = static::$kernel->getContainer()->get('graviton.test.rest.client');
41
        $client->setServerParameters($server);
42
43
        return $client;
44
    }
45
46
    /**
47
     * test for content type based on classname based mapping
48
     *
49
     * @param string   $contentType Expected Content-Type
50
     * @param Response $response    Response from client
51
     *
52
     * @return void
53
     */
54
    public function assertResponseContentType($contentType, Response $response)
55
    {
56
        $this->assertEquals(
57
            $contentType,
58
            $response->headers->get('Content-Type'),
59
            'Content-Type mismatch in response'
60
        );
61
    }
62
63
    /**
64
     * assertion for checking cors headers
65
     *
66
     * @param string $methods  methods to check for
67
     * @param object $response response to load headers from
68
     *
69
     * @return void
70
     */
71
    public function assertCorsHeaders($methods, $response)
72
    {
73
        $this->assertEquals('*', $response->headers->get('Access-Control-Allow-Origin'));
74
        $this->assertEquals($methods, $response->headers->get('Access-Control-Allow-Methods'));
75
    }
76
77
    /**
78
     * assert that putting a fetched resource fails
79
     *
80
     * @param string $url    url
81
     * @param Client $client client to use
82
     *
83
     * @return void
84
     */
85
    public function assertPutFails($url, $client)
86
    {
87
        $client->request('GET', $url);
88
        $client->put($url, $client->getResults());
89
90
        $response = $client->getResponse();
91
        $this->assertEquals(405, $response->getStatusCode());
92
        $this->assertEquals('GET, HEAD, OPTIONS', $response->headers->get('Allow'));
93
    }
94
}
95