FakerWorker::create()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 22
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 2.0023

Importance

Changes 0
Metric Value
cc 2
eloc 10
nc 2
nop 4
dl 0
loc 22
ccs 11
cts 12
cp 0.9167
crap 2.0023
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Derafu: Biblioteca PHP (Núcleo).
7
 * Copyright (C) Derafu <https://www.derafu.org>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la Licencia Pública General Affero de GNU publicada por
11
 * la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o
12
 * (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública
17
 * General Affero de GNU para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la Licencia Pública General Affero de GNU
20
 * junto a este programa.
21
 *
22
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
23
 */
24
25
namespace Derafu\Lib\Core\Package\Prime\Component\Certificate\Worker;
26
27
use Derafu\Lib\Core\Foundation\Abstract\AbstractWorker;
28
use Derafu\Lib\Core\Package\Prime\Component\Certificate\Contract\CertificateInterface;
29
use Derafu\Lib\Core\Package\Prime\Component\Certificate\Contract\FakerWorkerInterface;
30
use Derafu\Lib\Core\Package\Prime\Component\Certificate\Contract\LoaderWorkerInterface;
31
use Derafu\Lib\Core\Package\Prime\Component\Certificate\Support\CertificateFaker;
32
33
/**
34
 * Clase que se encarga de generar certificados autofirmados (para pruebas).
35
 */
36
class FakerWorker extends AbstractWorker implements FakerWorkerInterface
37
{
38
    protected string $certificateFakerClass = CertificateFaker::class;
39
40 26
    public function __construct(
41
        private LoaderWorkerInterface $loader
42
    ) {
43 26
    }
44
45
    /**
46
     * {@inheritDoc}
47
     */
48 24
    public function create(
49
        ?string $id = null,
50
        ?string $name = null,
51
        ?string $email = null,
52
        ?string $password = null
53
    ): CertificateInterface {
54 24
        $class = $this->certificateFakerClass;
55 24
        $faker = new $class();
56
57 24
        $faker->setSubject(
58 24
            serialNumber: $id ?? '11222333-9',
59 24
            CN: $name ?? 'Daniel',
60 24
            emailAddress: $email ?? '[email protected]'
61 24
        );
62
63 22
        if ($password !== null) {
64
            $faker->setPassword($password);
65
        }
66
67 22
        $array = $faker->toArray();
68
69 22
        return $this->loader->createFromArray($array);
70
    }
71
}
72