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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
AccessInterceptorScopeLocalizerFactoryTest.php
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