-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathClientTest.php
More file actions
107 lines (87 loc) · 2.88 KB
/
ClientTest.php
File metadata and controls
107 lines (87 loc) · 2.88 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
<?php
namespace ThisData\Api;
use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;
class ClientTest extends \PHPUnit_Framework_TestCase
{
const DUMMY_API_KEY = 'dummyapikey';
const DUMMY_VERSION = '99';
const DUMMY_ENDPOINT = 'events';
public function testBaseUri()
{
// The trailing slash is important
$expectedBaseUri = 'https://api.thisdata.com/v99/';
$client = new Client(self::DUMMY_API_KEY, self::DUMMY_VERSION);
$baseUri = $client->getConfig('base_uri');
$this->assertEquals($expectedBaseUri, $baseUri);
}
/**
* Ensure a request is actually executed
*
* @return Request
*/
public function testRequestHandled()
{
// The response doesn't matter, we just don't want to make a real request to the server
$mockResponses = [
new Response(200),
];
/** @var Request[] $container */
$container = [];
$handler = HandlerStack::create(new MockHandler($mockResponses));
$handler->push(Middleware::history($container));
$options = [
'handler' => $handler
];
$client = new Client(self::DUMMY_API_KEY, self::DUMMY_VERSION, $options);
$client->request('POST', self::DUMMY_ENDPOINT, ['body' => json_encode(['verb' => 'log-in'])]);
$this->assertCount(1, $container);
return $container[0]['request'];
}
/**
* Ensure the API key is appended to a request URL automatically
* @depends testRequestHandled
* @param Request $request
*/
public function testApiKeyQueryParameter(Request $request)
{
$expectedUri = sprintf('https://api.thisdata.com/v%s/%s', self::DUMMY_VERSION, self::DUMMY_ENDPOINT);
$this->assertEquals($expectedUri, (string)$request->getUri());
}
/**
* Ensure the user agent is set to the library name.
*
* @param Request $request
* @depends testRequestHandled
*/
public function testUserAgentSet(Request $request)
{
$this->assertHeaderValue($request, 'User-Agent', Client::HEADER_USER_AGENT);
}
/**
* Ensure the content type is set to application/json.
*
* @param Request $request
* @depends testRequestHandled
*/
public function testContentType(Request $request)
{
$this->assertHeaderValue($request, 'Content-Type', Client::HEADER_CONTENT_TYPE);
}
/**
* Ensure a single header value is set correctly.
*
* @param Request $request
* @param string $header
* @param string $value
*/
protected function assertHeaderValue(Request $request, $header, $value)
{
$headerValue = $request->getHeader($header);
$this->assertCount(1, $headerValue);
$this->assertEquals($value, $headerValue[0]);
}
}