From c6a6d76790bb7daa4ab93577f0f5f31cc2e54210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Tue, 3 Sep 2024 15:44:25 +0200 Subject: [PATCH] Add signatureZoneIndex to PdfSignedMessage and related classes Included signatureZoneIndex for PdfSignedMessage in class definitions, handlers, and serializers to support signature zones. Updated test cases to reflect this new property, ensuring robust validation for handling and serialization. --- .../Signature/Driver/BaseSigner/PdfSignedMessage.php | 3 ++- .../Driver/BaseSigner/PdfSignedMessageHandler.php | 1 + .../Driver/BaseSigner/PdfSignedMessageSerializer.php | 3 ++- .../Driver/BaseSigner/PdfSignedMessageHandlerTest.php | 3 ++- .../Driver/BaseSigner/PdfSignedMessageSerializerTest.php | 7 ++++--- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php index 64ada47c7..3116e3b62 100644 --- a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php +++ b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php @@ -18,6 +18,7 @@ final readonly class PdfSignedMessage { public function __construct( public readonly int $signatureId, - public readonly string $content + public readonly int $signatureZoneIndex, + public readonly string $content, ) {} } diff --git a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php index 5cb31de96..720bc000f 100644 --- a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php +++ b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php @@ -55,6 +55,7 @@ final readonly class PdfSignedMessageHandler implements MessageHandlerInterface $this->storedObjectManager->write($storedObject, $message->content); $signature->setState(EntityWorkflowSignatureStateEnum::SIGNED)->setStateDate($this->clock->now()); + $signature->setZoneSignatureIndex($message->signatureZoneIndex); $this->entityManager->flush(); $this->entityManager->clear(); } diff --git a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php index 4af4a9504..892b944b7 100644 --- a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php +++ b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php @@ -40,7 +40,7 @@ final readonly class PdfSignedMessageSerializer implements SerializerInterface throw new MessageDecodingFailedException('Invalid character found in the base64 encoded content'); } - $message = new PdfSignedMessage($decoded['signatureId'], $content); + $message = new PdfSignedMessage($decoded['signatureId'], $decoded['signatureZoneIndex'], $content); return new Envelope($message); } @@ -55,6 +55,7 @@ final readonly class PdfSignedMessageSerializer implements SerializerInterface $data = [ 'signatureId' => $message->signatureId, + 'signatureZoneIndex' => $message->signatureZoneIndex, 'content' => base64_encode($message->content), ]; diff --git a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php index eb2142175..471dc8f9a 100644 --- a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php +++ b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php @@ -57,9 +57,10 @@ class PdfSignedMessageHandlerTest extends TestCase // we simply call the handler. The mocked StoredObjectManager will check that the "write" method is invoked once // with the content "1234" - $handler(new PdfSignedMessage(10, $expectedContent)); + $handler(new PdfSignedMessage(10, 99, $expectedContent)); self::assertEquals('signed', $signature->getState()->value); + self::assertEquals(99, $signature->getZoneSignatureIndex()); } private function buildSignatureRepository(EntityWorkflowStepSignature $signature): EntityWorkflowStepSignatureRepository diff --git a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php index d9d600254..1321390f5 100644 --- a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php +++ b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php @@ -26,7 +26,7 @@ class PdfSignedMessageSerializerTest extends TestCase public function testDecode(): void { $asString = <<<'JSON' - {"signatureId": 0, "content": "dGVzdAo="} + {"signatureId": 0, "signatureZoneIndex": 10, "content": "dGVzdAo="} JSON; $actual = $this->buildSerializer()->decode(['body' => $asString]); @@ -36,12 +36,13 @@ class PdfSignedMessageSerializerTest extends TestCase self::assertInstanceOf(PdfSignedMessage::class, $message); self::assertEquals("test\n", $message->content); self::assertEquals(0, $message->signatureId); + self::assertEquals(10, $message->signatureZoneIndex); } public function testEncode(): void { $envelope = new Envelope( - new PdfSignedMessage(0, "test\n") + new PdfSignedMessage(0, 10, "test\n") ); $actual = $this->buildSerializer()->encode($envelope); @@ -52,7 +53,7 @@ class PdfSignedMessageSerializerTest extends TestCase self::assertEquals([], $actual['headers']); self::assertEquals(<<<'JSON' - {"signatureId":0,"content":"dGVzdAo="} + {"signatureId":0,"signatureZoneIndex":10,"content":"dGVzdAo="} JSON, $actual['body']); }