public function testModel() { $redirect = new Redirect(['match_type' => Redirect::TYPE_EXACT, 'target_type' => Redirect::TARGET_TYPE_PATH_URL, 'from_url' => '/this-should-be-source', 'to_url' => '/this-should-be-target', 'requirements' => null, 'status_code' => 302]); $rule = RedirectRule::createWithModel($redirect); self::assertInstanceOf(RedirectRule::class, $rule); self::assertEquals(Redirect::TYPE_EXACT, $rule->getMatchType()); self::assertEquals(Redirect::TARGET_TYPE_PATH_URL, $rule->getTargetType()); self::assertEquals('/this-should-be-source', $rule->getFromUrl()); self::assertEquals('/this-should-be-target', $rule->getToUrl()); self::assertEquals(302, $rule->getStatusCode()); }
public function testAbsoluteRedirect() { $redirect = new Redirect(['match_type' => Redirect::TYPE_EXACT, 'target_type' => Redirect::TARGET_TYPE_PATH_URL, 'from_url' => '/this-should-be-source', 'to_url' => '/absolute/path/to', 'requirements' => null, 'status_code' => 302, 'is_enabled' => 1, 'from_date' => null, 'to_date' => null]); $rule = RedirectRule::createWithModel($redirect); $manager = RedirectManager::createWithRule($rule); self::assertEquals('/absolute/path/to', $manager->getLocation($rule)); $manager->setBasePath('/subdirectory'); self::assertEquals('/absolute/path/to', $manager->getLocation($rule)); $manager->setBasePath('/subdirectory/sub/sub'); self::assertEquals('/absolute/path/to', $manager->getLocation($rule)); }
/** * Test Input Path * * @throws \ApplicationException */ public function onTest() { $inputPath = Request::get('inputPath'); $redirect = new Redirect(Request::get('Redirect')); try { $rule = RedirectRule::createWithModel($redirect); $manager = RedirectManager::createWithRule($rule); $testDate = new Carbon(Request::get('test_date', date('Y-m-d'))); $manager->setMatchDate($testDate); $match = $manager->match($inputPath); } catch (\Exception $e) { throw new \ApplicationException($e->getMessage()); } return ['#testResult' => $this->makePartial('redirect_test_result', ['match' => $match, 'url' => $match ? $manager->getLocation($match) : ''])]; }
/** * Find replacement value for placeholder * * @param RedirectRule $rule * @param string $placeholder * @return string|null */ private function findReplacementForPlaceholder(RedirectRule $rule, $placeholder) { foreach ($rule->getRequirements() as $requirement) { if ($requirement['placeholder'] === $placeholder && !empty($requirement['replacement'])) { return (string) $requirement['replacement']; } } return null; }