buildTransID($inputLang, $inputID); $this->assertEquals($expected, $actual_result); } /** * Test provider * @return array[] * @see testRedirectStart */ public static function provideRedirectStart() { return [ [ 'start', 'de es', 'de,en-US;q=0.8,en;q=0.5,fr;q=0.3', 'de:start', 'redirect to translated page', ], [ 'start', 'de es', 'en-US,de;q=0.8,en;q=0.5,fr;q=0.3', [], 'do not redirect if basic namespace is correct lang', ], [ 'de:start', 'en de es', 'en-US,en;q=0.8,fr;q=0.5', [], 'do not redirect anything other than exactly $conf[\'start\']', ], ]; } /** * @dataProvider provideRedirectStart * * @param $input * @param $translationsOption * @param $httpAcceptHeader * @param $expected */ public function testRedirectStart($input, $translationsOption, $httpAcceptHeader, $expected, $msg) { global $conf; $conf['plugin']['translation']['translations'] = $translationsOption; $conf['plugin']['translation']['redirectstart'] = 1; // reset event handler (this should be done by the TestRequest, but it doesn't) global $EVENT_HANDLER; $EVENT_HANDLER = new EventHandler(); /** @var \helper_plugin_translation $helper */ $helper = plugin_load('helper', 'translation'); $helper->loadTranslationNamespaces(); $request = new TestRequest(); $request->setServer('HTTP_ACCEPT_LANGUAGE', $httpAcceptHeader); $response = $request->get(array('id' => $input)); $actual = $response->getHeader('Location'); if (is_string($actual)) { list(, $actual) = explode('doku.php?id=', $actual); } $this->assertEquals($expected, $actual, $msg); } }