143 lines
4.2 KiB
PHP
143 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace InfluxDB2Test;
|
|
|
|
use GuzzleHttp\Psr7\Request;
|
|
use GuzzleHttp\Psr7\Response;
|
|
use InfluxDB2\ApiException;
|
|
use InfluxDB2\Client;
|
|
use InfluxDB2\Model\WritePrecision;
|
|
use InvalidArgumentException;
|
|
use ReflectionObject;
|
|
|
|
require_once('BasicTest.php');
|
|
|
|
class DefaultApiTest extends BasicTest
|
|
{
|
|
public function testUserAgent()
|
|
{
|
|
$this->mockHandler->append(new Response(204));
|
|
$this->writeApi->write('h2o,location=west value=33i 15');
|
|
|
|
$request = $this->mockHandler->getLastRequest();
|
|
|
|
$this->assertStringStartsWith(
|
|
'influxdb-client-php/',
|
|
strval($request->getHeader("User-Agent")[0])
|
|
);
|
|
}
|
|
|
|
public function testTrailingSlashInUrl()
|
|
{
|
|
$this->mockHandler->append(new Response(204));
|
|
$this->writeApi->write('h2o,location=west value=33i 15');
|
|
|
|
$request = $this->mockHandler->getLastRequest();
|
|
|
|
$this->assertEquals('http://localhost:8086/api/v2/write?org=my-org&bucket=my-bucket&precision=ns', strval($request->getUri()));
|
|
|
|
$this->tearDown();
|
|
$this->setUp("http://localhost:8086/");
|
|
|
|
$this->mockHandler->append(new Response(204));
|
|
$this->writeApi->write('h2o,location=west value=33i 15');
|
|
|
|
$request = $this->mockHandler->getLastRequest();
|
|
|
|
$this->assertEquals('http://localhost:8086/api/v2/write?org=my-org&bucket=my-bucket&precision=ns', strval($request->getUri()));
|
|
}
|
|
|
|
public function testContentType()
|
|
{
|
|
$this->mockHandler->append(new Response(204));
|
|
$this->writeApi->write('h2o,location=west value=33i 15');
|
|
|
|
$request = $this->mockHandler->getLastRequest();
|
|
|
|
$this->assertNotEmpty($request->getHeader("Content-Type"));
|
|
}
|
|
|
|
public function testApiException()
|
|
{
|
|
$this->mockHandler->append(new Response(400));
|
|
|
|
$this->expectException(ApiException::class);
|
|
|
|
$this->writeApi->write('h2o,location=west value=33i 15');
|
|
}
|
|
|
|
public function testInvalidArgument()
|
|
{
|
|
$this->mockHandler->append(new Response(204));
|
|
|
|
$this->writeApi->options["org"] = '';
|
|
|
|
$this->expectException(InvalidArgumentException::class);
|
|
|
|
$this->writeApi->write('h2o,location=west value=33i 15');
|
|
}
|
|
|
|
public function testDefaultVerifySSL()
|
|
{
|
|
$guzzle = $this->property_value($this->property_value($this->writeApi->http, 'client'), 'httpClient');
|
|
|
|
$this->assertEquals(true, $guzzle->getConfig()['verify']);
|
|
}
|
|
|
|
public function testConfigureVerifySSL()
|
|
{
|
|
$client = new Client([
|
|
"url" => "http://localhost:8086",
|
|
"token" => "my-token",
|
|
"bucket" => "my-bucket",
|
|
"precision" => WritePrecision::NS,
|
|
"org" => "my-org",
|
|
"logFile" => "php://output",
|
|
"verifySSL" => false
|
|
]);
|
|
|
|
$guzzle = $this->property_value($this->property_value($client->createQueryApi()->http, 'client'), 'httpClient');
|
|
|
|
$this->assertEquals(false, $guzzle->getConfig()['verify']);
|
|
|
|
$client->close();
|
|
}
|
|
|
|
public function testFollowRedirect()
|
|
{
|
|
$this->mockHandler->append(
|
|
new Response(
|
|
307,
|
|
['location' => 'http://localhost:8086']
|
|
),
|
|
new Response(204, [], "{\"status\": \"pass\"}")
|
|
);
|
|
$this->writeApi->write('h2o,location=west value=33i 15');
|
|
|
|
$this->assertCount(2, $this->requests);
|
|
|
|
$this->assertEquals('Token my-token', $this->getHeader($this->requests[0]['request']));
|
|
$this->assertEquals('Token my-token', $this->getHeader($this->requests[1]['request']));
|
|
}
|
|
|
|
/**
|
|
* @param Request $request with headers
|
|
* @return string Authorization headers
|
|
*/
|
|
private function getHeader(Request $request): string
|
|
{
|
|
return implode(' ', $request->getHeaders()['Authorization']);
|
|
}
|
|
|
|
/**
|
|
* @throws \ReflectionException fail to access property
|
|
*/
|
|
private function property_value(object $object, string $property_name): object
|
|
{
|
|
$reflection = new ReflectionObject($object);
|
|
$property = $reflection->getProperty($property_name);
|
|
$property->setAccessible(true);
|
|
return $property->getValue($object);
|
|
}
|
|
}
|