Skip to content

Commit

Permalink
Upgrade to packaged/routing 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
bajb committed Jun 18, 2019
1 parent c18dbcf commit 0326c5a
Show file tree
Hide file tree
Showing 6 changed files with 160 additions and 160 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"packaged/figlet": "~0.0",
"packaged/helpers": "~2.0",
"packaged/http": "~1.3",
"packaged/routing": "~1.0",
"packaged/routing": "~2.0",
"packaged/ui": "~1.0",
"packaged/docblock": "~1.0",
"symfony/console": "~4.2",
Expand Down
4 changes: 2 additions & 2 deletions src/Routing/Router.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Packaged\Routing\ConditionHandler;
use Packaged\Routing\Handler\FuncHandler;
use Packaged\Routing\Handler\Handler;
use Packaged\Routing\RequestConstraint;
use Packaged\Routing\RequestCondition;
use Packaged\Routing\Route;

class Router extends RouteProcessor
Expand Down Expand Up @@ -35,7 +35,7 @@ public function onPathFunc($path, callable $handleFunc): Condition

public function onPath($path, Handler $handler): Condition
{
$condition = RequestConstraint::i()->path($path);
$condition = RequestCondition::i()->path($path);
$this->addCondition(Route::with($condition)->setHandler($handler));
return $condition;
}
Expand Down
133 changes: 133 additions & 0 deletions tests/Routing/RequestConditionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
<?php

namespace Cubex\Tests\Routing;

use Packaged\Context\Context;
use Packaged\Http\Request;
use Packaged\Routing\RequestCondition;
use PHPUnit\Framework\TestCase;

