mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-11-03 18:58:01 +00:00 
			
		
		
		
	Optimized SecureCRUDFactory
This commit is contained in:
		@@ -1,34 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace tests\Unit\Domain\SecureCRUDManagement\Factory;
 | 
			
		||||
 | 
			
		||||
use PHPUnit\Framework\TestCase;
 | 
			
		||||
use App\Domain\SecureCRUDManagement\Factory\AbstractSecureCRUDFactoryService;
 | 
			
		||||
use App\Entity\Meta\RightInterface;
 | 
			
		||||
use App\Domain\SecureCRUDManagement\CRUD\Create\SecureCreatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author kevinfrantz
 | 
			
		||||
 */
 | 
			
		||||
class AbstractSecureCRUDFactoryServiceTest extends TestCase
 | 
			
		||||
{
 | 
			
		||||
    public function testGetCRUDNamespace(): void
 | 
			
		||||
    {
 | 
			
		||||
        $abstractSecureCRUDFactoryService = new class() extends AbstractSecureCRUDFactoryService {
 | 
			
		||||
            public function __construct()
 | 
			
		||||
            {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function publicGetCRUDNamespace(string $layer, string $crud): string
 | 
			
		||||
            {
 | 
			
		||||
                return $this->getCRUDNamespace($layer, $crud);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function create(RightInterface $requestedRight): SecureCreatorInterface
 | 
			
		||||
            {
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
        $result = $abstractSecureCRUDFactoryService->publicGetCRUDNamespace('Layer', 'Crud');
 | 
			
		||||
        $this->assertEquals('App\\Domain\\SecureCRUDManagement\\CRUD\\Crud\\SecureLayerCrud', $result);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,58 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace tests\Unit\Domain\SecureCRUDManagement\Factory;
 | 
			
		||||
 | 
			
		||||
use App\Domain\SecureCRUDManagement\Factory\SecureCRUDFactoryServiceInterface;
 | 
			
		||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
use App\Domain\SecureCRUDManagement\Factory\SecureCRUDFactoryService;
 | 
			
		||||
use App\DBAL\Types\Meta\Right\LayerType;
 | 
			
		||||
use App\Entity\Meta\Right;
 | 
			
		||||
use App\Domain\SecureCRUDManagement\CRUD\SecureCRUDInterface;
 | 
			
		||||
use App\DBAL\Types\Meta\Right\CRUDType;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author kevinfrantz
 | 
			
		||||
 */
 | 
			
		||||
class SecureCRUDFactoryServiceTest extends KernelTestCase
 | 
			
		||||
{
 | 
			
		||||
    const EXCLUDED_TYPES = [
 | 
			
		||||
        CRUDType::CREATE => [
 | 
			
		||||
            LayerType::LAW,
 | 
			
		||||
        ],
 | 
			
		||||
        CRUDType::DELETE => [
 | 
			
		||||
            LayerType::LAW,
 | 
			
		||||
        ],
 | 
			
		||||
        CRUDType::READ => [],
 | 
			
		||||
        CRUDType::UPDATE => [],
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var SecureCRUDFactoryServiceInterface
 | 
			
		||||
     */
 | 
			
		||||
    private $secureCRUDFactoryService;
 | 
			
		||||
 | 
			
		||||
    public function setUp(): void
 | 
			
		||||
    {
 | 
			
		||||
        self::bootKernel();
 | 
			
		||||
        $requestStack = self::$container->get('request_stack');
 | 
			
		||||
        $security = new Security(self::$kernel->getContainer());
 | 
			
		||||
        $entityManager = self::$container->get('doctrine.orm.default_entity_manager');
 | 
			
		||||
        $this->secureCRUDFactoryService = new SecureCRUDFactoryService($requestStack, $security, $entityManager);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreate(): void
 | 
			
		||||
    {
 | 
			
		||||
        foreach (CRUDType::getChoices() as $crud) {
 | 
			
		||||
            foreach (LayerType::getChoices() as $layer) {
 | 
			
		||||
                if (!in_array($layer, self::EXCLUDED_TYPES[$crud])) {
 | 
			
		||||
                    $requestedRight = new Right();
 | 
			
		||||
                    $requestedRight->setLayer($layer);
 | 
			
		||||
                    $requestedRight->setType($crud);
 | 
			
		||||
                    $secureCreator = $this->secureCRUDFactoryService->create($requestedRight);
 | 
			
		||||
                    $this->assertInstanceOf(SecureCRUDInterface::class, $secureCreator);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,45 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace tests\Unit\Domain\SecureCRUDManagement\Factory;
 | 
			
		||||
 | 
			
		||||
use App\Domain\SecureCRUDManagement\Factory\SecureCreatorFactoryServiceInterface;
 | 
			
		||||
use App\Domain\SecureCRUDManagement\Factory\SecureCreatorFactoryService;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
use App\DBAL\Types\Meta\Right\LayerType;
 | 
			
		||||
use App\Entity\Meta\Right;
 | 
			
		||||
use App\Domain\SecureCRUDManagement\CRUD\Create\SecureCreatorInterface;
 | 
			
		||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author kevinfrantz
 | 
			
		||||
 */
 | 
			
		||||
class SecureCreatorFactoryServiceTest extends KernelTestCase
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var SecureCreatorFactoryServiceInterface
 | 
			
		||||
     */
 | 
			
		||||
    private $secureCreatorFactoryService;
 | 
			
		||||
 | 
			
		||||
    public function setUp(): void
 | 
			
		||||
    {
 | 
			
		||||
        self::bootKernel();
 | 
			
		||||
        $requestStack = self::$container->get('request_stack');
 | 
			
		||||
        $security = new Security(self::$kernel->getContainer());
 | 
			
		||||
        $this->secureCreatorFactoryService = new SecureCreatorFactoryService($requestStack, $security);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testCreate(): void
 | 
			
		||||
    {
 | 
			
		||||
        $excludedTypes = [
 | 
			
		||||
            LayerType::LAW,
 | 
			
		||||
        ];
 | 
			
		||||
        foreach (LayerType::getChoices() as $layer) {
 | 
			
		||||
            if (!in_array($layer, $excludedTypes)) {
 | 
			
		||||
                $requestedRight = new Right();
 | 
			
		||||
                $requestedRight->setLayer($layer);
 | 
			
		||||
                $secureCreator = $this->secureCreatorFactoryService->create($requestedRight);
 | 
			
		||||
                $this->assertInstanceOf(SecureCreatorInterface::class, $secureCreator);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user