mirror of https://github.com/flightphp/core
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							218 lines
						
					
					
						
							6.8 KiB
						
					
					
				
			
		
		
	
	
							218 lines
						
					
					
						
							6.8 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
/*
 | 
						|
 * This is the test file where we can open up a quick test server and make
 | 
						|
 * sure that the UI is really working the way we would expect it to.
 | 
						|
 *
 | 
						|
 * @author Kristaps Muižnieks https://github.com/krmu
 | 
						|
 */
 | 
						|
 | 
						|
require file_exists(__DIR__ . '/../../vendor/autoload.php') ? __DIR__ . '/../../vendor/autoload.php' : __DIR__ . '/../../flight/autoload.php';
 | 
						|
 | 
						|
Flight::set('flight.content_length', false);
 | 
						|
Flight::set('flight.views.path', './');
 | 
						|
Flight::set('flight.views.extension', '.phtml');
 | 
						|
// This enables the old functionality of Flight output buffering
 | 
						|
Flight::set('flight.v2.output_buffering', true);
 | 
						|
 | 
						|
// Test 1: Root route
 | 
						|
Flight::route('/', function () {
 | 
						|
    echo '<span id="infotext">Route text:</span> Root route works!';
 | 
						|
    if (Flight::request()->query->redirected) {
 | 
						|
        echo '<br>Redirected from /redirect route successfully!';
 | 
						|
    }
 | 
						|
});
 | 
						|
Flight::route('/querytestpath', function () {
 | 
						|
    echo '<span id="infotext">Route text:</span> This ir query route<br>';
 | 
						|
    echo "I got such query parameters:<pre>";
 | 
						|
    print_r(Flight::request()->query);
 | 
						|
    echo "</pre>";
 | 
						|
}, false, "querytestpath");
 | 
						|
 | 
						|
// Test 2: Simple route
 | 
						|
Flight::route('/test', function () {
 | 
						|
    echo '<span id="infotext">Route text:</span> Test route works!';
 | 
						|
});
 | 
						|
 | 
						|
// Test 3: Route with parameter
 | 
						|
Flight::route('/user/@name', function ($name) {
 | 
						|
    echo "<span id='infotext'>Route text:</span> Hello, $name!";
 | 
						|
});
 | 
						|
Flight::route('POST /postpage', function () {
 | 
						|
    echo '<span id="infotext">Route text:</span> THIS IS POST METHOD PAGE';
 | 
						|
}, false, "postpage");
 | 
						|
 | 
						|
// Test 4: Grouped routes
 | 
						|
