More tests

Also, found that damn newline that was being output.
This commit is contained in:
Joshua Sherman 2013-12-30 17:13:22 -05:00
parent 64dc006b5f
commit c0dbb39bda
5 changed files with 76 additions and 45 deletions

View file

@ -134,7 +134,15 @@ class Browser extends Object
} }
header('Location: ' . $destination); header('Location: ' . $destination);
exit;
if (defined('UNIT_TESTING'))
{
throw new Exception();
}
else
{
exit;
}
} }
/** /**

View file

@ -201,7 +201,7 @@ class Controller extends Object
if ($_SERVER['REQUEST_METHOD'] == 'POST') if ($_SERVER['REQUEST_METHOD'] == 'POST')
{ {
// @todo Perhaps I could force a logout / redirect to the login page // @todo Perhaps I could force a logout / redirect to the login page
exit('{"status": "error", "message": "You are not properly authenticated, try logging out and back in."}'); throw new Exception('{"status": "error", "message": "You are not properly authenticated, try logging out and back in."}');
} }
else else
{ {

View file

@ -264,4 +264,3 @@ class String
} }
?> ?>

View file

@ -8,9 +8,32 @@ $root = org\bovigo\vfs\vfsStream::setup('site');
if (!defined('SITE_PATH')) if (!defined('SITE_PATH'))
{ {
define('SECURITY_LEVEL_USER', 10);
define('SITE_PATH', org\bovigo\vfs\vfsStream::url('site/')); define('SITE_PATH', org\bovigo\vfs\vfsStream::url('site/'));
// This isn't ideal but it helps a ton when testing the Browser class.
define('UNIT_TESTING', true);
} }
require_once 'pickles.php'; require_once 'pickles.php';
if (!file_exists(SITE_MODULE_PATH))
{
mkdir(SITE_MODULE_PATH, 0644);
}
if (!file_exists(SITE_TEMPLATE_PATH))
{
mkdir(SITE_TEMPLATE_PATH, 0644);
}
$_SERVER['HTTP_HOST'] = 'testsite.com';
$_SERVER['SERVER_NAME'] = 'Test Server';
function setUpRequest($request, $method = 'GET')
{
$_SERVER['REQUEST_URI'] = '/' . $request;
$_SERVER['REQUEST_METHOD'] = $method;
$_REQUEST['request'] = $request;
}
?> ?>

View file

@ -7,20 +7,11 @@ class ControllerTest extends PHPUnit_Framework_TestCase
public function setUp() public function setUp()
{ {
$this->config = Config::getInstance(); $this->config = Config::getInstance();
$this->config->data['pickles']['disabled'] = false; $this->config->data['pickles']['disabled'] = false;
$this->config->data['pickles']['profiler'] = false; $this->config->data['pickles']['profiler'] = false;
$_SERVER['REQUEST_URI'] = ''; $this->config->data['security']['levels'][10] = 'USER';
if (!file_exists(SITE_MODULE_PATH)) setUpRequest('home');
{
mkdir(SITE_MODULE_PATH, 0644);
}
unlink(SITE_MODULE_PATH . 'testing.php');
$_SERVER['HTTP_HOST'] = 'testsite.com';
$_SERVER['REQUEST_URI'] = '/home';
$_REQUEST['request'] = 'home';
$module = '<?php class home extends Module { } ?>'; $module = '<?php class home extends Module { } ?>';
@ -29,8 +20,6 @@ class ControllerTest extends PHPUnit_Framework_TestCase
public function testSiteDown() public function testSiteDown()
{ {
$_SERVER['SERVER_NAME'] = 'Test Server';
$this->config->data['pickles']['disabled'] = true; $this->config->data['pickles']['disabled'] = true;
$this->expectOutputRegex('/Test Server is currently down for maintenance/'); $this->expectOutputRegex('/Test Server is currently down for maintenance/');
@ -53,28 +42,18 @@ class ControllerTest extends PHPUnit_Framework_TestCase
public function testUpperCaseURI() public function testUpperCaseURI()
{ {
$_SERVER['REQUEST_URI'] = '/TESTING'; setUpRequest('TESTING');
$_REQUEST['request'] = 'TESTING';
new Controller(); new Controller();
$this->assertTrue(in_array('Location: /testing', xdebug_get_headers())); $this->assertTrue(in_array('Location: /testing', xdebug_get_headers()));
} }
/*
public function testForceSecure() public function testForceSecure()
{ {
$_SERVER['REQUEST_URI'] = '/secure'; setUpRequest('secure');
$_REQUEST['request'] = 'secure';
$module = ' $module = '<?php class secure extends Module { public $secure = true; } ?>';
<?php
class secure extends Module
{
public $secure = true;
}
?>
';
file_put_contents(SITE_MODULE_PATH . 'secure.php', $module); file_put_contents(SITE_MODULE_PATH . 'secure.php', $module);
@ -85,18 +64,10 @@ class ControllerTest extends PHPUnit_Framework_TestCase
public function testForceInsecure() public function testForceInsecure()
{ {
$_SERVER['HTTPS'] = 'on'; setUpRequest('insecure');
$_SERVER['REQUEST_URI'] = '/insecure'; $_SERVER['HTTPS'] = 'on';
$_REQUEST['request'] = 'insecure';
$module = ' $module = '<?php class insecure extends Module { public $secure = false; } ?>';
<?php
class insecure extends Module
{
public $secure = false;
}
?>
';
file_put_contents(SITE_MODULE_PATH . 'insecure.php', $module); file_put_contents(SITE_MODULE_PATH . 'insecure.php', $module);
@ -107,19 +78,49 @@ class ControllerTest extends PHPUnit_Framework_TestCase
public function testNotAuthenticated() public function testNotAuthenticated()
{ {
$this->fail(); setUpRequest('notauth');
$module = '<?php class notauth extends Module { public $security = SECURITY_LEVEL_USER; } ?>';
file_put_contents(SITE_MODULE_PATH . 'notauth.php', $module);
new Controller();
$this->assertTrue(in_array('Location: http://testsite.com/login', xdebug_get_headers()));
} }
public function testNotAuthenticatedPOST() public function testNotAuthenticatedPOST()
{ {
$this->fail(); setUpRequest('notauthpost', 'POST');
$module = '<?php class notauthpost extends Module { public $security = SECURITY_LEVEL_USER; } ?>';
file_put_contents(SITE_MODULE_PATH . 'notauthpost.php', $module);
new Controller();
$this->expectOutputRegex('/You are not properly authenticated/');
} }
public function testAuthenticated() public function testAuthenticated()
{ {
$this->fail(); setUpRequest('auth');
$module = '<?php class auth extends Module { '
. 'public $security = SECURITY_LEVEL_USER;'
. 'public function __default() { return ["foo" => "bar"]; }'
. '} ?>';
file_put_contents(SITE_MODULE_PATH . 'auth.php', $module);
session_start();
Security::login(1, 10, 'USER');
new Controller();
$this->expectOutputString('{"foo":"bar"}');
} }
/*
public function testHasLevelAccess() public function testHasLevelAccess()
{ {
$this->fail(); $this->fail();