yarhon /
RouteGuardBundle
| 1 | <?php |
||
| 2 | |||
| 3 | /* |
||
| 4 | * |
||
| 5 | * (c) Yaroslav Honcharuk <[email protected]> |
||
| 6 | * |
||
| 7 | * For the full copyright and license information, please view the LICENSE |
||
| 8 | * file that was distributed with this source code. |
||
| 9 | */ |
||
| 10 | |||
| 11 | namespace Yarhon\RouteGuardBundle\Tests\Functional; |
||
| 12 | |||
| 13 | use Symfony\Bundle\FrameworkBundle\Test\WebTestCase as BaseWebTestCase; |
||
| 14 | use Symfony\Component\Filesystem\Filesystem; |
||
| 15 | use Symfony\Bundle\FrameworkBundle\FrameworkBundle; |
||
| 16 | use Symfony\Bundle\SecurityBundle\SecurityBundle; |
||
| 17 | use Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle; |
||
| 18 | use Symfony\Component\HttpKernel\Kernel; |
||
| 19 | use Yarhon\RouteGuardBundle\YarhonRouteGuardBundle; |
||
| 20 | |||
| 21 | /** |
||
| 22 | * @author Yaroslav Honcharuk <[email protected]> |
||
| 23 | */ |
||
| 24 | abstract class WebTestCase extends BaseWebTestCase |
||
| 25 | { |
||
| 26 | protected static $bundles = []; |
||
| 27 | |||
| 28 | protected static $configs = []; |
||
| 29 | |||
| 30 | protected static $users = []; |
||
| 31 | |||
| 32 | protected static function getBundles() |
||
| 33 | { |
||
| 34 | $bundles = static::$bundles; |
||
| 35 | |||
| 36 | // In Symfony 3.3 @Route annotations are loaded by SensioFrameworkExtraBundle |
||
| 37 | if (Kernel::VERSION_ID < 30400 && !in_array(SensioFrameworkExtraBundle::class, $bundles, true)) { |
||
| 38 | $bundles[] = SensioFrameworkExtraBundle::class; |
||
| 39 | } |
||
| 40 | |||
| 41 | return array_merge([ |
||
| 42 | FrameworkBundle::class, |
||
| 43 | SecurityBundle::class, |
||
| 44 | YarhonRouteGuardBundle::class, |
||
| 45 | ], $bundles); |
||
| 46 | } |
||
| 47 | |||
| 48 | protected static function getConfigs() |
||
| 49 | { |
||
| 50 | $configs = static::$configs; |
||
| 51 | $configs['security']['providers']['main']['memory']['users'] = static::$users; |
||
| 52 | // $configs['framework']['router'] = $routerConfig; |
||
| 53 | |||
| 54 | return $configs; |
||
| 55 | } |
||
| 56 | |||
| 57 | public static function setUpBeforeClass() |
||
| 58 | { |
||
| 59 | static::deleteTempDir(); |
||
| 60 | } |
||
| 61 | |||
| 62 | public static function tearDownAfterClass() |
||
| 63 | { |
||
| 64 | static::deleteTempDir(); |
||
| 65 | } |
||
| 66 | |||
| 67 | protected static function deleteTempDir() |
||
| 68 | { |
||
| 69 | if (!file_exists($dir = static::getTempDir())) { |
||
| 70 | return; |
||
| 71 | } |
||
| 72 | |||
| 73 | $fs = new Filesystem(); |
||
| 74 | $fs->remove($dir); |
||
| 75 | } |
||
| 76 | |||
| 77 | protected static function createKernel(array $options = []) |
||
| 78 | { |
||
| 79 | return new app\Kernel( |
||
| 80 | static::getTempDir(), |
||
| 81 | static::getBundles(), |
||
| 82 | static::getConfigs(), |
||
| 83 | isset($options['environment']) ? $options['environment'] : 'test', |
||
| 84 | isset($options['debug']) ? $options['debug'] : true |
||
| 85 | ); |
||
| 86 | } |
||
| 87 | |||
| 88 | protected static function getTempDir() |
||
| 89 | { |
||
| 90 | return sys_get_temp_dir().'/route-guard-'.substr(strrchr(static::class, '\\'), 1); |
||
| 91 | } |
||
| 92 | |||
| 93 | protected static function createClient(array $options = [], array $server = []) |
||
| 94 | { |
||
| 95 | $server = array_merge([ |
||
| 96 | 'HTTP_HOST' => 'example.com', |
||
| 97 | ], $server); |
||
| 98 | |||
| 99 | return parent::createClient($options, $server); |
||
| 100 | } |
||
| 101 | |||
| 102 | protected function requestLink($user, $route) |
||
| 103 | { |
||
| 104 | if ($user) { |
||
| 105 | $serverOptions = ['PHP_AUTH_USER' => $user, 'PHP_AUTH_PW' => static::$users[$user]['password']]; |
||
| 106 | } else { |
||
| 107 | $serverOptions = []; |
||
| 108 | } |
||
| 109 | |||
| 110 | $client = static::createClient([], $serverOptions); |
||
| 111 | |||
| 112 | $uri = '/link/'.$route[0]; |
||
| 113 | |||
| 114 | $query = array_filter([ |
||
| 115 | 'parameters' => isset($route[1]) ? $route[1] : null, |
||
| 116 | 'method' => isset($route[2]) ? $route[2] : null, |
||
| 117 | ]); |
||
| 118 | |||
| 119 | if ($query) { |
||
|
0 ignored issues
–
show
|
|||
| 120 | $uri .= '?'.http_build_query($query); |
||
| 121 | } |
||
| 122 | |||
| 123 | $crawler = $client->request('GET', $uri); |
||
| 124 | |||
| 125 | return $crawler->filterXPath('//*[@id="link"]'); |
||
| 126 | } |
||
| 127 | } |
||
| 128 |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)or! empty(...)instead.