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); }
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); }
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); }