/ tests / Services / CertificationRequestServiceTest.php
CertificationRequestServiceTest.php
 1  <?php
 2  
 3  namespace Tests\Services;
 4  
 5  use App\Http\Services\CertificationRequestService;
 6  use App\Http\Services\DossierService;
 7  use App\Models\Document;
 8  use App\Models\Dossier;
 9  use File;
10  use Illuminate\Http\UploadedFile;
11  use Illuminate\Support\Facades\Storage;
12  use Illuminate\Support\Str;
13  use Tests\TestCase;
14  
15  class CertificationRequestServiceTest extends TestCase
16  {
17      public string $path = 'test_files/certification_request.zip';
18      public string $ccn = 'test_files/certification_request_ccn/2023-06-27_2023-02_solicitud_certificacion_v1.0.1.zip';
19  
20      public function setUp(): void
21      {
22          parent::setUp();
23          $this->actingAs($this->getAdminUser());
24      }
25  
26      /** @test */
27      public function constructor_can_unzip_and_validate()
28      {
29          $certReq = new CertificationRequestService($this->path);
30  
31          Storage::assertExists($certReq->tmp);
32          Storage::assertExists($certReq->request);
33  
34          $this->assertArrayHasKey('dossier_modo', $certReq->data);
35      }
36  
37      /** @test */
38      public function build_inactive_dossier()
39      {
40          $certReq = new CertificationRequestService($this->path);
41          $dossier = $certReq->build(false, $this->getAdminUser()->id);
42  
43          $this->assertInstanceOf(Dossier::class, $dossier);
44          $this->assertFalse($dossier->active);
45  
46          $this->assertDatabaseHas('toes', [
47              'alias' => $certReq->data['toe_alias'],
48          ]);
49          $this->assertDatabaseHas('entities', [
50              'nif' => $certReq->data['applicant_nif'],
51          ]);
52          $this->assertDatabaseHas('entities', [
53              'nif' => $certReq->data['laboratory_nif'],
54          ]);
55      }
56  
57      /** @test */
58      public function find_request_in_path()
59      {
60          $pdf = CertificationRequestService::findRequestFile('test_files/certification_request_ccn');
61  
62          $this->assertNotNull($pdf);
63          $this->assertTrue(Str::contains($pdf, 'solicitud_certificacion.pdf'));
64      }
65  
66      /** @test */
67      public function get_pdf_format()
68      {
69          $format = CertificationRequestService::getFormat('test_files/certification_request_ccn/01. FOR-001/solicitud_certificacion.pdf');
70  
71          $this->assertNotNull($format);
72          $this->assertEquals('ccn', $format);
73      }
74  
75      /** @test */
76      public function build_from_ccn_form()
77      {
78          // constructor
79          $certReq = new CertificationRequestService($this->ccn);
80  
81          $this->assertArrayHasKey('dossier_modo', $certReq->data);
82          $this->assertArrayHasKey('toe_public_vulnerabilities_link', $certReq->data);
83  
84          // build
85          $dossier = $certReq->build(false, $this->getAdminUser()->id);
86  
87          $this->assertInstanceOf(Dossier::class, $dossier);
88          $this->assertFalse($dossier->active);
89          $this->assertDatabaseHas('toes', [
90              'alias' => $certReq->data['toe_alias'],
91          ]);
92          $this->assertDatabaseHas('entities', [
93              'nif' => $certReq->data['applicant_nif'],
94          ]);
95          $this->assertDatabaseHas('entities', [
96              'nif' => $certReq->data['laboratory_nif'],
97          ]);
98      }
99  }