feat: local password hashes
This commit is contained in:
1 parent
08f6633507
commit
fe562e5e73
15 files changed
+541
-253
No files matched your search
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Tests\BusProNet;
|
||||
|
||||
use App\BusProNet\ApiClient;
|
||||
use App\BusProNet\DataProcessor\BookingDataProcessor;
|
||||
use App\BusProNet\XmlParser\ApiResponseParser;
|
||||
use App\Service\RequestIdGenerator;
|
||||
use League\Flysystem\FilesystemOperator;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Symfony\Component\Serializer\Encoder\XmlEncoder;
|
||||
use Symfony\Component\Serializer\Serializer;
|
||||
use Symfony\Component\Serializer\SerializerInterface;
|
||||
|
||||
class ApiClientPersonalDataRequestTest extends TestCase
|
||||
{
|
||||
public function testPersonalDataRequestUsesLoginFlagAndAddressIdentifiers(): void
|
||||
{
|
||||
$apiClient = $this->createApiClient();
|
||||
$payload = $this->invokeBuildPersonalDataRequestData($apiClient, '[email protected]', 'Adressdaten', 123, 456);
|
||||
$xml = $this->serializePayload($payload);
|
||||
|
||||
self::assertStringContainsString('<login>J</login>', $xml);
|
||||
self::assertStringNotContainsString('<passwort>', $xml);
|
||||
self::assertStringContainsString('<email>[email protected]</email>', $xml);
|
||||
self::assertStringContainsString('<idadresse>123</idadresse>', $xml);
|
||||
self::assertStringContainsString('<idadresseperson>456</idadresseperson>', $xml);
|
||||
}
|
||||
|
||||
public function testPersonalDataRequestOmitsOptionalIdentifiersWhenNotProvided(): void
|
||||
{
|
||||
$apiClient = $this->createApiClient();
|
||||
$payload = $this->invokeBuildPersonalDataRequestData($apiClient, '[email protected]', 'Adressdaten');
|
||||
$xml = $this->serializePayload($payload);
|
||||
|
||||
self::assertStringContainsString('<login>J</login>', $xml);
|
||||
self::assertStringNotContainsString('<passwort>', $xml);
|
||||
self::assertStringContainsString('<email>[email protected]</email>', $xml);
|
||||
self::assertStringNotContainsString('<idadresse>', $xml);
|
||||
self::assertStringNotContainsString('<idadresseperson>', $xml);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
private function invokeBuildPersonalDataRequestData(
|
||||
ApiClient $apiClient,
|
||||
string $email,
|
||||
string $art,
|
||||
?int $addressId = null,
|
||||
?int $personId = null
|
||||
): array
|
||||
{
|
||||
$method = new \ReflectionMethod(ApiClient::class, 'buildCustomerDataRequestData');
|
||||
$method->setAccessible(true);
|
||||
|
||||
/** @var array<string, mixed> $payload */
|
||||
$payload = $method->invoke($apiClient, $email, $art, $addressId, $personId);
|
||||
|
||||
return $payload;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $payload
|
||||
*/
|
||||
private function serializePayload(array $payload): string
|
||||
{
|
||||
return (new Serializer([], [new XmlEncoder()]))->serialize($payload, 'xml', [
|
||||
XmlEncoder::ROOT_NODE_NAME => 'anfrage',
|
||||
XmlEncoder::ENCODING => 'UTF-8',
|
||||
]);
|
||||
}
|
||||
|
||||
private function createApiClient(): ApiClient
|
||||
{
|
||||
return new ApiClient(
|
||||
$this->createMock(SerializerInterface::class),
|
||||
$this->createMock(ApiResponseParser::class),
|
||||
$this->createMock(FilesystemOperator::class),
|
||||
$this->createMock(LoggerInterface::class),
|
||||
$this->createMock(BookingDataProcessor::class),
|
||||
new RequestStack(),
|
||||
new RequestIdGenerator(),
|
||||
[
|
||||
'bpn_username' => 'test-user',
|
||||
'bpn_password' => 'test-password',
|
||||
'bpn_api_ip' => '127.0.0.1',
|
||||
'bpn_api_ports' => [9000],
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user