Passed
Push — master ( edb799...f409da )
by Petr
07:56
created

AnswerTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 22
dl 0
loc 33
rs 10
c 1
b 0
f 0
wmc 3
1
<?php
2
3
namespace ProtocolsTests\Restful;
4
5
6
use CommonTestClass;
7
use kalanis\RemoteRequest\Connection;
8
use kalanis\RemoteRequest\Protocols\Http;
9
use kalanis\RemoteRequest\Protocols\Restful;
10
use kalanis\RemoteRequest\Translations;
11
12
13
class AnswerMock extends Connection\Processor
14
{
15
    public function getResponseSimple()
16
    {
17
        return CommonTestClass::stringToResource('HTTP/0.1 901 KO' . Http::DELIMITER
18
            . 'Server: PhpUnit/6.3.0' . Http::DELIMITER
19
            . 'Content-Length: 29' . Http::DELIMITER
20
            . 'Content-Type: text/plain' . Http::DELIMITER
21
            . 'Connection: Closed' . Http::DELIMITER
22
            . Http::DELIMITER
23
            . '{"foou":"barr","abcd":"efgh"}');
24
    }
25
26
    public function getResponseFile()
27
    {
28
        return CommonTestClass::stringToResource('HTTP/0.1 902 KO' . Http::DELIMITER
29
            . 'Server: PhpUnit/6.3.0' . Http::DELIMITER
30
            . 'Content-Length: 109' . Http::DELIMITER
31
            . 'Content-Type: text/plain' . Http::DELIMITER
32
            . 'Connection: Closed' . Http::DELIMITER
33
            . Http::DELIMITER
34
            . '{"foou":"barr","up":{"type":"file","filename":"unknown.txt","mimetype":"text\/plain","content64":"bW5idmN4"}}');
35
    }
36
}
37
38
39
class AnswerTest extends CommonTestClass
40
{
41
    public function testSimple(): void
42
    {
43
        $method = new AnswerMock(new Translations());
44
        $lib = $this->prepareAnswerSimple($method->getResponseSimple());
45
        $this->assertEquals(901, $lib->getCode());
46
        $data = $lib->getDecodedContent(true);
47
        $this->assertEquals('barr', $data['foou']);
48
        $this->assertEquals('efgh', $data['abcd']);
49
        $this->assertEquals('text/plain', $lib->getHeader('Content-Type'));
50
        $this->assertEquals('Closed', $lib->getHeader('Connection'));
51
    }
52
53
    public function testFiles(): void
54
    {
55
        $method = new AnswerMock(new Translations());
56
        $lib = $this->prepareAnswerSimple($method->getResponseFile());
57
        $this->assertEquals(902, $lib->getCode());
58
        $data = $lib->getDecodedContent();
59
        $this->assertEquals('barr', $data->foou);
60
        $this->assertInstanceOf('\stdClass', $data->up);
61
        $this->assertEquals('file', $data->up->type);
62
        $this->assertEquals('unknown.txt', $data->up->filename);
63
        $this->assertEquals('text/plain', $data->up->mimetype);
64
        $this->assertEquals('mnbvcx', base64_decode($data->up->content64));
65
        $this->assertEquals('text/plain', $lib->getHeader('Content-Type'));
66
        $this->assertEquals('Closed', $lib->getHeader('Connection'));
67
    }
68
69
    protected function prepareAnswerSimple($content): Restful\Answer
70
    {
71
        return (new Restful\Answer(new Translations()))->setResponse($content);
72
    }
73
}
74