ClientTest::testSendMultiRequest()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 11
c 0
b 0
f 0
dl 0
loc 18
rs 9.9
cc 1
nc 1
nop 0
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