class RequestConditionTest extends TestCase
{
public function testConstraints()
{
$request = Request::create('http://www.test.com:8080/path/one', 'POST');
$ctx = new Context($request);

$this->assertTrue(RequestCondition::i()->match($ctx));

$this->assertTrue(RequestCondition::i()->port(8080)->match($ctx));
$this->assertFalse(RequestCondition::i()->port(9898)->match($ctx));

$this->assertTrue(RequestCondition::i()->scheme('http')->match($ctx));
$this->assertFalse(RequestCondition::i()->scheme('https')->match($ctx));

$this->assertTrue(RequestCondition::i()->method('POST')->match($ctx));
$this->assertFalse(RequestCondition::i()->method('GET')->match($ctx));

$this->assertTrue(RequestCondition::i()->path('/path/one')->match($ctx));
$this->assertTrue(RequestCondition::i()->path('/path')->match($ctx));
$this->assertTrue(RequestCondition::i()->path('/path', RequestCondition::TYPE_START)->match($ctx));
$this->assertFalse(RequestCondition::i()->path('/Path', RequestCondition::TYPE_START)->match($ctx));
$this->assertFalse(RequestCondition::i()->path('/path', RequestCondition::TYPE_EXACT)->match($ctx));
$this->assertFalse(RequestCondition::i()->path('/abc')->match($ctx));

$this->assertTrue(RequestCondition::i()->domain('test')->match($ctx));
$this->assertTrue(RequestCondition::i()->domain('test')->tld('com')->match($ctx));
$this->assertFalse(RequestCondition::i()->domain('test')->tld('net')->match($ctx));
$this->assertFalse(RequestCondition::i()->ajax()->match($ctx));

$this->assertTrue(RequestCondition::i()->subDomain('www')->domain('test')->tld('com')->match($ctx));
$this->assertFalse(RequestCondition::i()->subDomain('my')->domain('test')->tld('com')->match($ctx));

$request = Request::create('HTTPS://www.tesT.com:9090/InV123');
$request->server->set('HTTPS', 'on');
$ctx = new Context($request);
$this->assertTrue(
RequestCondition::i()->path('/INV{invoiceNumber@num}', RequestCondition::TYPE_MATCH)->match($ctx)
);
$this->assertFalse(
RequestCondition::i()->path('/INV{invoiceNumber@num}', RequestCondition::TYPE_EXACT)->match($ctx)
);
$this->assertTrue(
RequestCondition::i()->path('/INV', RequestCondition::TYPE_START_CASEI)
->scheme('http', RequestCondition::TYPE_START)
->match($ctx)
);
$this->assertTrue(
RequestCondition::i()->path('/INV', RequestCondition::TYPE_START_CASEI)
->port(9090)
->match($ctx)
);
$this->assertFalse(
RequestCondition::i()->path('/INV', RequestCondition::TYPE_START_CASEI)
->port("9090", RequestCondition::TYPE_EXACT)
->match($ctx)
);

$request = Request::create('HTTPS://www.tesT.com:9090/?x=y&abc');
$request->server->set('HTTPS', 'on');
$ctx = new Context($request);
$this->assertTrue(
RequestCondition::i()->path('/')->domain("tes", RequestCondition::TYPE_START)->match($ctx)
);
$this->assertFalse(
RequestCondition::i()->path('/page')->domain("tes", RequestCondition::TYPE_START)->match($ctx)
);
$this->assertFalse(
RequestCondition::i()->path('')->domain("Ates", RequestCondition::TYPE_START)->match($ctx)
);
$this->assertTrue(
RequestCondition::i()->path('')->domain("tes", RequestCondition::TYPE_START)->match($ctx)
);
$this->assertTrue(RequestCondition::i()->hasQueryKey("abc")->match($ctx));
$this->assertTrue(RequestCondition::i()->hasQueryValue("x", "y")->match($ctx));
$this->assertTrue(RequestCondition::i()->hostname("www.test.com")->match($ctx));
$this->assertTrue(RequestCondition::i()->rootDomain("test.com")->match($ctx));
}

public function testRouteData()
{
$request = Request::create(
'http://www.test.com:8080/one/two/three/4/5/s1x/s3^eN!/all/remain/path/end/finished',
'POST'
);
$ctx = new Context($request);

$constraint = RequestCondition::i()->path(
'/{one}/{two@alpha}/{three}/{four@num}/{five@alphanum}/{six@alphanum}/{seven}/{remain@all}/end'
);
$this->assertTrue($constraint->match($ctx));
$constraint->complete($ctx);

$this->assertEquals("one", $ctx->routeData()->get('one'));
$this->assertEquals("two", $ctx->routeData()->get('two'));
$this->assertEquals("three", $ctx->routeData()->get('three'));
$this->assertEquals("4", $ctx->routeData()->get('four'));
$this->assertEquals("5", $ctx->routeData()->get('five'));
$this->assertEquals("s1x", $ctx->routeData()->get('six'));
$this->assertEquals("s3^eN!", $ctx->routeData()->get('seven'));
$this->assertEquals("all/remain/path", $ctx->routeData()->get('remain'));
$this->assertEquals(
'/one/two/three/4/5/s1x/s3^eN!/all/remain/path/end',
$ctx->meta()->get(RequestCondition::META_ROUTED_PATH)
);

$request = Request::create('http://www.test.com:8080/INV123');
$ctx = new Context($request);
$constraint2 = RequestCondition::i()->path('/INV{invoiceNumber@num}');
$this->assertTrue($constraint2->match($ctx));
$constraint2->complete($ctx);
$this->assertEquals(123, $ctx->routeData()->get('invoiceNumber'));
}

public function testRegexInConstraintVariable()
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Invalid regex passed to path #^/{test#test}(?=/|$)#ui');

$request = Request::create('http://www.test.com:8080/INV123');
$ctx = new Context($request);
RequestCondition::i()->path('/{test#test}')->match($ctx);
}
}
133 changes: 0 additions & 133 deletions tests/Routing/RequestConstraintTest.php

This file was deleted.

36 changes: 18 additions & 18 deletions tests/Routing/RequestDataContraintTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
namespace Cubex\Tests\Routing;

use Packaged\Context\Context;
use Packaged\Routing\RequestDataConstraint;
use Packaged\Http\Request;
use Packaged\Routing\RequestDataCondition;
use PHPUnit\Framework\TestCase;

class RequestDataContraintTest extends TestCase
Expand All @@ -26,7 +26,7 @@ protected function _makeContext()
public function testInstance()
{
$c = $this->_makeContext();
$i = RequestDataConstraint::i();
$i = RequestDataCondition::i();

$this->assertTrue($i->match($c));
$i->post('post1', 'val1');
Expand All @@ -45,39 +45,39 @@ public function testInstance()

public function testServer()
{
$this->assertTrue(RequestDataConstraint::i()->server('HTTPS')->match($this->_makeContext()));
$this->assertTrue(RequestDataConstraint::i()->server('HTTPS', 'on')->match($this->_makeContext()));
$this->assertFalse(RequestDataConstraint::i()->server('HTTP')->match($this->_makeContext()));
$this->assertFalse(RequestDataConstraint::i()->server('HTTPS', 'OFF')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->server('HTTPS')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->server('HTTPS', 'on')->match($this->_makeContext()));
$this->assertFalse(RequestDataCondition::i()->server('HTTP')->match($this->_makeContext()));
$this->assertFalse(RequestDataCondition::i()->server('HTTPS', 'OFF')->match($this->_makeContext()));
}

public function testCookie()
{
$this->assertFalse(RequestDataConstraint::i()->cookie('cookieN')->match($this->_makeContext()));
$this->assertTrue(RequestDataConstraint::i()->cookie('cookie1')->match($this->_makeContext()));
$this->assertTrue(RequestDataConstraint::i()->cookie('cookie1', 'val1')->match($this->_makeContext()));
$this->assertFalse(RequestDataCondition::i()->cookie('cookieN')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->cookie('cookie1')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->cookie('cookie1', 'val1')->match($this->_makeContext()));
$this->assertTrue(
RequestDataConstraint::i()->cookie('cookie1', 'val1')->cookie('cookie2', 'val2')->match($this->_makeContext())
RequestDataCondition::i()->cookie('cookie1', 'val1')->cookie('cookie2', 'val2')->match($this->_makeContext())
);
}

public function testPost()
{
$this->assertFalse(RequestDataConstraint::i()->post('postN')->match($this->_makeContext()));
$this->assertTrue(RequestDataConstraint::i()->post('post1')->match($this->_makeContext()));
$this->assertTrue(RequestDataConstraint::i()->post('post1', 'val1')->match($this->_makeContext()));
$this->assertFalse(RequestDataCondition::i()->post('postN')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->post('post1')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->post('post1', 'val1')->match($this->_makeContext()));
$this->assertTrue(
RequestDataConstraint::i()->post('post1', 'val1')->post('post2', 'val2')->match($this->_makeContext())
RequestDataCondition::i()->post('post1', 'val1')->post('post2', 'val2')->match($this->_makeContext())
);
}

public function testQuery()
{
$this->assertFalse(RequestDataConstraint::i()->query('queryN')->match($this->_makeContext()));
$this->assertTrue(RequestDataConstraint::i()->query('query1')->match($this->_makeContext()));
$this->assertTrue(RequestDataConstraint::i()->query('query1', 'val1')->match($this->_makeContext()));
$this->assertFalse(RequestDataCondition::i()->query('queryN')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->query('query1')->match($this->_makeContext()));
$this->assertTrue(RequestDataCondition::i()->query('query1', 'val1')->match($this->_makeContext()));
$this->assertTrue(
RequestDataConstraint::i()->query('query1', 'val1')->query('query2', 'val2')->match($this->_makeContext())
RequestDataCondition::i()->query('query1', 'val1')->query('query2', 'val2')->match($this->_makeContext())
);
}
}
Loading

0 comments on commit 0326c5a

Please sign in to comment.