Fixes #14903: Fixed route with extra dashes is executed controller while it should not

This commit is contained in:
Elvira Sheina
2018-01-09 19:59:07 +05:00
committed by Alexander Makarov
parent 72b69e359a
commit a559b9fa76
3 changed files with 57 additions and 5 deletions

View File

@@ -120,6 +120,33 @@ class ModuleTest extends TestCase
$this->assertTrue($child->has('test'));
$this->assertFalse($parent->has('test'));
}
public function testCreateControllerByID()
{
$module = new TestModule('test');
$module->controllerNamespace = 'yiiunit\framework\base';
$route = 'module-test';
$this->assertInstanceOf(ModuleTestController::className(), $module->createControllerByID($route));
$route = 'module-test-';
$this->assertNotInstanceOf(ModuleTestController::className(), $module->createControllerByID($route));
$route = '-module-test';
$this->assertNotInstanceOf(ModuleTestController::className(), $module->createControllerByID($route));
$route = 'very-complex-name-test';
$this->assertInstanceOf(VeryComplexNameTestController::className(), $module->createControllerByID($route));
$route = 'very-complex-name-test--';
$this->assertNotInstanceOf(VeryComplexNameTestController::className(), $module->createControllerByID($route));
$route = '--very-complex-name-test';
$this->assertNotInstanceOf(VeryComplexNameTestController::className(), $module->createControllerByID($route));
$route = 'very---complex---name---test';
$this->assertNotInstanceOf(VeryComplexNameTestController::className(), $module->createControllerByID($route));
}
}
class TestModule extends \yii\base\Module
@@ -141,3 +168,11 @@ class ModuleTestController extends Controller
ModuleTest::$actionRuns[] = $this->action->uniqueId;
}
}
class VeryComplexNameTestController extends Controller
{
public function actionIndex()
{
ModuleTest::$actionRuns[] = $this->action->uniqueId;
}
}