diff --git a/class/actes/ActesEnvoiFichierWorker.php b/class/actes/ActesEnvoiFichierWorker.php index 66c0d6ad4f4e8d01fb01131bbcdfb801e50d1840..da6bde8de64d4e8cd3765deb7228c80018195030 100644 --- a/class/actes/ActesEnvoiFichierWorker.php +++ b/class/actes/ActesEnvoiFichierWorker.php @@ -56,27 +56,6 @@ class ActesEnvoiFichierWorker implements IWorker ); } - - public function sendAllEnvelopes() - { - $sigtermHandler = SigTermHandler::getInstance(); - $this->logger->debug("Lancement du script"); - $enveloppe_ids = $this->actesTransactionsSQL->getEnveloppeIdByTransactionsStatus(ActesStatusSQL::STATUS_EN_ATTENTE_DE_TRANSMISSION); - $this->logger->debug("Envoie de " . count($enveloppe_ids) . " enveloppes de transaction à l'état EN ATTENTE DE TRANSMISSION"); - foreach ($enveloppe_ids as $enveloppe_id) { - try { - $this->work($enveloppe_id); - } catch (RecoverableException $e) { - /** Nothing to do */ - } - if ($sigtermHandler->isSigtermCalled()) { - break; - } - } - $this->logger->debug("Fin du script"); - return true; - } - /** * @param $enveloppe_id * @return bool diff --git a/test/PHPUnit/class/actes/ActesEnvoiFichierWorkerTest.php b/test/PHPUnit/class/actes/ActesEnvoiFichierWorkerTest.php index 2924c7fb773da5994e74c2423125ffe5427486e5..4a33a81bdeafeb33cf98aac16a985e1a7afac665 100644 --- a/test/PHPUnit/class/actes/ActesEnvoiFichierWorkerTest.php +++ b/test/PHPUnit/class/actes/ActesEnvoiFichierWorkerTest.php @@ -1,24 +1,32 @@ <?php +declare(strict_types=1); + +namespace PHPUnit\class\actes; + +use Exception; +use PHPUnit\Framework\MockObject\MockObject; use S2lowLegacy\Class\actes\ActesEnvoiFichierWorker; use S2lowLegacy\Class\actes\ActesFileSender; use S2lowLegacy\Class\actes\ActesStatusSQL; use S2lowLegacy\Class\actes\ActesTransactionsSQL; use S2lowLegacy\Class\TmpFolder; use S2lowLegacy\Model\LogsSQL; +use S2lowTestCase; class ActesEnvoiFichierWorkerTest extends S2lowTestCase { - /** @var TmpFolder */ - private $tmpFolder; - private $tmp_dir; + private string $enveloppe_directory; protected function setUp(): void { parent::setUp(); $this->tmpFolder = new TmpFolder(); - $this->tmp_dir = $this->tmpFolder->create(); - $this->getObjectInstancier()->set("actes_appli_trigramme", "SLO"); + $this->siren = '1234567'; + $this->enveloppe_directory = $this->getObjectInstancier()->get('actes_files_upload_root') . '/' . $this->siren; + mkdir($this->enveloppe_directory); + + $this->getObjectInstancier()->set('actes_appli_trigramme', 'SLO'); $actesFileSender = $this->getMockBuilder(ActesFileSender::class)->disableOriginalConstructor()->getMock(); $this->getObjectInstancier()->set(ActesFileSender::class, $actesFileSender); @@ -26,49 +34,48 @@ class ActesEnvoiFichierWorkerTest extends S2lowTestCase protected function tearDown(): void { + (new TmpFolder())->delete($this->enveloppe_directory); parent::tearDown(); - $this->tmpFolder->delete($this->tmp_dir); } - public function testValidateAllEmpty() - { - $actesEnvoiFichierController = $this->getObjectInstancier()->get(ActesEnvoiFichierWorker::class); - $actesEnvoiFichierController->sendAllEnvelopes(); - $logs = $this->getLogRecords(); - $this->assertMatchesRegularExpression("#Lancement du script#", $logs[0]['message']); - $this->assertMatchesRegularExpression("#Envoie de 0 enveloppes de transaction à l'état EN ATTENTE DE TRANSMISSION#", $logs[1]['message']); - $this->assertMatchesRegularExpression("#Fin du script#", $logs[2]['message']); - } + /** + * @throws \S2lowLegacy\Class\RecoverableException + */ public function testEnvoiUneEnveloppe() { $transaction_id = $this->createTransaction( ActesStatusSQL::STATUS_EN_ATTENTE_DE_TRANSMISSION, - __DIR__ . "/../../fixtures/ok/SLO-EACT--214502494--20170717-5.tar.gz" + __DIR__ . '/../../fixtures/ok/SLO-EACT--214502494--20170717-5.tar.gz' ); + $actesTransactionsSQL = $this->getObjectInstancier()->get(ActesTransactionsSQL::class); + $transaction_info = $actesTransactionsSQL->getInfo($transaction_id); + /** @var ActesEnvoiFichierWorker $actesEnvoiFichierController */ $actesEnvoiFichierController = $this->getObjectInstancier()->get(ActesEnvoiFichierWorker::class); - $actesEnvoiFichierController->sendAllEnvelopes(); - $actesTransactionsSQL = $this->getObjectInstancier()->get(ActesTransactionsSQL::class); + $actesEnvoiFichierController->work($transaction_info['envelope_id']); $transaction_info = $actesTransactionsSQL->getInfo($transaction_id); - $this->assertEquals(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['last_status_id']); + static::assertSame(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['last_status_id']); $transaction_info = $actesTransactionsSQL->getLastTransactionWorkflowInfo($transaction_id); - $this->assertEquals(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['status_id']); - $this->assertEquals( - "Transmis au MI", + static::assertSame(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['status_id']); + static::assertSame( + 'Transmis au MI', $transaction_info['message'] ); $logsSQL = $this->getObjectInstancier()->get(LogsSQL::class); $liste = $logsSQL->getLastLog(); - $this->assertMatchesRegularExpression("#Transaction.*[0-9]* : passage à l'état transmis#", $liste['message']); + static::assertMatchesRegularExpression("#Transaction.*[0-9]* : passage à l'état transmis#", $liste['message']); } + /** + * @return void + */ public function testEnvoiUneEnveloppeMauvaisEtat() { $transaction_id = $this->createTransaction( ActesStatusSQL::STATUS_TRANSMIS, - __DIR__ . "/../../fixtures/ok/SLO-EACT--214502494--20170717-5.tar.gz" + __DIR__ . '/../../fixtures/ok/SLO-EACT--214502494--20170717-5.tar.gz' ); $actesTransactionsSQL = $this->getObjectInstancier()->get(ActesTransactionsSQL::class); @@ -82,15 +89,15 @@ class ActesEnvoiFichierWorkerTest extends S2lowTestCase $transaction_info = $actesTransactionsSQL->getInfo($transaction_id); - $this->assertEquals(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['last_status_id']); + static::assertSame(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['last_status_id']); $transaction_info = $actesTransactionsSQL->getLastTransactionWorkflowInfo($transaction_id); - $this->assertEquals(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['status_id']); - $this->assertEquals( - "Creation", + static::assertSame(ActesStatusSQL::STATUS_TRANSMIS, $transaction_info['status_id']); + static::assertSame( + 'Creation', $transaction_info['message'] ); - $this->assertEquals( + static::assertSame( "La transaction $transaction_id à poster n'est pas en attente de transmission : état 3 trouvé", $this->getLogRecords()[0]['message'] ); @@ -100,39 +107,44 @@ class ActesEnvoiFichierWorkerTest extends S2lowTestCase { $transaction_id = $this->createTransaction( ActesStatusSQL::STATUS_EN_ATTENTE_DE_TRANSMISSION, - __DIR__ . "/../../fixtures/ok/SLO-EACT--214502494--20170717-5.tar.gz" + __DIR__ . '/../../fixtures/ok/SLO-EACT--214502494--20170717-5.tar.gz' ); - /** @var PHPUnit_Framework_MockObject_MockObject $actesFileSender */ + $actesTransactionsSQL = $this->getObjectInstancier()->get(ActesTransactionsSQL::class); + $transaction_info = $actesTransactionsSQL->getInfo($transaction_id); + + /** @var MockObject|ActesFileSender $actesFileSender */ $actesFileSender = $this->getObjectInstancier()->get(ActesFileSender::class); - $actesFileSender->method("send")->willThrowException(new Exception("Erreur du mock")); + $actesFileSender->method('send')->willThrowException(new Exception('Erreur du mock')); - $actesEnvoiFichierController = $this->getObjectInstancier()->get(ActesEnvoiFichierWorker::class); - $actesEnvoiFichierController->sendAllEnvelopes(); - $actesTransactionsSQL = $this->getObjectInstancier()->get(ActesTransactionsSQL::class); + self::expectException(Exception::class); + self::expectExceptionMessage('Erreur du mock'); + /** @var ActesEnvoiFichierWorker $actesEnvoiFichierWorker */ + $actesEnvoiFichierWorker = $this->getObjectInstancier()->get(ActesEnvoiFichierWorker::class); + $actesEnvoiFichierWorker->work($transaction_info['envelope_id']); $transaction_info = $actesTransactionsSQL->getInfo($transaction_id); - $this->assertEquals(ActesStatusSQL::STATUS_EN_ATTENTE_DE_TRANSMISSION, $transaction_info['last_status_id']); + static::assertSame(ActesStatusSQL::STATUS_EN_ATTENTE_DE_TRANSMISSION, $transaction_info['last_status_id']); $logs = $this->getLogRecords(); - $this->assertMatchesRegularExpression("#Erreur du mock#", $logs[3]['message']); + static::assertMatchesRegularExpression('#Erreur du mock#', $logs[3]['message']); } private function createTransaction($status, $archive_path) { $archive_name = basename($archive_path); - copy($archive_path, $this->tmp_dir . "/$archive_name"); + copy($archive_path, $this->enveloppe_directory . "/$archive_name"); - $sql = "INSERT INTO actes_envelopes(user_id,file_path) VALUES(1,?) returning ID"; - $envelope_id = $this->getSQLQuery()->queryOne($sql, basename($this->tmp_dir) . "/$archive_name"); + $sql = 'INSERT INTO actes_envelopes(user_id,file_path) VALUES(1,?) returning ID'; + $envelope_id = $this->getSQLQuery()->queryOne($sql, $this->siren . "/$archive_name"); - $sql = "INSERT INTO actes_transactions(envelope_id,last_status_id,user_id,authority_id,antivirus_check) VALUES (?,?,?,?,?) returning ID;"; + $sql = 'INSERT INTO actes_transactions(envelope_id,last_status_id,user_id,authority_id,antivirus_check) VALUES (?,?,?,?,?) returning ID;'; $transaction_id = $this->getSQLQuery()->queryOne($sql, $envelope_id, $status, 1, 1, true); - $sql = "INSERT INTO actes_transactions_workflow(transaction_id, status_id, date, message, flux_retour) VALUES (?,?,now(),?,?)"; - $this->getSQLQuery()->queryOne($sql, $transaction_id, $status, "Creation", ""); + $sql = 'INSERT INTO actes_transactions_workflow(transaction_id, status_id, date, message, flux_retour) VALUES (?,?,now(),?,?)'; + $this->getSQLQuery()->queryOne($sql, $transaction_id, $status, 'Creation', ''); return $transaction_id; } }