ClientTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 9
Bugs 0 Features 0
Metric Value
wmc 4
eloc 26
c 9
b 0
f 0
dl 0
loc 51
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testSendSingleRequest() 0 7 1
A testSendSingleRequestWithEmptyUri() 0 8 1
A testSendMultiRequest() 0 18 1
A testSendMultiRequestWithEmptyUri() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Sunrise\Http\Client\Curl\Tests;
6
7
use PHPUnit\Framework\TestCase;
8
use Psr\Http\Client\NetworkExceptionInterface;
9
use Sunrise\Http\Client\Curl\Client;
10
use Sunrise\Http\Client\Curl\Exception\ClientException;
11
use Sunrise\Http\Client\Curl\MultiRequest;
12
use Sunrise\Http\Message\RequestFactory;
13
use Sunrise\Http\Message\ResponseFactory;
14
15
final class ClientTest extends TestCase
16
{
17
    private const TEST_URI = 'https://www.php.net/robots.txt';
18
19
    public function testSendSingleRequest(): void
20
    {
21
        $request = (new RequestFactory())->createRequest('GET', self::TEST_URI);
22
        $response = (new Client(new ResponseFactory()))->sendRequest($request);
23
24
        self::assertSame(200, $response->getStatusCode());
25
        self::assertTrue($response->hasHeader('X-Request-Time'));
26
    }
27
28
    public function testSendMultiRequest(): void
29
    {
30
        $requestFactory = new RequestFactory();
31
32
        $request = new MultiRequest(
33
            foo: $requestFactory->createRequest('GET', self::TEST_URI),
34
            bar: $requestFactory->createRequest('GET', self::TEST_URI),
35
        );
36
37
        $responses = (new Client(new ResponseFactory()))->sendRequest($request)->getResponses();
38
39
        self::assertArrayHasKey('foo', $responses);
40
        self::assertSame(200, $responses['foo']->getStatusCode());
41
        self::assertTrue($responses['foo']->hasHeader('X-Request-Time'));
42
43
        self::assertArrayHasKey('bar', $responses);
44
        self::assertSame(200, $responses['bar']->getStatusCode());
45
        self::assertTrue($responses['bar']->hasHeader('X-Request-Time'));
46
    }
47
48
    public function testSendSingleRequestWithEmptyUri(): void
49
    {
50
        $client = new Client(new ResponseFactory());
51
        $request = (new RequestFactory())->createRequest('GET', '');
52
53
        $this->expectException(NetworkExceptionInterface::class);
54
        // $this->expectExceptionMessage('<url> malformed');
55
        $client->sendRequest($request);
56
    }
57
58
    public function testSendMultiRequestWithEmptyUri(): void
59
    {
60
        $client = new Client(new ResponseFactory());
61
        $request = new MultiRequest((new RequestFactory())->createRequest('GET', ''));
62
63
        $this->expectException(ClientException::class);
64
        $this->expectExceptionMessage('Failed to retrieve response code. Please check the request and verify network accessibility.');
65
        $client->sendRequest($request);
66
    }
67
}
68