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.
This commit is contained in:
Julien Fastré 2024-09-03 15:44:25 +02:00
parent 3d49c959e0
commit c6a6d76790
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB
5 changed files with 11 additions and 6 deletions

View File

@ -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,
) {}
}

View File

@ -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();
}

View File

@ -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),
];

View File

@ -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

View File

@ -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']);
}