Esempio n. 1
0
 public function testStack()
 {
     $r = new Router();
     $r->stack('Fixture\\FirstMiddleware');
     $r->stack('Fixture\\SecondMiddleware');
     $r->get('/', function ($req) {
         return $req->query->get('content', '') . ' /';
     });
     $r->group('/g', function ($r) {
         $r->stack('Fixture\\ThirdMiddleware');
         $r->get('/', function ($req) {
             return $req->query->get('content', '') . ' /g/';
         });
     });
     $res = $r->run(Request::create('/'));
     $this->assertEquals(200, $res->getStatusCode());
     $this->assertEquals(' b1 b2 / a2 a1', $res->getContent());
     $res = $r->run(Request::create('/g/'));
     $this->assertEquals(200, $res->getStatusCode());
     $this->assertEquals(' b1 b2 b3 /g/ a3 a2 a1', $res->getContent());
 }
Esempio n. 2
0
 public function testControllerArgs()
 {
     $c = new Container(['test' => $this]);
     $c->bind('Fixture\\Momonga', 'momonga', function ($c) {
         return new Momonga();
     });
     $r = new Router($c);
     $r->get('/', 'Fixture\\MomongaController@argtest');
     $req = Request::create('/');
     $res = $r->run($req);
     $this->assertEquals(200, $res->getStatusCode());
     $this->assertEquals('Momonga argtest', $res->getContent());
 }
Esempio n. 3
0
 /**
  */
 public function testDiByType()
 {
     $test = $this;
     $c = new Container();
     $c->bind('Fixture\\Momonga', 'momonga', function ($c) {
         return new Momonga();
     });
     $r = new Router($c);
     $r->get('/', function (Momonga $m) use($test, $c) {
         $test->assertSame($c['momonga'], $m);
         return '';
     });
     $req = Request::create('/');
     $res = $r->run($req);
     $this->assertEquals(200, $res->getStatusCode());
 }
Esempio n. 4
0
 /**
  */
 public function testInternalServerError()
 {
     $test = $this;
     $someError = new Exception();
     $r = new Router();
     $r->get('/raise', function () use($someError) {
         throw $someError;
     });
     $r->error(500, function ($ex) use($test, $someError) {
         $test->assertSame($someError, $ex);
         return 'Internal Server Error';
     });
     $req = Request::create('/raise');
     $res = $r->run($req);
     $this->assertEquals(500, $res->getStatusCode());
     $this->assertEquals('Internal Server Error', $res->getContent());
 }
Esempio n. 5
0
 public function testParamCondition()
 {
     $r = new Router();
     $r->get('/:id', function () {
         return '';
     })->assert('id', '42');
     $req = Request::create('/42');
     $res = $r->run($req);
     $this->assertEquals(200, $res->getStatusCode());
     $req = Request::create('/41');
     $res = $r->run($req);
     $this->assertEquals(404, $res->getStatusCode());
     $r = new Router();
     $r->get('/:id', function () {
         return '';
     })->assert('id', '/\\A\\d+\\z/');
     $req = Request::create('/42');
     $res = $r->run($req);
     $this->assertEquals(200, $res->getStatusCode());
     $req = Request::create('/id');
     $res = $r->run($req);
     $this->assertEquals(404, $res->getStatusCode());
 }
Esempio n. 6
0
 public function test503()
 {
     $r = new Router();
     $r->get('/', function () {
         throw new ServiceUnavailable();
     });
     $r->error(503, function () {
         return 'RequestEntityTooLarge';
     });
     $res = $r->run(Request::create('/'));
     $this->assertEquals(503, $res->getStatusCode());
 }
Esempio n. 7
0
 public function testAssretAndDefaults()
 {
     $r = new Router();
     $r->get('/:id?', function ($id = 42) {
         return (string) $id;
     })->assert('id', '/\\d+/');
     $req = Request::create('/index');
     $res = $r->run($req);
     $this->assertEquals(404, $res->getStatusCode());
     $req = Request::create('/');
     $res = $r->run($req);
     $this->assertEquals(200, $res->getStatusCode());
     $this->assertEquals('42', $res->getContent());
 }
Esempio n. 8
0
 public function testSeparateRouter()
 {
     $child = new Router();
     $child->get('/', function () {
         return '';
     });
     $r = new Router();
     $r->group('/user', $child);
     $req = Request::create('/user/');
     $res = $r->run($req);
     $this->assertEquals(200, $res->getStatusCode());
     $req = Request::create('/');
     $res = $child->run($req);
     $this->assertEquals(200, $res->getStatusCode());
     $req = Request::create('/user/');
     $res = $child->run($req);
     $this->assertEquals(404, $res->getStatusCode());
     $req = Request::create('/');
     $res = $r->run($req);
     $this->assertEquals(404, $res->getStatusCode());
 }