mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 09:35:49 +02:00
Added tests for RedirectController
This commit is contained in:
parent
40ca5bd0e4
commit
45a624d768
15 changed files with 509 additions and 6 deletions
|
@ -2,3 +2,5 @@
|
||||||
KERNEL_CLASS='App\Kernel'
|
KERNEL_CLASS='App\Kernel'
|
||||||
APP_SECRET='s$cretf0rt3st'
|
APP_SECRET='s$cretf0rt3st'
|
||||||
SYMFONY_DEPRECATIONS_HELPER=999999
|
SYMFONY_DEPRECATIONS_HELPER=999999
|
||||||
|
|
||||||
|
DATABASE_URL=mysql://root:@127.0.0.1:3306/part-db_test
|
|
@ -1,7 +1,11 @@
|
||||||
language: php
|
language: php
|
||||||
|
|
||||||
|
services:
|
||||||
|
- mysql
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- SYMFONY_DEPRECATIONS_HELPER=disabled # Disable deprecation warnings
|
- SYMFONY_DEPRECATIONS_HELPER=disabled # Disable deprecation warnings
|
||||||
|
- APP_ENV=test
|
||||||
|
|
||||||
# Test for all supported PHP versions
|
# Test for all supported PHP versions
|
||||||
php:
|
php:
|
||||||
|
@ -11,8 +15,13 @@ php:
|
||||||
- '7.4snapshot'
|
- '7.4snapshot'
|
||||||
- 'nightly'
|
- 'nightly'
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- mysql -e 'CREATE DATABASE partdb_test;
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- composer install
|
- composer install
|
||||||
|
- php bin/console doctrine:migrations:migrate -n
|
||||||
|
- php bin/console doctrine:fixtures:load -n
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- php bin/phpunit
|
- php bin/phpunit
|
||||||
|
|
|
@ -51,9 +51,11 @@
|
||||||
"webmozart/assert": "^1.4"
|
"webmozart/assert": "^1.4"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
"dama/doctrine-test-bundle": "^5.0",
|
||||||
|
"doctrine/doctrine-fixtures-bundle": "^3.2",
|
||||||
"roave/security-advisories": "dev-master",
|
"roave/security-advisories": "dev-master",
|
||||||
"symfony/debug-pack": "*",
|
"symfony/debug-pack": "*",
|
||||||
"symfony/maker-bundle": "^1.0",
|
"symfony/maker-bundle": "^1.13",
|
||||||
"symfony/profiler-pack": "*",
|
"symfony/profiler-pack": "*",
|
||||||
"symfony/test-pack": "^1.0",
|
"symfony/test-pack": "^1.0",
|
||||||
"symfony/web-server-bundle": "4.3.*",
|
"symfony/web-server-bundle": "4.3.*",
|
||||||
|
|
185
composer.lock
generated
185
composer.lock
generated
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "3bf8b3cc9288b991bb93c494a7d571a4",
|
"content-hash": "1b7ba9876569ad9b9a41348701dc75f3",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "clue/stream-filter",
|
"name": "clue/stream-filter",
|
||||||
|
@ -8017,6 +8017,189 @@
|
||||||
],
|
],
|
||||||
"time": "2019-05-27T17:52:04+00:00"
|
"time": "2019-05-27T17:52:04+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "dama/doctrine-test-bundle",
|
||||||
|
"version": "v5.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/dmaicher/doctrine-test-bundle.git",
|
||||||
|
"reference": "29882b0d1a815f4819126ef714931bb24a31cbaa"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/29882b0d1a815f4819126ef714931bb24a31cbaa",
|
||||||
|
"reference": "29882b0d1a815f4819126ef714931bb24a31cbaa",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/dbal": "~2.5",
|
||||||
|
"doctrine/doctrine-bundle": "~1.4",
|
||||||
|
"php": "^7.1",
|
||||||
|
"symfony/framework-bundle": "~2.7|~3.0|~4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "~6.0|~7.0|~8.0",
|
||||||
|
"symfony/phpunit-bridge": "~2.8|~3.0|~4.0",
|
||||||
|
"symfony/yaml": "~2.8|~3.0|~4.0"
|
||||||
|
},
|
||||||
|
"type": "symfony-bundle",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "5.1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"DAMA\\DoctrineTestBundle\\": "src/DAMA/DoctrineTestBundle"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "David Maicher",
|
||||||
|
"email": "mail@dmaicher.de"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony bundle to isolate doctrine database tests and improve test performance",
|
||||||
|
"keywords": [
|
||||||
|
"Symfony 3",
|
||||||
|
"Symfony 4",
|
||||||
|
"doctrine",
|
||||||
|
"isolation",
|
||||||
|
"performance",
|
||||||
|
"symfony",
|
||||||
|
"symfony 2",
|
||||||
|
"tests"
|
||||||
|
],
|
||||||
|
"time": "2019-03-22T10:34:17+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctrine/data-fixtures",
|
||||||
|
"version": "v1.3.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/doctrine/data-fixtures.git",
|
||||||
|
"reference": "09b16943b27f3d80d63988d100ff256148c2f78b"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/09b16943b27f3d80d63988d100ff256148c2f78b",
|
||||||
|
"reference": "09b16943b27f3d80d63988d100ff256148c2f78b",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/common": "~2.2",
|
||||||
|
"php": "^7.1"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"doctrine/phpcr-odm": "<1.3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"doctrine/dbal": "^2.5.4",
|
||||||
|
"doctrine/orm": "^2.5.4",
|
||||||
|
"phpunit/phpunit": "^7.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7",
|
||||||
|
"doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
|
||||||
|
"doctrine/orm": "For loading ORM fixtures",
|
||||||
|
"doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.3.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jonathan Wage",
|
||||||
|
"email": "jonwage@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Data Fixtures for all Doctrine Object Managers",
|
||||||
|
"homepage": "http://www.doctrine-project.org",
|
||||||
|
"keywords": [
|
||||||
|
"database"
|
||||||
|
],
|
||||||
|
"time": "2019-07-10T18:30:35+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctrine/doctrine-fixtures-bundle",
|
||||||
|
"version": "3.2.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
|
||||||
|
"reference": "90e4a4f968b2dae40e290a6ee516957af043f16c"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/90e4a4f968b2dae40e290a6ee516957af043f16c",
|
||||||
|
"reference": "90e4a4f968b2dae40e290a6ee516957af043f16c",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/data-fixtures": "^1.3",
|
||||||
|
"doctrine/doctrine-bundle": "^1.6",
|
||||||
|
"doctrine/orm": "^2.6.0",
|
||||||
|
"php": "^7.1",
|
||||||
|
"symfony/doctrine-bridge": "~3.4|^4.1",
|
||||||
|
"symfony/framework-bundle": "^3.4|^4.1"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"doctrine/coding-standard": "^6.0",
|
||||||
|
"phpunit/phpunit": "^7.4",
|
||||||
|
"symfony/phpunit-bridge": "^4.1"
|
||||||
|
},
|
||||||
|
"type": "symfony-bundle",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.2.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Doctrine\\Bundle\\FixturesBundle\\": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "http://symfony.com/contributors"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Doctrine Project",
|
||||||
|
"homepage": "http://www.doctrine-project.org"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony DoctrineFixturesBundle",
|
||||||
|
"homepage": "http://www.doctrine-project.org",
|
||||||
|
"keywords": [
|
||||||
|
"Fixture",
|
||||||
|
"persistence"
|
||||||
|
],
|
||||||
|
"time": "2019-06-12T12:03:37+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "easycorp/easy-log-handler",
|
"name": "easycorp/easy-log-handler",
|
||||||
"version": "v1.0.7",
|
"version": "v1.0.7",
|
||||||
|
|
|
@ -20,4 +20,6 @@ return [
|
||||||
FOS\CKEditorBundle\FOSCKEditorBundle::class => ['all' => true],
|
FOS\CKEditorBundle\FOSCKEditorBundle::class => ['all' => true],
|
||||||
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
|
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
|
||||||
Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
|
Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
|
||||||
|
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
|
||||||
|
DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true],
|
||||||
];
|
];
|
||||||
|
|
4
config/packages/test/dama_doctrine_test_bundle.yaml
Normal file
4
config/packages/test/dama_doctrine_test_bundle.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
dama_doctrine_test:
|
||||||
|
enable_static_connection: true
|
||||||
|
enable_static_meta_data_cache: true
|
||||||
|
enable_static_query_cache: true
|
6
config/packages/test/security.yaml
Normal file
6
config/packages/test/security.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# config/packages/test/security.yaml
|
||||||
|
security:
|
||||||
|
firewalls:
|
||||||
|
# replace 'main' by the name of your own firewall
|
||||||
|
main:
|
||||||
|
http_basic: ~
|
|
@ -9,4 +9,4 @@ redirector:
|
||||||
url: ".*"
|
url: ".*"
|
||||||
controller: App\Controller\RedirectController:addLocalePart
|
controller: App\Controller\RedirectController:addLocalePart
|
||||||
# Dont match localized routes (no redirection loop, if no root with that name exists)
|
# Dont match localized routes (no redirection loop, if no root with that name exists)
|
||||||
condition: "not (request.getPathInfo() matches '/\\\\/[a-z]{2}(_[A-Z]{2})?\\\\//')"
|
condition: "not (request.getPathInfo() matches '/^\\\\/[a-z]{2}(_[A-Z]{2})?\\\\//')"
|
|
@ -25,6 +25,10 @@
|
||||||
</whitelist>
|
</whitelist>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
|
<extensions>
|
||||||
|
<extension class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension"/>
|
||||||
|
</extensions>
|
||||||
|
|
||||||
<listeners>
|
<listeners>
|
||||||
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
|
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
|
||||||
</listeners>
|
</listeners>
|
||||||
|
|
18
src/DataFixtures/AppFixtures.php
Normal file
18
src/DataFixtures/AppFixtures.php
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
|
use App\Entity\Parts\Part;
|
||||||
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
|
use Doctrine\Common\Persistence\ObjectManager;
|
||||||
|
|
||||||
|
class AppFixtures extends Fixture
|
||||||
|
{
|
||||||
|
public function load(ObjectManager $manager)
|
||||||
|
{
|
||||||
|
// $product = new Product();
|
||||||
|
// $manager->persist($product);
|
||||||
|
|
||||||
|
$manager->flush();
|
||||||
|
}
|
||||||
|
}
|
37
src/DataFixtures/GroupFixtures.php
Normal file
37
src/DataFixtures/GroupFixtures.php
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
|
use App\Entity\UserSystem\Group;
|
||||||
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
|
use Doctrine\Common\Persistence\ObjectManager;
|
||||||
|
|
||||||
|
class GroupFixtures extends Fixture
|
||||||
|
{
|
||||||
|
public const ADMINS = 'group-admin';
|
||||||
|
public const USERS = 'group-users';
|
||||||
|
public const READONLY = 'group-readonly';
|
||||||
|
|
||||||
|
public function load(ObjectManager $manager)
|
||||||
|
{
|
||||||
|
$admins = new Group();
|
||||||
|
$admins->setName('admins');
|
||||||
|
|
||||||
|
$this->setReference(self::ADMINS, $admins);
|
||||||
|
$manager->persist($admins);
|
||||||
|
|
||||||
|
$readonly = new Group();
|
||||||
|
$readonly->setName('readonly');
|
||||||
|
|
||||||
|
$this->setReference(self::READONLY, $readonly);
|
||||||
|
$manager->persist($readonly);
|
||||||
|
|
||||||
|
$users = new Group();
|
||||||
|
$users->setName('users');
|
||||||
|
|
||||||
|
$this->setReference(self::USERS, $users);
|
||||||
|
$manager->persist($users);
|
||||||
|
|
||||||
|
$manager->flush();
|
||||||
|
}
|
||||||
|
}
|
50
src/DataFixtures/UserFixtures.php
Normal file
50
src/DataFixtures/UserFixtures.php
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
|
use App\Entity\UserSystem\User;
|
||||||
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
|
use Doctrine\Common\Persistence\ObjectManager;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use ReflectionClass;
|
||||||
|
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
|
||||||
|
|
||||||
|
class UserFixtures extends Fixture
|
||||||
|
{
|
||||||
|
protected $encoder;
|
||||||
|
protected $em;
|
||||||
|
|
||||||
|
public function __construct(UserPasswordEncoderInterface $encoder, EntityManagerInterface $entityManager)
|
||||||
|
{
|
||||||
|
$this->em = $entityManager;
|
||||||
|
$this->encoder = $encoder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function load(ObjectManager $manager)
|
||||||
|
{
|
||||||
|
//Reset autoincrement
|
||||||
|
$this->em->getConnection()->exec('ALTER TABLE `users` AUTO_INCREMENT = 1;');
|
||||||
|
|
||||||
|
$anonymous = new User();
|
||||||
|
$anonymous->setName('anonymous');
|
||||||
|
$anonymous->setGroup($this->getReference(GroupFixtures::READONLY));
|
||||||
|
|
||||||
|
$manager->persist($anonymous);
|
||||||
|
|
||||||
|
$admin = new User();
|
||||||
|
$admin->setName('admin');
|
||||||
|
$admin->setPassword($this->encoder->encodePassword($admin, 'test'));
|
||||||
|
$admin->setGroup($this->getReference(GroupFixtures::ADMINS));
|
||||||
|
$manager->persist($admin);
|
||||||
|
|
||||||
|
$user = new User();
|
||||||
|
$user->setName('user');
|
||||||
|
$user->setNeedPwChange(false);
|
||||||
|
$user->setFirstName('Test')->setLastName('User');
|
||||||
|
$user->setPassword($this->encoder->encodePassword($user, 'test'));
|
||||||
|
$user->setGroup($this->getReference(GroupFixtures::USERS));
|
||||||
|
$manager->persist($user);
|
||||||
|
|
||||||
|
$manager->flush();
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,12 +42,16 @@ use Doctrine\DBAL\Types\DateTimeType;
|
||||||
*/
|
*/
|
||||||
class UTCDateTimeType extends DateTimeType
|
class UTCDateTimeType extends DateTimeType
|
||||||
{
|
{
|
||||||
private static $utc;
|
private static $utc_timezone;
|
||||||
|
|
||||||
public function convertToDatabaseValue($value, AbstractPlatform $platform)
|
public function convertToDatabaseValue($value, AbstractPlatform $platform)
|
||||||
{
|
{
|
||||||
|
if (!self::$utc_timezone) {
|
||||||
|
self::$utc_timezone = new \DateTimeZone('UTC');
|
||||||
|
}
|
||||||
|
|
||||||
if ($value instanceof \DateTime) {
|
if ($value instanceof \DateTime) {
|
||||||
$value->setTimezone(self::$utc);
|
$value->setTimezone(self::$utc_timezone);
|
||||||
}
|
}
|
||||||
|
|
||||||
return parent::convertToDatabaseValue($value, $platform);
|
return parent::convertToDatabaseValue($value, $platform);
|
||||||
|
@ -55,6 +59,10 @@ class UTCDateTimeType extends DateTimeType
|
||||||
|
|
||||||
public function convertToPHPValue($value, AbstractPlatform $platform)
|
public function convertToPHPValue($value, AbstractPlatform $platform)
|
||||||
{
|
{
|
||||||
|
if (!self::$utc_timezone) {
|
||||||
|
self::$utc_timezone = new \DateTimeZone('UTC');
|
||||||
|
}
|
||||||
|
|
||||||
if (null === $value || $value instanceof \DateTime) {
|
if (null === $value || $value instanceof \DateTime) {
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
@ -62,7 +70,7 @@ class UTCDateTimeType extends DateTimeType
|
||||||
$converted = \DateTime::createFromFormat(
|
$converted = \DateTime::createFromFormat(
|
||||||
$platform->getDateTimeFormatString(),
|
$platform->getDateTimeFormatString(),
|
||||||
$value,
|
$value,
|
||||||
self::$utc ? self::$utc : self::$utc = new \DateTimeZone('UTC')
|
self::$utc_timezone
|
||||||
);
|
);
|
||||||
|
|
||||||
if (! $converted) {
|
if (! $converted) {
|
||||||
|
|
27
symfony.lock
27
symfony.lock
|
@ -11,6 +11,18 @@
|
||||||
"composer/xdebug-handler": {
|
"composer/xdebug-handler": {
|
||||||
"version": "1.3.3"
|
"version": "1.3.3"
|
||||||
},
|
},
|
||||||
|
"dama/doctrine-test-bundle": {
|
||||||
|
"version": "4.0",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes-contrib",
|
||||||
|
"branch": "master",
|
||||||
|
"version": "4.0",
|
||||||
|
"ref": "56eaa387b5e48ebcc7c95a893b47dfa1ad51449c"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./config/packages/test/dama_doctrine_test_bundle.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
"doctrine/annotations": {
|
"doctrine/annotations": {
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
|
@ -32,6 +44,9 @@
|
||||||
"doctrine/common": {
|
"doctrine/common": {
|
||||||
"version": "v2.10.0"
|
"version": "v2.10.0"
|
||||||
},
|
},
|
||||||
|
"doctrine/data-fixtures": {
|
||||||
|
"version": "v1.3.2"
|
||||||
|
},
|
||||||
"doctrine/dbal": {
|
"doctrine/dbal": {
|
||||||
"version": "v2.9.2"
|
"version": "v2.9.2"
|
||||||
},
|
},
|
||||||
|
@ -53,6 +68,18 @@
|
||||||
"doctrine/doctrine-cache-bundle": {
|
"doctrine/doctrine-cache-bundle": {
|
||||||
"version": "1.3.5"
|
"version": "1.3.5"
|
||||||
},
|
},
|
||||||
|
"doctrine/doctrine-fixtures-bundle": {
|
||||||
|
"version": "3.0",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "master",
|
||||||
|
"version": "3.0",
|
||||||
|
"ref": "fc52d86631a6dfd9fdf3381d0b7e3df2069e51b3"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"./src/DataFixtures/AppFixtures.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
"doctrine/doctrine-migrations-bundle": {
|
"doctrine/doctrine-migrations-bundle": {
|
||||||
"version": "1.2",
|
"version": "1.2",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
|
|
151
tests/Controller/RedirectControllerTest.php
Normal file
151
tests/Controller/RedirectControllerTest.php
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* part-db version 0.1
|
||||||
|
* Copyright (C) 2005 Christoph Lechner
|
||||||
|
* http://www.cl-projects.de/
|
||||||
|
*
|
||||||
|
* part-db version 0.2+
|
||||||
|
* Copyright (C) 2009 K. Jacobs and others (see authors.php)
|
||||||
|
* http://code.google.com/p/part-db/
|
||||||
|
*
|
||||||
|
* Part-DB Version 0.4+
|
||||||
|
* Copyright (C) 2016 - 2019 Jan Böhmer
|
||||||
|
* https://github.com/jbtronics
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Tests\Controller;
|
||||||
|
|
||||||
|
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use Proxies\__CG__\App\Entity\UserSystem\User;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
class RedirectControllerTest extends WebTestCase
|
||||||
|
{
|
||||||
|
protected $em;
|
||||||
|
protected $userRepo;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
self::bootKernel();
|
||||||
|
$this->em = self::$container->get(EntityManagerInterface::class);
|
||||||
|
$this->userRepo = $this->em->getRepository(User::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function urlMatchDataProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['/', true],
|
||||||
|
['/part/2/info', true],
|
||||||
|
['/part/de/2', true],
|
||||||
|
['/part/en/', true],
|
||||||
|
['/de/', false],
|
||||||
|
['/de_DE/', false],
|
||||||
|
['/en/', false],
|
||||||
|
['/en_US/', false],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if a certain request to an url will be redirected.
|
||||||
|
* @dataProvider urlMatchDataProvider
|
||||||
|
*/
|
||||||
|
public function testUrlMatch($url, $expect_redirect)
|
||||||
|
{
|
||||||
|
$client = static::createClient();
|
||||||
|
$client->request('GET', $url);
|
||||||
|
$response = $client->getResponse();
|
||||||
|
if($expect_redirect) {
|
||||||
|
$this->assertEquals(302, $response->getStatusCode());
|
||||||
|
}
|
||||||
|
$this->assertEquals($expect_redirect, $response->isRedirect());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function urlAddLocaleDataProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
//User locale, original target, redirect target
|
||||||
|
['de', '/', '/de/'],
|
||||||
|
['de', '/part/3', '/de/part/3'],
|
||||||
|
['en', '/', '/en/'],
|
||||||
|
['en', '/category/new', '/en/category/new'],
|
||||||
|
['en_US', '/part/3', '/en_US/part/3'],
|
||||||
|
//Without an explicit set value, the user should be redirect to english version
|
||||||
|
[null, '/', '/en/'],
|
||||||
|
['en_US', '/part/3', '/en_US/part/3'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the user is redirected to the localized version of a page, based on his settings.
|
||||||
|
* @dataProvider urlAddLocaleDataProvider
|
||||||
|
* @depends testUrlMatch
|
||||||
|
* @param $user_locale
|
||||||
|
* @param $input_path
|
||||||
|
* @param $redirect_path
|
||||||
|
*/
|
||||||
|
public function testAddLocale($user_locale, $input_path, $redirect_path)
|
||||||
|
{
|
||||||
|
//Redirect path is absolute
|
||||||
|
$redirect_path = 'http://localhost' . $redirect_path;
|
||||||
|
|
||||||
|
/** @var User $user */
|
||||||
|
$user = $this->userRepo->findOneBy(['name' => 'user']);
|
||||||
|
//Set user locale
|
||||||
|
$user->setLanguage($user_locale);
|
||||||
|
$this->em->flush();
|
||||||
|
|
||||||
|
$client = static::createClient([], [
|
||||||
|
'PHP_AUTH_USER' => 'user',
|
||||||
|
'PHP_AUTH_PW' => 'test',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$client->followRedirects(false);
|
||||||
|
$client->request('GET', $input_path);
|
||||||
|
$this->assertEquals($redirect_path, $client->getResponse()->headers->get('Location'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the user is redirected to password change page if he should do that
|
||||||
|
* @depends testAddLocale
|
||||||
|
* @testWith ["de"]
|
||||||
|
* ["en"]
|
||||||
|
*/
|
||||||
|
public function testRedirectToPasswordChange(string $locale)
|
||||||
|
{
|
||||||
|
/** @var User $user */
|
||||||
|
$user = $this->userRepo->findOneBy(['name' => 'user']);
|
||||||
|
|
||||||
|
//Test for german user
|
||||||
|
$user->setLanguage($locale);
|
||||||
|
$user->setNeedPwChange(true);
|
||||||
|
$this->em->flush();
|
||||||
|
|
||||||
|
$client = static::createClient([], [
|
||||||
|
'PHP_AUTH_USER' => 'user',
|
||||||
|
'PHP_AUTH_PW' => 'test',
|
||||||
|
]);
|
||||||
|
$client->followRedirects(false);
|
||||||
|
|
||||||
|
$client->request('GET', '/part/3');
|
||||||
|
$this->assertEquals("/$locale/user/settings", $client->getResponse()->headers->get('Location'));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue