Example #1
0
 public function testDeepNamedController()
 {
     \Saffyre\Controller::registerDirectory(self::$controllers);
     $controller = \Saffyre\Controller::create('get', 'http://test.com/test-b/test-i');
     $controller->execute();
     $this->assertEquals(self::$controllers, $controller->dir['path']);
     $this->assertEquals('test-b/test-i.php', $controller->file());
     $this->assertEquals(200, $controller->statusCode);
     $this->assertEquals('OK', $controller->statusMessage);
 }
Example #2
0
 public function testGlobalOutputController()
 {
     \Saffyre\Controller::registerDirectory(self::$controllers);
     $controller = \Saffyre\Controller::create('get', 'http://test.com/test-d');
     $controller->execute();
     $this->assertEquals('Error', $controller->response);
     $this->assertEquals(2, count($controller->globalControllers));
     $this->assertEquals('_global.php', $controller->globalControllers[0]->file());
     $this->assertEquals('test-d/_global.php', $controller->globalControllers[1]->file());
     $this->assertNull($controller->globalControllers[0]->response);
     $this->assertEquals('Error', $controller->globalControllers[1]->response);
     $this->assertTrue($controller->canceled);
     $this->assertEquals(200, $controller->statusCode);
     $this->assertEquals('OK', $controller->statusMessage);
 }
Example #3
0
 public static function fromRequest($method = null, $url = null)
 {
     return Controller::create($method ?: $_SERVER['REQUEST_METHOD'], $url ?: (isset($_SERVER['HTTPS']) ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}")->get($_GET)->post($_POST)->cookies($_COOKIE)->headers(getallheaders());
 }
 public function testMultiplePathPrefixesExtensions()
 {
     \Saffyre\Controller::registerDirectory(['path' => self::$controllers, 'extensions' => ['/test-a', '/test-b/test-i']]);
     // Type extensions on / are not allowed
     $controller = \Saffyre\Controller::create('get', 'other.json');
     $controller->execute();
     $this->assertEquals(self::$controllers, $controller->dir['path']);
     $this->assertEquals('_default.php', $controller->file());
     $this->assertEquals('other.json', $controller->args(0));
     $this->assertEquals('', $controller->extension);
     $this->assertEquals(200, $controller->statusCode);
     $this->assertEquals('OK', $controller->statusMessage);
     // Type extensions on /test-a are allowed
     $controller = \Saffyre\Controller::create('get', 'test-a.xml');
     $controller->execute();
     $this->assertEquals(self::$controllers, $controller->dir['path']);
     $this->assertEquals('test-a.php', $controller->file());
     $this->assertEquals(0, count($controller->args()));
     $this->assertEquals('xml', $controller->extension);
     $this->assertEquals(200, $controller->statusCode);
     $this->assertEquals('OK', $controller->statusMessage);
     // Type extensions on /test-a with additional segments are allowed
     $controller = \Saffyre\Controller::create('get', 'test-a/other.txt');
     $controller->execute();
     $this->assertEquals(self::$controllers, $controller->dir['path']);
     $this->assertEquals('test-a.php', $controller->file());
     $this->assertEquals('other', $controller->args(0));
     $this->assertEquals('txt', $controller->extension);
     $this->assertEquals(200, $controller->statusCode);
     $this->assertEquals('OK', $controller->statusMessage);
     // Type extensions on /test-b/test-i are allowed
     $controller = \Saffyre\Controller::create('get', 'test-b/test-i.html');
     $controller->execute();
     $this->assertEquals(self::$controllers, $controller->dir['path']);
     $this->assertEquals('test-b/test-i.php', $controller->file());
     $this->assertEquals('', $controller->args(0));
     $this->assertEquals('html', $controller->extension);
     $this->assertEquals(200, $controller->statusCode);
     $this->assertEquals('OK', $controller->statusMessage);
     // Type extensions on /test-b/test-ii are not allowed
     $controller = \Saffyre\Controller::create('get', 'test-b/test-ii.html');
     $controller->execute();
     $this->assertEquals(self::$controllers, $controller->dir['path']);
     $this->assertEquals('_default.php', $controller->file());
     $this->assertEquals('test-b', $controller->args(0));
     $this->assertEquals('test-ii.html', $controller->args(1));
     $this->assertEquals('', $controller->extension);
     $this->assertEquals(200, $controller->statusCode);
     $this->assertEquals('OK', $controller->statusMessage);
 }