Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

AccessInterceptorScopeLocalizerFactoryTest.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 7.55 KiB


001  <?php
002  /*
003   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
004   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
005   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
006   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
007   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
008   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
009   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
010   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
011   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
012   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
013   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
014   *
015   * This software consists of voluntary contributions made by many individuals
016   * and is licensed under the MIT license.
017   */
018   
019  namespace ProxyManagerTest\Factory;
020   
021  use PHPUnit_Framework_TestCase;
022  use ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory;
023  use ProxyManager\Factory\AccessInterceptorValueHolderFactory;
024  use ProxyManager\Generator\ClassGenerator;
025  use ProxyManager\Generator\Util\UniqueIdentifierGenerator;
026  use stdClass;
027   
028  /**
029   * Tests for {@see \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory}
030   *
031   * @author Marco Pivetta <ocramius@gmail.com>
032   * @license MIT
033   *
034   * @group Coverage
035   */
036  class AccessInterceptorScopeLocalizerFactoryTest extends PHPUnit_Framework_TestCase
037  {
038      /**
039       * @var \PHPUnit_Framework_MockObject_MockObject
040       */
041      protected $inflector;
042   
043      /**
044       * @var \PHPUnit_Framework_MockObject_MockObject
045       */
046      protected $signatureChecker;
047   
048      /**
049       * @var \ProxyManager\Signature\ClassSignatureGeneratorInterface|\PHPUnit_Framework_MockObject_MockObject
050       */
051      private $classSignatureGenerator;
052   
053      /**
054       * @var \ProxyManager\Configuration|\PHPUnit_Framework_MockObject_MockObject
055       */
056      protected $config;
057   
058      /**
059       * {@inheritDoc}
060       */
061      public function setUp()
062      {
063          $this->config                  = $this->getMock('ProxyManager\\Configuration');
064          $this->inflector               = $this->getMock('ProxyManager\\Inflector\\ClassNameInflectorInterface');
065          $this->signatureChecker        = $this->getMock('ProxyManager\\Signature\\SignatureCheckerInterface');
066          $this->classSignatureGenerator = $this->getMock('ProxyManager\\Signature\\ClassSignatureGeneratorInterface');
067   
068          $this
069              ->config
070              ->expects($this->any())
071              ->method('getClassNameInflector')
072              ->will($this->returnValue($this->inflector));
073   
074          $this
075              ->config
076              ->expects($this->any())
077              ->method('getSignatureChecker')
078              ->will($this->returnValue($this->signatureChecker));
079   
080          $this
081              ->config
082              ->expects($this->any())
083              ->method('getClassSignatureGenerator')
084              ->will($this->returnValue($this->classSignatureGenerator));
085      }
086   
087      /**
088       * {@inheritDoc}
089       *
090       * @covers \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory::__construct
091       */
092      public function testWithOptionalFactory()
093      {
094          $factory = new AccessInterceptorValueHolderFactory();
095          $this->assertAttributeNotEmpty('configuration', $factory);
096          $this->assertAttributeInstanceOf('ProxyManager\Configuration', 'configuration', $factory);
097      }
098   
099      /**
100       * {@inheritDoc}
101       *
102       * @covers \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory::__construct
103       * @covers \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory::createProxy
104       * @covers \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory::getGenerator
105       */
106      public function testWillSkipAutoGeneration()
107      {
108          $instance = new stdClass();
109   
110          $this
111              ->inflector
112              ->expects($this->once())
113              ->method('getProxyClassName')
114              ->with('stdClass')
115              ->will($this->returnValue('ProxyManagerTestAsset\\AccessInterceptorValueHolderMock'));
116   
117          $factory     = new AccessInterceptorScopeLocalizerFactory($this->config);
118          /* @var $proxy \ProxyManagerTestAsset\AccessInterceptorValueHolderMock */
119          $proxy       = $factory->createProxy($instance, array('foo'), array('bar'));
120   
121          $this->assertInstanceOf('ProxyManagerTestAsset\\AccessInterceptorValueHolderMock', $proxy);
122          $this->assertSame($instance, $proxy->instance);
123          $this->assertSame(array('foo'), $proxy->prefixInterceptors);
124          $this->assertSame(array('bar'), $proxy->suffixInterceptors);
125      }
126   
127      /**
128       * {@inheritDoc}
129       *
130       * @covers \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory::__construct
131       * @covers \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory::createProxy
132       * @covers \ProxyManager\Factory\AccessInterceptorScopeLocalizerFactory::getGenerator
133       *
134       * NOTE: serious mocking going on in here (a class is generated on-the-fly) - careful
135       */
136      public function testWillTryAutoGeneration()
137      {
138          $instance       = new stdClass();
139          $proxyClassName = UniqueIdentifierGenerator::getIdentifier('bar');
140          $generator      = $this->getMock('ProxyManager\GeneratorStrategy\\GeneratorStrategyInterface');
141          $autoloader     = $this->getMock('ProxyManager\\Autoloader\\AutoloaderInterface');
142   
143          $this->config->expects($this->any())->method('getGeneratorStrategy')->will($this->returnValue($generator));
144          $this->config->expects($this->any())->method('getProxyAutoloader')->will($this->returnValue($autoloader));
145   
146          $generator
147              ->expects($this->once())
148              ->method('generate')
149              ->with(
150                  $this->callback(
151                      function (ClassGenerator $targetClass) use ($proxyClassName) {
152                          return $targetClass->getName() === $proxyClassName;
153                      }
154                  )
155              );
156   
157          // simulate autoloading
158          $autoloader
159              ->expects($this->once())
160              ->method('__invoke')
161              ->with($proxyClassName)
162              ->will(
163                  $this->returnCallback(
164                      function () use ($proxyClassName) {
165                          eval(
166                              'class ' . $proxyClassName
167                              . ' extends \\ProxyManagerTestAsset\\AccessInterceptorValueHolderMock {}'
168                          );
169                      }
170                  )
171              );
172   
173          $this
174              ->inflector
175              ->expects($this->once())
176              ->method('getProxyClassName')
177              ->with('stdClass')
178              ->will($this->returnValue($proxyClassName));
179   
180          $this
181              ->inflector
182              ->expects($this->once())
183              ->method('getUserClassName')
184              ->with('stdClass')
185              ->will($this->returnValue('ProxyManagerTestAsset\\LazyLoadingMock'));
186   
187          $this->signatureChecker->expects($this->atLeastOnce())->method('checkSignature');
188          $this->classSignatureGenerator->expects($this->once())->method('addSignature')->will($this->returnArgument(0));
189   
190          $factory     = new AccessInterceptorScopeLocalizerFactory($this->config);
191          /* @var $proxy \ProxyManagerTestAsset\AccessInterceptorValueHolderMock */
192          $proxy       = $factory->createProxy($instance, array('foo'), array('bar'));
193   
194          $this->assertInstanceOf($proxyClassName, $proxy);
195          $this->assertSame($instance, $proxy->instance);
196          $this->assertSame(array('foo'), $proxy->prefixInterceptors);
197          $this->assertSame(array('bar'), $proxy->suffixInterceptors);
198      }
199  }
200