From 3f8947b275845e767bafc4dd4d7341fa28f46570 Mon Sep 17 00:00:00 2001 From: Alexander Hofbauer Date: Thu, 27 Feb 2025 21:22:29 +0100 Subject: [PATCH] Handle fault strings as defined by the WSDL --- src/Exception/InvalidInputException.php | 13 +++++++++++++ src/Exception/MaxConcurrentRequestsException.php | 13 +++++++++++++ .../MaxConcurrentStateRequestsException.php | 13 +++++++++++++ src/Exception/ServiceUnavailableException.php | 13 +++++++++++++ .../StateServiceUnavailableException.php | 13 +++++++++++++ src/Exception/TimeoutException.php | 13 +++++++++++++ src/Vies/Client.php | 16 +++++++++++++++- tests/Vies/ClientTest.php | 9 +++++++++ 8 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 src/Exception/InvalidInputException.php create mode 100644 src/Exception/MaxConcurrentRequestsException.php create mode 100644 src/Exception/MaxConcurrentStateRequestsException.php create mode 100644 src/Exception/ServiceUnavailableException.php create mode 100644 src/Exception/StateServiceUnavailableException.php create mode 100644 src/Exception/TimeoutException.php diff --git a/src/Exception/InvalidInputException.php b/src/Exception/InvalidInputException.php new file mode 100644 index 0000000..25148e7 --- /dev/null +++ b/src/Exception/InvalidInputException.php @@ -0,0 +1,13 @@ +faultstring) { + 'INVALID_INPUT' => new InvalidInputException($e), + 'GLOBAL_MAX_CONCURRENT_REQ' => new MaxConcurrentRequestsException($e), + 'MS_MAX_CONCURRENT_REQ' => new MaxConcurrentStateRequestsException($e), + 'SERVICE_UNAVAILABLE' => new ServiceUnavailableException($e), + 'MS_UNAVAILABLE' => new StateServiceUnavailableException($e), + 'TIMEOUT' => new TimeoutException($e), + default => new ViesException($e), + }; } } diff --git a/tests/Vies/ClientTest.php b/tests/Vies/ClientTest.php index 6397d40..c6e324c 100644 --- a/tests/Vies/ClientTest.php +++ b/tests/Vies/ClientTest.php @@ -2,6 +2,7 @@ namespace Ddeboer\Vatin\Test\Vies; +use Ddeboer\Vatin\Exception\InvalidInputException; use Ddeboer\Vatin\Vies\Client; use PHPUnit\Framework\TestCase; @@ -19,4 +20,12 @@ public function testCheckVat(): void $this->assertEquals('---', $response->name); $this->assertEquals('---', $response->address); } + + public function testInvalidInputException(): void + { + $this->expectException(InvalidInputException::class); + + $client = new Client(); + $client->checkVat('XYZ', '123'); + } }