diff --git a/tests/unit/Grav/Common/UriTest.php b/tests/unit/Grav/Common/UriTest.php index 47efc04a9..8d7ff051f 100644 --- a/tests/unit/Grav/Common/UriTest.php +++ b/tests/unit/Grav/Common/UriTest.php @@ -78,6 +78,112 @@ class UriTest extends \Codeception\TestCase\Test $this->assertTrue($uri->params() == null); } + public function testPaths() + { + $uri = $this->getURI(); + + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper')->init(); + $this->assertsame($uri->paths(), ['grav', 'it', 'ueper']); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper:xxx')->init(); + $this->assertsame($uri->paths(), ['grav', 'it']); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x')->init(); + $this->assertsame($uri->paths(), ['grav', 'it', 'ueper']); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d')->init(); + $this->assertsame($uri->paths(), ['a', 'b', 'c', 'd']); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d/e/f/a/b/c/d/e/f/a/b/c/d/e/f')->init(); + $this->assertsame($uri->paths(), ['a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c', 'd', 'e', 'f']); + } + + public function testRoute() + { + $uri = $this->getURI(); + + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper')->init(); + $this->assertsame($uri->route(), '/grav/it/ueper'); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper:xxx')->init(); + $this->assertsame($uri->route(), '/grav/it'); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x')->init(); + $this->assertsame($uri->route(), '/grav/it/ueper'); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d')->init(); + $this->assertsame($uri->route(), '/a/b/c/d'); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d/e/f/a/b/c/d/e/f/a/b/c/d/e/f')->init(); + $this->assertsame($uri->route(), '/a/b/c/d/e/f/a/b/c/d/e/f/a/b/c/d/e/f'); + } + + public function testQuery() + { + $uri = $this->getURI(); + + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper')->init(); + $this->assertsame($uri->query(), ''); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper:xxx')->init(); + $this->assertsame($uri->query(), ''); + $this->assertsame($uri->query('id'), null); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x')->init(); + $this->assertsame($uri->query(), 'test=x'); + $this->assertsame($uri->query('id'), null); + $this->assertsame($uri->query('test'), 'x'); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x&test2=y')->init(); + $this->assertsame($uri->query(), 'test=x&test2=y'); + $this->assertsame($uri->query('id'), null); + $this->assertsame($uri->query('test'), 'x'); + $this->assertsame($uri->query('test2'), 'y'); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x&test2=y&test3=x&test4=y')->init(); + $this->assertsame($uri->query(), 'test=x&test2=y&test3=x&test4=y'); + $this->assertsame($uri->query('id'), null); + $this->assertsame($uri->query('test'), 'x'); + $this->assertsame($uri->query('test2'), 'y'); + $this->assertsame($uri->query('test4'), 'y'); + //Test all after the ? is encoded in the query + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x&test2=y&test3=x&test4=y/test')->init(); + $this->assertsame($uri->query(), 'test=x&test2=y&test3=x&test4=y%2Ftest'); + $this->assertsame($uri->query('id'), null); + $this->assertsame($uri->query('test'), 'x'); + $this->assertsame($uri->query('test2'), 'y'); + $this->assertsame($uri->query('test4'), 'y/test'); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d')->init(); + $this->assertsame($uri->query(), ''); + $this->assertsame($uri->query('id'), null); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d/e/f/a/b/c/d/e/f/a/b/c/d/e/f')->init(); + $this->assertsame($uri->query(), ''); + $this->assertsame($uri->query('id'), null); + } + + public function testParams() + { + $uri = $this->getURI(); + + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper')->init(); + $this->assertsame($uri->params(), null); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper:xxx')->init(); + $this->assertsame($uri->params(), '/ueper:xxx'); + $this->assertsame($uri->params('ueper'), '/ueper:xxx'); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper:xxx/test:yyy')->init(); + $this->assertsame($uri->params(), '/ueper:xxx/test:yyy'); + $this->assertsame($uri->params('ueper'), '/ueper:xxx'); + $this->assertsame($uri->params('test'), '/test:yyy'); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x')->init(); + $this->assertsame($uri->params(), null); + $this->assertsame($uri->params('ueper'), null); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x&test2=y')->init(); + $this->assertsame($uri->params(), null); + $this->assertsame($uri->params('ueper'), null); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x&test2=y&test3=x&test4=y')->init(); + $this->assertsame($uri->params(), null); + $this->assertsame($uri->params('ueper'), null); + $uri->initializeWithURL('http://localhost:8080/grav/it/ueper?test=x&test2=y&test3=x&test4=y/test')->init(); + $this->assertsame($uri->params(), null); + $this->assertsame($uri->params('ueper'), null); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d')->init(); + $this->assertsame($uri->params(), null); + $this->assertsame($uri->params('ueper'), null); + $uri->initializeWithURL('http://localhost:8080/a/b/c/d/e/f/a/b/c/d/e/f/a/b/c/d/e/f')->init(); + $this->assertsame($uri->params(), null); + $this->assertsame($uri->params('ueper'), null); + } + + + }