/** * @dataProvider getSetRoutersProvider * * @covers ApiRouter::getRouters * @covers ApiRouter::setRouters * * @param array $routers A list of Routers * @param array $expected The expected result of getRouters */ public function testGetSetRouters(array $routers, array $expected) { $obj = new ApiRouter(array(), array(), array()); $obj->setRouters($routers); $this->assertEquals($expected, $obj->getRouters()); }
// config setup define('BASEPATH', '.'); include '../config.php'; if ($config['mode'] == "development") { ini_set("html_errors", 0); } // database setup include '../database.php'; $ji_db = new PDO('mysql:host=' . $db['default']['hostname'] . ';dbname=' . $db['default']['database'], $db['default']['username'], $db['default']['password']); // Set the correct charset for this connection $ji_db->query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); $ji_db->query('SET CHARACTER SET utf8'); // collect URL and headers $request = new Request($config, $_SERVER); // identify our user if applicable $headers = array_change_key_case(apache_request_headers(), CASE_LOWER); if (isset($headers['authorization'])) { $request->identifyUser($ji_db, $headers['authorization']); } // @TODO This feels just a tad... shonky. $rules = json_decode(file_get_contents('../config/routes/2.1.json'), true); $routers = ["v2.1" => new VersionedRouter('2.1', $config, $rules), '' => new DefaultRouter($config)]; $router = new ApiRouter($config, $routers, ['2']); $route = $router->getRoute($request); $return_data = $route->dispatch($request, $ji_db, $config); if (isset($request->user_id)) { $return_data['meta']['user_uri'] = $request->base . '/' . $request->version . '/users/' . $request->user_id; } // Handle output // TODO sort out headers, caching, etc $request->getView()->render($return_data);