symfony_example_app/tests/Service/Remote/UsetrenoHttpClientTest.php

55 lines
2.3 KiB
PHP

<?php
namespace App\Tests\Service\Remote;
use App\Service\Remote\Exception\AuthorizeException;
use App\Service\Remote\UsetrenoHttpClient;
use App\Tests\Common\LoggerTrait;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpClient\MockHttpClient;
use Symfony\Component\HttpClient\Response\JsonMockResponse;
class UsetrenoHttpClientTest extends TestCase
{
use LoggerTrait;
public function testRequestWillDoAutomaticAuthorization() {
$authMockResponse = new JsonMockResponse([
"data" => [
"expires_in" => 1000,
"token" => "foobarfoobar"
],
"timestamp" => "2024-01-17T22:47:59+01:00",
"uri" => "/api/v1/token"
]);
$authorizedRequestResponse = clone $authMockResponse;
$mockedClient = new MockHttpClient([$authMockResponse, $authorizedRequestResponse]);
$client = new UsetrenoHttpClient($mockedClient, $this->getLogger(), "foo", "bar", 0, 0);
$client->request("POST", "https://www.root.cz/");
$this->assertEquals("https://topapi.top-test.cz/chameleon/api/v1/token", $authMockResponse->getRequestUrl());
$headers = $authorizedRequestResponse->getRequestOptions()['headers'];
$this->assertEquals("https://www.root.cz/", $authorizedRequestResponse->getRequestUrl());
$this->assertTrue(in_array("Authorization: Bearer foobarfoobar", $headers), "missing bearer authorization header");
}
public function testRequestFailedAuthorization() {
$this->expectException(AuthorizeException::class);
$authMockResponse = new JsonMockResponse([
"errors" => [
[
"message" => "Bad credentials, please verify that your username/password are correctly set.",
"specificType" => "bad_credentials",
"type" => "security_error"
]
],
"timestamp" => "2024-01-17T23:55:25+01:00",
"uri" => "/api/v1/token"
]);
$authorizedRequestResponse = clone $authMockResponse;
$mockedClient = new MockHttpClient([$authMockResponse, $authorizedRequestResponse]);
$client = new UsetrenoHttpClient($mockedClient, $this->getLogger(), "foo", "bar", 0, 0);
$client->request("POST", "https://www.root.cz/");
}
}