예제 #1
0
 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());
 }
예제 #2
0
 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));
 }
예제 #3
0
 /**
  * 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) : ''])];
 }
예제 #4
0
 /**
  * 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;
 }