Flight::group('/group', function () {
 | 
						|
    Flight::route('/test', function () {
 | 
						|
        echo '<span id="infotext">Route text:</span> Group test route works!';
 | 
						|
    });
 | 
						|
    Flight::route('/user/@name', function ($name) {
 | 
						|
        echo "<span id='infotext'>Route text:</span> There is variable called name and it is $name";
 | 
						|
    });
 | 
						|
    Flight::group('/group1', function () {
 | 
						|
        Flight::group('/group2', function () {
 | 
						|
            Flight::group('/group3', function () {
 | 
						|
                Flight::group('/group4', function () {
 | 
						|
                    Flight::group('/group5', function () {
 | 
						|
                        Flight::group('/group6', function () {
 | 
						|
                            Flight::group('/group7', function () {
 | 
						|
                                Flight::group('/group8', function () {
 | 
						|
                                    Flight::route('/final_group', function () {
 | 
						|
                                        echo 'Mega Group test route works!';
 | 
						|
                                    }, false, "final_group");
 | 
						|
                                });
 | 
						|
                            });
 | 
						|
                        });
 | 
						|
                    });
 | 
						|
                });
 | 
						|
            });
 | 
						|
        });
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
// Test 5: Route alias
 | 
						|
Flight::route('/alias', function () {
 | 
						|
    echo '<span id="infotext">Route text:</span> Alias route works!';
 | 
						|
}, false, 'aliasroute');
 | 
						|
class AuthCheck
 | 
						|
{
 | 
						|
    public function before()
 | 
						|
    {
 | 
						|
        if (!isset($_COOKIE['user'])) {
 | 
						|
            echo '<span id="infotext">Middleware text:</span> You are not authorized to access this route!';
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
$middle = new AuthCheck();
 | 
						|
// Test 6: Route with middleware
 | 
						|
Flight::route('/protected', function () {
 | 
						|
    echo '<span id="infotext">Route text:</span> Protected route works!';
 | 
						|
})->addMiddleware([$middle]);
 | 
						|
 | 
						|
// Test 7: Route with template
 | 
						|
Flight::route('/template/@name', function ($name) {
 | 
						|
    Flight::render('template.phtml', ['name' => $name]);
 | 
						|
});
 | 
						|
 | 
						|
// Test 8: Throw an error
 | 
						|
Flight::route('/error', function () {
 | 
						|
    trigger_error('This is a successful error');
 | 
						|
});
 | 
						|
 | 
						|
// Test 9: JSON output (should not output any other html)
 | 
						|
Flight::route('/json', function () {
 | 
						|
    echo "\n\n\n\n\n";
 | 
						|
    Flight::json(['message' => 'JSON renders successfully!']);
 | 
						|
    echo "\n\n\n\n\n";
 | 
						|
});
 | 
						|
 | 
						|
// Test 13: JSONP output (should not output any other html)
 | 
						|
Flight::route('/jsonp', function () {
 | 
						|
    echo "\n\n\n\n\n";
 | 
						|
    Flight::jsonp(['message' => 'JSONP renders successfully!'], 'jsonp');
 | 
						|
    echo "\n\n\n\n\n";
 | 
						|
});
 | 
						|
 | 
						|
// Test 10: Halt
 | 
						|
Flight::route('/halt', function () {
 | 
						|
    Flight::halt(400, 'Halt worked successfully');
 | 
						|
});
 | 
						|
 | 
						|
// Test 11: Redirect
 | 
						|
Flight::route('/redirect', function () {
 | 
						|
    Flight::redirect('/?redirected=1');
 | 
						|
});
 | 
						|
 | 
						|
Flight::set('flight.views.path', './');
 | 
						|
Flight::map('error', function (Throwable $error) {
 | 
						|
    echo "<h1> An error occurred, mapped  error method worked, error below </h1>";
 | 
						|
    echo '<pre style="border: 2px solid red; padding: 21px; background: lightgray; font-weight: bold;">';
 | 
						|
    echo str_replace(getenv('PWD'), "***CLASSIFIED*****", $error->getTraceAsString());
 | 
						|
    echo "</pre>";
 | 
						|
    echo "<a href='/'>Go back</a>";
 | 
						|
});
 | 
						|
Flight::map('notFound', function () {
 | 
						|
    echo '<span id="infotext">Route text:</span> The requested URL was not found';
 | 
						|
    echo "<a href='/'>Go back</a>";
 | 
						|
});
 | 
						|
echo '
 | 
						|
<style>
 | 
						|
    ul {
 | 
						|
        list-style-type: none;
 | 
						|
        margin: 0;
 | 
						|
        padding: 0;
 | 
						|
        overflow: hidden;
 | 
						|
        background-color: #333;
 | 
						|
    }
 | 
						|
 | 
						|
    li {
 | 
						|
        float: left;
 | 
						|
    }
 | 
						|
    #infotext {
 | 
						|
        font-weight: bold;
 | 
						|
        color: blueviolet;
 | 
						|
        }
 | 
						|
    li a {
 | 
						|
        display: block;
 | 
						|
        color: white;
 | 
						|
        text-align: center;
 | 
						|
        padding: 14px 16px;
 | 
						|
        text-decoration: none;
 | 
						|
    }
 | 
						|
 | 
						|
    li a:hover {
 | 
						|
        background-color: #111;
 | 
						|
    }
 | 
						|
    #container {
 | 
						|
        color: #333;
 | 
						|
        font-size: 16px;
 | 
						|
        line-height: 1.5;
 | 
						|
        margin: 20px 0;
 | 
						|
        padding: 10px;
 | 
						|
        border: 1px solid #ddd;
 | 
						|
        background-color: #f9f9f9;
 | 
						|
    }
 | 
						|
    #debugrequest {
 | 
						|
        color: #333;
 | 
						|
        font-size: 16px;
 | 
						|
        line-height: 1.5;
 | 
						|
        margin: 20px 0;
 | 
						|
        padding: 10px;
 | 
						|
        border: 1px solid #ddd;
 | 
						|
        background-color: #f9f9f9;
 | 
						|
    }
 | 
						|
</style>
 | 
						|
<ul>
 | 
						|
<li><a href="/">Root Route</a></li>
 | 
						|
<li><a href="/test">Test Route</a></li>
 | 
						|
<li><a href="/user/John">User Route with Parameter (John)</a></li>
 | 
						|
<li><a href="/group/test">Grouped Test Route</a></li>
 | 
						|
<li><a href="/group/user/Jane">Grouped User Route with Parameter (Jane)</a></li>
 | 
						|
<li><a href="/alias">Alias Route</a></li>
 | 
						|
<li><a href="/protected">Protected path</a></li>
 | 
						|
<li><a href="/template/templatevariable">Template path</a></li>
 | 
						|
<li><a href="/querytestpath?test=1&variable2=uuid&variable3=tester">Query path</a></li>
 | 
						|
<li><a href="/postpage">Post method test page - should be 404</a></li>
 | 
						|
<li><a href="' . Flight::getUrl('final_group') . '">Mega group</a></li>
 | 
						|
<li><a href="/error">Error</a></li>
 | 
						|
<li><a href="/json">JSON</a></li>
 | 
						|
<li><a href="/json?jsonp=myjson">JSONP</a></li>
 | 
						|
<li><a href="/halt">Halt</a></li>
 | 
						|
<li><a href="/redirect">Redirect</a></li>
 | 
						|
</ul>';
 | 
						|
Flight::before('start', function ($params) {
 | 
						|
    echo '<div id="container">';
 | 
						|
});
 | 
						|
Flight::after('start', function ($params) {
 | 
						|
    echo '</div>';
 | 
						|
    echo '<div id="debugrequest">';
 | 
						|
    echo "Request information<pre>";
 | 
						|
    print_r(Flight::request());
 | 
						|
    echo "</pre>";
 | 
						|
    echo "</div>";
 | 
						|
});
 | 
						|
Flight::start();
 |