瀏覽代碼

[SecurityBundle] added some tests

Johannes Schmitt 14 年之前
父節點
當前提交
c3084050a0

+ 6 - 1
src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

@@ -115,11 +115,17 @@ class SecurityExtension extends Extension
         }
         $container->getDefinition('security.acl.voter.basic_permissions')->addArgument($config['voter']['allow_if_object_identity_unavailable']);
 
+        // custom ACL provider
         if (isset($config['provider'])) {
             $container->setAlias('security.acl.provider', $config['provider']);
             return;
         }
 
+        $this->configureDbalAclProvider($config, $container, $loader);
+    }
+
+    private function configureDbalAclProvider(array $config, ContainerBuilder $container, $loader)
+    {
         $loader->load('security_acl_dbal.xml');
 
         if (isset($config['connection'])) {
@@ -132,7 +138,6 @@ class SecurityExtension extends Extension
         $container->setParameter('security.acl.dbal.oid_table_name', $config['tables']['object_identity']);
         $container->setParameter('security.acl.dbal.oid_ancestors_table_name', $config['tables']['object_identity_ancestors']);
         $container->setParameter('security.acl.dbal.sid_table_name', $config['tables']['security_identity']);
-
     }
 
     /**

+ 1 - 0
src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/container1.php

@@ -1,6 +1,7 @@
 <?php
 
 $container->loadFromExtension('security', array(
+    'acl' => array(),
     'encoders' => array(
         'JMS\FooBundle\Entity\User1' => 'plaintext',
         'JMS\FooBundle\Entity\User2' => array(

+ 9 - 0
src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/custom_acl_provider.php

@@ -0,0 +1,9 @@
+<?php
+
+$this->load('container1.php', $container);
+
+$container->loadFromExtension('security', array(
+    'acl' => array(
+        'provider' => 'foo',
+    )
+));

+ 2 - 0
src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/container1.xml

@@ -6,6 +6,8 @@
     xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
 
     <config>
+        <acl />
+    
         <encoder class="JMS\FooBundle\Entity\User1" algorithm="plaintext" />
 
         <encoder class="JMS\FooBundle\Entity\User2" algorithm="sha1" encode-as-base64="false" iterations="5" />

+ 16 - 0
src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/custom_acl_provider.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<container xmlns="http://symfony.com/schema/dic/services"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:sec="http://symfony.com/schema/dic/security"
+    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
+    
+    <imports>
+        <import resource="container1.xml"/>
+    </imports>
+    
+    <sec:config>
+        <sec:acl provider="foo" />
+    </sec:config>
+
+</container>

+ 1 - 0
src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/container1.yml

@@ -1,4 +1,5 @@
 security:
+    acl: ~
     encoders:
         JMS\FooBundle\Entity\User1: plaintext
         JMS\FooBundle\Entity\User2:

+ 6 - 0
src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/custom_acl_provider.yml

@@ -0,0 +1,6 @@
+imports:
+    - { resource: container1.yml }
+    
+security:
+    acl:
+        provider: foo

+ 16 - 0
src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php

@@ -150,6 +150,22 @@ abstract class SecurityExtensionTest extends \PHPUnit_Framework_TestCase
         )), $container->getDefinition('security.encoder_factory.generic')->getArguments());
     }
 
+    public function testAcl()
+    {
+        $container = $this->getContainer('container1');
+
+        $this->assertTrue($container->hasDefinition('security.acl.dbal.provider'));
+        $this->assertEquals('security.acl.dbal.provider', (string) $container->getAlias('security.acl.provider'));
+    }
+
+    public function testCustomAclProvider()
+    {
+        $container = $this->getContainer('custom_acl_provider');
+
+        $this->assertFalse($container->hasDefinition('security.acl.dbal.provider'));
+        $this->assertEquals('foo', (string) $container->getAlias('security.acl.provider'));
+    }
+
     protected function getContainer($file)
     {
         $container = new ContainerBuilder();