public function testMappingRegistration() { $fC = new Frontcontroller(); $fooUrlToken = 'foo'; $barUrlToken = 'bar'; $bazUrlToken = 'baz'; $fooNamespace = 'VENDOR\\foo'; $barNamespace = 'VENDOR\\bar'; $bazNamespace = 'VENDOR\\baz'; $fooName = 'say-foo'; $barName = 'say-bar'; $bazName = 'say-baz'; $fooMapping = new ActionUrlMapping($fooUrlToken, $fooNamespace, $fooName); $barMapping = new ActionUrlMapping($barUrlToken, $barNamespace, $barName); $bazMapping = new ActionUrlMapping($bazUrlToken, $bazNamespace, $bazName); $fC->registerActionUrlMapping($fooMapping); $fC->registerActionUrlMapping($barMapping); $fC->registerActionUrlMapping($bazMapping); $this->assertEquals([$fooUrlToken, $barUrlToken, $bazUrlToken], $fC->getActionUrlMappingTokens()); $this->assertCount(3, $fC->getActionUrlMappingTokens()); $this->assertEquals($fooMapping, $fC->getActionUrlMapping($fooUrlToken)); $this->assertEquals($fooMapping, $fC->getActionUrlMapping($fooNamespace, $fooName)); $this->assertEquals($barMapping, $fC->getActionUrlMapping($barUrlToken)); $this->assertEquals($barMapping, $fC->getActionUrlMapping($barNamespace, $barName)); $this->assertEquals($bazMapping, $fC->getActionUrlMapping($bazUrlToken)); $this->assertEquals($bazMapping, $fC->getActionUrlMapping($bazNamespace, $bazName)); $this->assertNull($fC->getActionUrlMapping('123456')); }
public function testMixedActions() { $fooUrlToken = 'foo'; $fooActionNamespace = 'VENDOR\\foo'; $fooActionName = 'say-foo'; $barUrlToken = 'bar'; $barActionNamespace = 'VENDOR\\bar'; $barActionName = 'say-bar'; // action on stack w/o params $_REQUEST = []; $_REQUEST[$fooUrlToken] = ''; $_REQUEST['VENDOR_baz-action:say-baz'] = ''; $_REQUEST[$barUrlToken] = ''; $filter = new TestableChainedStandardInputFilter(); $fC = new Frontcontroller(); $fC->registerActionUrlMapping(new ActionUrlMapping($fooUrlToken, $fooActionNamespace, $fooActionName)); $fC->registerActionUrlMapping(new ActionUrlMapping($barUrlToken, $barActionNamespace, $barActionName)); $filter->setFrontcontroller($fC); $filter->filter(new TestableFilterChain(), null); $actions = $fC->getActions(); $this->assertEquals($fooActionNamespace, $actions[0]->getActionNamespace()); $this->assertEquals($fooActionName, $actions[0]->getActionName()); $this->assertEquals([], $actions[0]->getInput()->getParameters()); $this->assertEquals('VENDOR\\baz', $actions[1]->getActionNamespace()); $this->assertEquals('say-baz', $actions[1]->getActionName()); $this->assertEquals([], $actions[1]->getInput()->getParameters()); $this->assertEquals($barActionNamespace, $actions[2]->getActionNamespace()); $this->assertEquals($barActionName, $actions[2]->getActionName()); $this->assertEquals([], $actions[2]->getInput()->getParameters()); // action on stack w/ params $_REQUEST = []; $_REQUEST[$fooUrlToken] = 'one:1|two:2'; $_REQUEST['VENDOR_baz-action:say-baz'] = 'one:1|two:2'; $_REQUEST[$barUrlToken] = 'one:1|two:2'; $filter = new TestableChainedStandardInputFilter(); $fC = new Frontcontroller(); $fC->registerActionUrlMapping(new ActionUrlMapping($fooUrlToken, $fooActionNamespace, $fooActionName)); $fC->registerActionUrlMapping(new ActionUrlMapping($barUrlToken, $barActionNamespace, $barActionName)); $filter->setFrontcontroller($fC); $filter->filter(new TestableFilterChain(), null); $actions = $fC->getActions(); $this->assertEquals($fooActionNamespace, $actions[0]->getActionNamespace()); $this->assertEquals($fooActionName, $actions[0]->getActionName()); $this->assertEquals(['one' => '1', 'two' => '2'], $actions[0]->getInput()->getParameters()); $this->assertEquals('VENDOR\\baz', $actions[1]->getActionNamespace()); $this->assertEquals('say-baz', $actions[1]->getActionName()); $this->assertEquals(['one' => '1', 'two' => '2'], $actions[1]->getInput()->getParameters()); $this->assertEquals($barActionNamespace, $actions[2]->getActionNamespace()); $this->assertEquals($barActionName, $actions[2]->getActionName()); $this->assertEquals(['one' => '1', 'two' => '2'], $actions[2]->getInput()->getParameters()); }
public function testMixedActions() { $fooUrlToken = 'foo'; $fooActionNamespace = 'VENDOR\\foo'; $fooActionName = 'say-foo'; $barUrlToken = 'bar'; $barActionNamespace = 'VENDOR\\bar'; $barActionName = 'say-bar'; // action on stack w/o params - trailing slash special challenge ;) $_REQUEST = []; $_REQUEST[self::REWRITTEN_QUERY_ATTRIBUTE] = '/' . $fooUrlToken . '/~/VENDOR_baz-action/say-baz/~/' . $barUrlToken . '/'; $filter = new TestableChainedUrlRewritingInputFilter(); $fC = new Frontcontroller(); $fC->registerActionUrlMapping(new ActionUrlMapping($fooUrlToken, $fooActionNamespace, $fooActionName)); $fC->registerActionUrlMapping(new ActionUrlMapping($barUrlToken, $barActionNamespace, $barActionName)); $filter->setFrontcontroller($fC); $filter->filter(new TestableFilterChain(), null); $actions = $fC->getActions(); $this->assertEquals($fooActionNamespace, $actions[0]->getActionNamespace()); $this->assertEquals($fooActionName, $actions[0]->getActionName()); $this->assertEquals([], $actions[0]->getInput()->getParameters()); $this->assertEquals('VENDOR\\baz', $actions[1]->getActionNamespace()); $this->assertEquals('say-baz', $actions[1]->getActionName()); $this->assertEquals([], $actions[1]->getInput()->getParameters()); $this->assertEquals($barActionNamespace, $actions[2]->getActionNamespace()); $this->assertEquals($barActionName, $actions[2]->getActionName()); $this->assertEquals([], $actions[2]->getInput()->getParameters()); // action on stack w/ params $_REQUEST = []; $_REQUEST[self::REWRITTEN_QUERY_ATTRIBUTE] = '/~/' . $fooUrlToken . '/one/1/two/2/~/VENDOR_baz-action/say-baz/one/1/two/2/~/' . $barUrlToken . '/one/1/two/2'; $filter = new TestableChainedUrlRewritingInputFilter(); $fC = new Frontcontroller(); $fC->registerActionUrlMapping(new ActionUrlMapping($fooUrlToken, $fooActionNamespace, $fooActionName)); $fC->registerActionUrlMapping(new ActionUrlMapping($barUrlToken, $barActionNamespace, $barActionName)); $filter->setFrontcontroller($fC); $filter->filter(new TestableFilterChain(), null); $actions = $fC->getActions(); $this->assertEquals($fooActionNamespace, $actions[0]->getActionNamespace()); $this->assertEquals($fooActionName, $actions[0]->getActionName()); $this->assertEquals(['one' => '1', 'two' => '2'], $actions[0]->getInput()->getParameters()); $this->assertEquals('VENDOR\\baz', $actions[1]->getActionNamespace()); $this->assertEquals('say-baz', $actions[1]->getActionName()); $this->assertEquals(['one' => '1', 'two' => '2'], $actions[1]->getInput()->getParameters()); $this->assertEquals($barActionNamespace, $actions[2]->getActionNamespace()); $this->assertEquals($barActionName, $actions[2]->getActionName()); $this->assertEquals(['one' => '1', 'two' => '2'], $actions[2]->getInput()->getParameters()); }