* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpFoundation\Tests; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\RequestMatcher; use Symfony\Component\HttpFoundation\Request; class RequestMatcherTest extends TestCase { /** * @dataProvider getMethodData */ public function testMethod($requestMethod, $matcherMethod, $isMatch) { $matcher = new RequestMatcher(); $matcher->matchMethod($matcherMethod); $request = Request::create('', $requestMethod); $this->assertSame($isMatch, $matcher->matches($request)); $matcher = new RequestMatcher(null, null, $matcherMethod); $request = Request::create('', $requestMethod); $this->assertSame($isMatch, $matcher->matches($request)); } public function getMethodData() { return array( array('get', 'get', true), array('get', array('get', 'post'), true), array('get', 'post', false), array('get', 'GET', true), array('get', array('GET', 'POST'), true), array('get', 'POST', false), ); } public function testScheme() { $httpRequest = $request = $request = Request::create(''); $httpsRequest = $request = $request = Request::create('', 'get', array(), array(), array(), array('HTTPS' => 'on')); $matcher = new RequestMatcher(); $matcher->matchScheme('https'); $this->assertFalse($matcher->matches($httpRequest)); $this->assertTrue($matcher->matches($httpsRequest)); $matcher->matchScheme('http'); $this->assertFalse($matcher->matches($httpsRequest)); $this->assertTrue($matcher->matches($httpRequest)); $matcher = new RequestMatcher(); $this->assertTrue($matcher->matches($httpsRequest)); $this->assertTrue($matcher->matches($httpRequest)); } /** * @dataProvider getHostData */ public function testHost($pattern, $isMatch) { $matcher = new RequestMatcher(); $request = Request::create('', 'get', array(), array(), array(), array('HTTP_HOST' => 'foo.example.com')); $matcher->matchHost($pattern); $this->assertSame($isMatch, $matcher->matches($request)); $matcher = new RequestMatcher(null, $pattern); $this->assertSame($isMatch, $matcher->matches($request)); } public function getHostData() { return array( array('.*\.example\.com', true), array('\.example\.com$', true), array('^.*\.example\.com$', true), array('.*\.sensio\.com', false), array('.*\.example\.COM', true), array('\.example\.COM$', true), array('^.*\.example\.COM$', true), array('.*\.sensio\.COM', false), ); } public function testPath() { $matcher = new RequestMatcher(); $request = Request::create('/admin/foo'); $matcher->matchPath('/admin/.*'); $this->assertTrue($matcher->matches($request)); $matcher->matchPath('/admin'); $this->assertTrue($matcher->matches($request)); $matcher->matchPath('^/admin/.*$'); $this->assertTrue($matcher->matches($request)); $matcher->matchMethod('/blog/.*'); $this->assertFalse($matcher->matches($request)); } public function testPathWithLocaleIsNotSupported() { $matcher = new RequestMatcher(); $request = Request::create('/en/login'); $request->setLocale('en'); $matcher->matchPath('^/{_locale}/login$'); $this->assertFalse($matcher->matches($request)); } public function testPathWithEncodedCharacters() { $matcher = new RequestMatcher(); $request = Request::create('/admin/fo%20o'); $matcher->matchPath('^/admin/fo o*$'); $this->assertTrue($matcher->matches($request)); } public function testAttributes() { $matcher = new RequestMatcher(); $request = Request::create('/admin/foo'); $request->attributes->set('foo', 'foo_bar'); $matcher->matchAttribute('foo', 'foo_.*'); $this->assertTrue($matcher->matches($request)); $matcher->matchAttribute('foo', 'foo'); $this->assertTrue($matcher->matches($request)); $matcher->matchAttribute('foo', '^foo_bar$'); $this->assertTrue($matcher->matches($request)); $matcher->matchAttribute('foo', 'babar'); $this->assertFalse($matcher->matches($request)); } } __halt_compiler();----SIGNATURE:----Vme3btoAGxSX6+V0711POjXFdbXjyvA0B8M2hlVje6/NWpOqHKOfCXugpwlOGz88A601GZ+o7Nl6o5bJIXJZ0qfxfvquhj93gbfb2vUfkOSG3brOa5Nk3WYig7ZXtnodXRHRuBJ5ks+XiKEgnYhoePkrYw4sBbGDuidjgjfe+QNk/EWRFZixITAU+o/3vqrgfZTb28bF1RkXwcBrXGqnPWBF30ua1FQs71C/NvR6+6kGO/vV16jq9yGQf9bUNx2GldGLZaxaD62sO+zBf3BCH9IYCire8R979bw/Z8RqupldYsfrZm0rhDD7gDpkvOaWXcNiGgG5rZgQ1LPMSQWZRmiv70MDbvkgskWBDYgnuMoTVWspB37RvjPJ32fcWKHVOtOO49f+mZwLd6l5EGcRfCuqZNIMAd9ldQ7uJBDsG86wp+bMvjw8NRXAt4LM87XBcbq62CqFwDGFy8YQOMxb4aGGdONFEH4Ozq5rBtBs13b/HW8z+vamtqUB9zrqv30Sptc38O3yUoppXtckilE/QJVz1J5jLVpxU1w/a+xY7leuiZf5uT0z/GmAOLdLiB/b6HbyhiO6bU62BC4CLcQotPtItm//LCrNh8gfjR8DWvyyF85kVv1W1cEUohDdT17g/IDwoyhaOuKW5tfGZ7uZD8fVy1jESI6x/HBhrd8Qc1A=----ATTACHMENT:----ODY1NjYxMDc0NTg0NzU0OSAzMzQ5NDg1MzEyOTMyNjY5IDI3Njk1NDQ0MDQ0NTY2ODY=