-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathHttpClientTest.php
More file actions
116 lines (98 loc) · 2.79 KB
/
HttpClientTest.php
File metadata and controls
116 lines (98 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
namespace Http\Client\Tests;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Group;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Client\NetworkExceptionInterface;
/**
* @author GeLo <geloen.eric@gmail.com>
*/
abstract class HttpClientTest extends HttpBaseTest
{
/**
* @var ClientInterface
*/
protected $httpAdapter;
/**
* {@inheritdoc}
*/
protected function setUp(): void
{
$this->httpAdapter = $this->createHttpAdapter();
}
/**
* {@inheritdoc}
*/
protected function tearDown(): void
{
unset($this->httpAdapter);
}
abstract protected function createHttpAdapter(): ClientInterface;
/**
* @dataProvider requestProvider
* @group integration
*/
#[Group('integration')]
#[DataProvider('requestProvider')]
public function testSendRequest($method, $uri, array $headers, $body)
{
if (null != $body) {
$headers['Content-Length'] = (string) strlen($body);
}
$request = self::$messageFactory->createRequest(
$method,
$uri,
$headers,
$body
);
$response = $this->httpAdapter->sendRequest($request);
$this->assertResponse(
$response,
[
'body' => 'HEAD' === $method ? null : 'Ok',
]
);
$this->assertRequest($method, $headers, $body, '1.1');
}
/**
* @dataProvider requestWithOutcomeProvider
* @group integration
*/
#[Group('integration')]
#[DataProvider('requestWithOutcomeProvider')]
public function testSendRequestWithOutcome($uriAndOutcome, $protocolVersion, array $headers, $body)
{
if ('1.0' === $protocolVersion) {
$body = null;
}
if (null != $body) {
$headers['Content-Length'] = (string) strlen($body);
}
$request = self::$messageFactory->createRequest(
$method = 'GET',
$uriAndOutcome[0],
$headers,
$body,
$protocolVersion
);
$response = $this->httpAdapter->sendRequest($request);
$outcome = $uriAndOutcome[1];
$outcome['protocolVersion'] = $protocolVersion;
$this->assertResponse($response, $outcome);
$this->assertRequest($method, $headers, $body, $protocolVersion);
}
/**
* @group integration
*/
#[Group('integration')]
public function testSendWithInvalidUri()
{
$request = self::$messageFactory->createRequest(
'GET',
$this->getInvalidUri(),
$this->defaultHeaders
);
$this->expectException(NetworkExceptionInterface::class);
$this->httpAdapter->sendRequest($request);
}
}