dokuwiki/_test/tests/inc/input.test.php

305 lines
12 KiB
PHP

<?php
use dokuwiki\Input\Input;
/**
* Tests for the dokuwiki\Input\Input class
*/
class input_test extends DokuWikiTest {
private $data = array(
'array' => array('foo', 'bar'),
'string' => 'foo',
'int' => '17',
'zero' => '0',
'one' => '1',
'empty' => '',
'emptya' => array(),
'do' => array('save' => 'Speichern'),
);
/**
* custom filter function
*
* @param $string
* @return mixed
*/
public function myfilter($string) {
$string = str_replace('foo', 'bar', $string);
$string = str_replace('baz', '', $string);
return $string;
}
public function test_filter() {
$_GET = array(
'foo' => 'foo',
'zstring'=> "foo\0bar",
'znull' => "\0",
'zint' => '42'."\0".'42',
'zintbaz'=> "baz42",
);
$_POST = $_GET;
$_REQUEST = $_GET;
$INPUT = new Input();
$filter = array($this,'myfilter');
$this->assertNotSame('foobar', $INPUT->str('zstring'));
$this->assertSame('foobar', $INPUT->filter()->str('zstring'));
$this->assertSame('bar', $INPUT->filter($filter)->str('foo'));
$this->assertSame('bar', $INPUT->filter()->str('znull', 'bar', true));
$this->assertNotSame('foobar', $INPUT->str('zstring')); // make sure original input is unmodified
$this->assertNotSame('foobar', $INPUT->get->str('zstring'));
$this->assertSame('foobar', $INPUT->get->filter()->str('zstring'));
$this->assertSame('bar', $INPUT->get->filter($filter)->str('foo'));
$this->assertSame('bar', $INPUT->get->filter()->str('znull', 'bar', true));
$this->assertNotSame('foobar', $INPUT->get->str('zstring')); // make sure original input is unmodified
$this->assertNotSame(4242, $INPUT->int('zint'));
$this->assertSame(4242, $INPUT->filter()->int('zint'));
$this->assertSame(42, $INPUT->filter($filter)->int('zintbaz'));
$this->assertSame(42, $INPUT->filter()->str('znull', 42, true));
$this->assertSame(true, $INPUT->bool('znull'));
$this->assertSame(false, $INPUT->filter()->bool('znull'));
$this->assertSame('foobar', $INPUT->filter()->valid('zstring', array('foobar', 'bang')));
}
public function test_str() {
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$_GET['get'] = 1;
$_POST['post'] = 1;
$INPUT = new Input();
$this->assertSame('foo', $INPUT->str('string'));
$this->assertSame('', $INPUT->str('none'));
$this->assertSame('', $INPUT->str('empty'));
$this->assertSame('foo', $INPUT->str('none', 'foo'));
$this->assertSame('', $INPUT->str('empty', 'foo'));
$this->assertSame('foo', $INPUT->str('empty', 'foo', true));
$this->assertSame(false, $INPUT->str('get', false));
$this->assertSame(false, $INPUT->str('post', false));
$this->assertSame('foo', $INPUT->post->str('string'));
$this->assertSame('', $INPUT->post->str('none'));
$this->assertSame('', $INPUT->post->str('empty'));
$this->assertSame('foo', $INPUT->post->str('none', 'foo'));
$this->assertSame('', $INPUT->post->str('empty', 'foo'));
$this->assertSame('foo', $INPUT->post->str('empty', 'foo', true));
$this->assertSame(false, $INPUT->post->str('get', false));
$this->assertSame('1', $INPUT->post->str('post', false));
$this->assertSame('foo', $INPUT->get->str('string'));
$this->assertSame('', $INPUT->get->str('none'));
$this->assertSame('', $INPUT->get->str('empty'));
$this->assertSame('foo', $INPUT->get->str('none', 'foo'));
$this->assertSame('', $INPUT->get->str('empty', 'foo'));
$this->assertSame('foo', $INPUT->get->str('empty', 'foo', true));
$this->assertSame(false, $INPUT->get->str('post', false));
$this->assertSame('1', $INPUT->get->str('get', false));
$this->assertSame('', $INPUT->str('array'));
}
public function test_int() {
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$_GET['get'] = 1;
$_POST['post'] = 1;
$INPUT = new Input();
$this->assertSame(17, $INPUT->int('int'));
$this->assertSame(0, $INPUT->int('none'));
$this->assertSame(0, $INPUT->int('empty'));
$this->assertSame(42, $INPUT->int('none', 42));
$this->assertSame(0, $INPUT->int('zero', 42));
$this->assertSame(42, $INPUT->int('zero', 42, true));
$this->assertSame(false, $INPUT->int('get', false));
$this->assertSame(false, $INPUT->int('post', false));
$this->assertSame(17, $INPUT->post->int('int'));
$this->assertSame(0, $INPUT->post->int('none'));
$this->assertSame(0, $INPUT->post->int('empty'));
$this->assertSame(42, $INPUT->post->int('none', 42));
$this->assertSame(0, $INPUT->post->int('zero', 42));
$this->assertSame(42, $INPUT->post->int('zero', 42, true));
$this->assertSame(false, $INPUT->post->int('get', false));
$this->assertSame(1, $INPUT->post->int('post', false));
$this->assertSame(17, $INPUT->post->int('int'));
$this->assertSame(0, $INPUT->post->int('none'));
$this->assertSame(0, $INPUT->post->int('empty'));
$this->assertSame(42, $INPUT->post->int('none', 42));
$this->assertSame(0, $INPUT->post->int('zero', 42));
$this->assertSame(42, $INPUT->post->int('zero', 42, true));
$this->assertSame(false, $INPUT->get->int('post', false));
$this->assertSame(1, $INPUT->get->int('get', false));
$this->assertSame(0, $INPUT->int('array'));
$this->assertSame(0, $INPUT->int('zero', -1));
$this->assertSame(-1, $INPUT->int('empty', -1));
$this->assertSame(-1, $INPUT->int('zero', -1, true));
$this->assertSame(-1, $INPUT->int('empty', -1, true));
}
public function test_arr() {
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$_GET['get'] = array(1, 2);
$_POST['post'] = array(1, 2);
$INPUT = new Input();
$this->assertSame(array('foo', 'bar'), $INPUT->arr('array'));
$this->assertSame(array(), $INPUT->arr('none'));
$this->assertSame(array(), $INPUT->arr('empty'));
$this->assertSame(array(1, 2), $INPUT->arr('none', array(1, 2)));
$this->assertSame(array(), $INPUT->arr('emptya', array(1, 2)));
$this->assertSame(array(1, 2), $INPUT->arr('emptya', array(1, 2), true));
$this->assertSame(false, $INPUT->arr('get', false));
$this->assertSame(false, $INPUT->arr('post', false));
$this->assertSame(array('foo', 'bar'), $INPUT->post->arr('array'));
$this->assertSame(array(), $INPUT->post->arr('none'));
$this->assertSame(array(), $INPUT->post->arr('empty'));
$this->assertSame(array(1, 2), $INPUT->post->arr('none', array(1, 2)));
$this->assertSame(array(), $INPUT->post->arr('emptya', array(1, 2)));
$this->assertSame(array(1, 2), $INPUT->post->arr('emptya', array(1, 2), true));
$this->assertSame(false, $INPUT->post->arr('get', false));
$this->assertSame(array(1, 2), $INPUT->post->arr('post', false));
$this->assertSame(array('foo', 'bar'), $INPUT->get->arr('array'));
$this->assertSame(array(), $INPUT->get->arr('none'));
$this->assertSame(array(), $INPUT->get->arr('empty'));
$this->assertSame(array(1, 2), $INPUT->get->arr('none', array(1, 2)));
$this->assertSame(array(), $INPUT->get->arr('emptya', array(1, 2)));
$this->assertSame(array(1, 2), $INPUT->get->arr('emptya', array(1, 2), true));
$this->assertSame(array(1, 2), $INPUT->get->arr('get', false));
$this->assertSame(false, $INPUT->get->arr('post', false));
}
public function test_bool() {
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$_GET['get'] = '1';
$_POST['post'] = '1';
$INPUT = new Input();
$this->assertSame(true, $INPUT->bool('one'));
$this->assertSame(false, $INPUT->bool('zero'));
$this->assertSame(false, $INPUT->bool('get'));
$this->assertSame(false, $INPUT->bool('post'));
$this->assertSame(true, $INPUT->post->bool('one'));
$this->assertSame(false, $INPUT->post->bool('zero'));
$this->assertSame(false, $INPUT->post->bool('get'));
$this->assertSame(true, $INPUT->post->bool('post'));
$this->assertSame(false, $INPUT->bool('zero', -1));
$this->assertSame(-1, $INPUT->bool('empty', -1));
$this->assertSame(-1, $INPUT->bool('zero', -1, true));
$this->assertSame(-1, $INPUT->bool('empty', -1, true));
}
public function test_remove() {
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$INPUT = new Input();
$INPUT->remove('string');
$this->assertNull($_REQUEST['string']);
$this->assertNull($_POST['string']);
$this->assertNull($_GET['string']);
$INPUT->post->remove('int');
$this->assertNull($_POST['int']);
$this->assertEquals(17, $_GET['int']);
$this->assertEquals(17, $_REQUEST['int']);
}
public function test_set(){
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$INPUT = new Input();
$INPUT->set('test','foo');
$this->assertEquals('foo',$_REQUEST['test']);
$this->assertNull($_POST['test']);
$this->assertNull($_GET['test']);
$INPUT->get->set('test2','foo');
$this->assertEquals('foo',$_GET['test2']);
$this->assertEquals('foo',$_REQUEST['test2']);
$this->assertNull($_POST['test']);
}
public function test_ref(){
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$INPUT = new Input();
$test = &$INPUT->ref('string');
$this->assertEquals('foo',$test);
$_REQUEST['string'] = 'bla';
$this->assertEquals('bla',$test);
}
public function test_valid(){
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$INPUT = new Input();
$valids = array(17, 'foo');
$this->assertSame(null, $INPUT->valid('nope', $valids));
$this->assertSame('bang', $INPUT->valid('nope', $valids, 'bang'));
$this->assertSame(17, $INPUT->valid('int', $valids));
$this->assertSame('foo', $INPUT->valid('string', $valids));
$this->assertSame(null, $INPUT->valid('array', $valids));
$valids = array(true);
$this->assertSame(true, $INPUT->valid('string', $valids));
$this->assertSame(true, $INPUT->valid('one', $valids));
$this->assertSame(null, $INPUT->valid('zero', $valids));
}
public function test_extract(){
$_REQUEST = $this->data;
$_POST = $this->data;
$_GET = $this->data;
$INPUT = new Input();
$this->assertEquals('save', $INPUT->extract('do')->str('do'));
$this->assertEquals('', $INPUT->extract('emptya')->str('emptya'));
$this->assertEquals('foo', $INPUT->extract('string')->str('string'));
$this->assertEquals('foo', $INPUT->extract('array')->str('array'));
$this->assertEquals('save', $INPUT->post->extract('do')->str('do'));
$this->assertEquals('', $INPUT->post->extract('emptya')->str('emptya'));
$this->assertEquals('foo', $INPUT->post->extract('string')->str('string'));
$this->assertEquals('foo', $INPUT->post->extract('array')->str('array'));
}
}