summaryrefslogtreecommitdiff
path: root/_test/tests
diff options
context:
space:
mode:
Diffstat (limited to '_test/tests')
-rw-r--r--_test/tests/inc/auth_encryption.test.php12
-rw-r--r--_test/tests/inc/auth_random.test.php20
-rw-r--r--_test/tests/inc/fulltext_mediause.test.php77
-rw-r--r--_test/tests/inc/httpclient_http.test.php55
-rw-r--r--_test/tests/inc/parser/parser_code.test.php72
-rw-r--r--_test/tests/inc/parser/parser_file.test.php56
-rw-r--r--_test/tests/inc/tar.test.php24
7 files changed, 311 insertions, 5 deletions
diff --git a/_test/tests/inc/auth_encryption.test.php b/_test/tests/inc/auth_encryption.test.php
new file mode 100644
index 000000000..041eba00e
--- /dev/null
+++ b/_test/tests/inc/auth_encryption.test.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * Tests the auth_decrypt and auth_encrypt-functions
+ */
+class auth_encryption_test extends DokuWikiTest {
+ function testDeEncrypt() {
+ $data = "OnA28asdfäakgß*+!\"+*";
+ $secret = "oeaf1öasdöflk§";
+ $this->assertEquals($data, auth_decrypt(auth_encrypt($data, $secret), $secret));
+ }
+}
diff --git a/_test/tests/inc/auth_random.test.php b/_test/tests/inc/auth_random.test.php
new file mode 100644
index 000000000..f380eba53
--- /dev/null
+++ b/_test/tests/inc/auth_random.test.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * Tests the random generator functions
+ */
+class auth_random_test extends DokuWikiTest {
+ function testRandomRange() {
+ $rand = auth_random(300, 2000);
+ $this->assertTrue($rand <= 2000, 'The generated number was above the limit');
+ $this->assertTrue($rand >= 300, 'The generate number was too low');
+ }
+
+ function testLargeRandoms() {
+ $min = (1 << 30);
+ $max = $min + (1 << 33) + 17;
+ $rand = auth_random($min, $max);
+ $this->assertTrue($rand >= $min, 'The generated number was too low');
+ $this->assertTrue($rand <= $max, 'The generated number was too high');
+ }
+}
diff --git a/_test/tests/inc/fulltext_mediause.test.php b/_test/tests/inc/fulltext_mediause.test.php
new file mode 100644
index 000000000..9d5b2dc84
--- /dev/null
+++ b/_test/tests/inc/fulltext_mediause.test.php
@@ -0,0 +1,77 @@
+<?php
+
+// must be run within Dokuwiki
+if (!defined('DOKU_INC')) die();
+
+/**
+ * Test cases for the media usage index
+ *
+ * @author Michael Hamann <michael@content-space.de>
+ */
+class fultext_mediause_test extends DokuWikiTest {
+
+ public function test_internalmedia() {
+ saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
+ idx_addPage('test:internalmedia_usage');
+
+ $this->assertEquals(array('test:internalmedia_usage'), ft_mediause('internal_media.png'));
+ $this->assertEquals(array('test:internalmedia_usage'), ft_mediause('test:internalmedia.png'));
+ }
+
+ public function test_media_in_links() {
+ saveWikiText('test:medialinks', '[[doku>wiki:dokuwiki|{{wiki:logo.png}}]] [[http://www.example.com|{{example.png?200x800}}]]', 'Test init');
+ idx_addPage('test:medialinks');
+
+ $this->assertEquals(array('test:medialinks'), ft_mediause('wiki:logo.png'));
+ $this->assertEquals(array('test:medialinks'), ft_mediause('test:example.png'));
+ }
+
+ public function test_media_in_footnotes() {
+ saveWikiText('test:media_footnotes', '(({{footnote.png?20x50}} [[foonote|{{:footlink.png}}]]))', 'Test initialization');
+ idx_addPage('test:media_footnotes');
+
+ $this->assertEquals(array('test:media_footnotes'), ft_mediause('test:footnote.png'));
+ $this->assertEquals(array('test:media_footnotes'), ft_mediause('footlink.png'));
+ }
+
+ public function test_media_in_hidden_pages() {
+ global $conf;
+ $conf['hidepages'] = 'hidden:.*';
+ saveWikiText('hidden:medias', '[[doku>wiki:dokuwiki|{{wiki:hiddenlogo.png}}]]', 'Test initialization');
+ idx_addPage('hidden:medias');
+
+ $this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png'));
+ $this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png', false));
+ $this->assertEquals(array('hidden:medias'), ft_mediause('wiki:hiddenlogo.png', true));
+ }
+
+ public function test_media_in_protected_pages() {
+ global $conf;
+ global $AUTH_ACL;
+ $conf['superuser'] = 'alice';
+ $conf['useacl'] = 1;
+
+ $AUTH_ACL = array(
+ '* @ALL 8',
+ 'secret:* @ALL 0',
+ );
+
+ $_SERVER['REMOTE_USER'] = 'eve';
+
+ saveWikiText('secret:medias', '[[doku>wiki:dokuwiki|{{wiki:secretlogo.png}}]]', 'Test initialization');
+ idx_addPage('secret:medias');
+
+ $this->assertEquals(array(), ft_mediause('wiki:secretlogo.png'));
+ $this->assertEquals(array(), ft_mediause('wiki:secretlogo.png', false));
+ $this->assertEquals(array('secret:medias'), ft_mediause('wiki:secretlogo.png', true));
+ }
+
+ public function test_media_in_deleted_pages() {
+ saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
+ idx_addPage('test:internalmedia_usage');
+ saveWikiText('test:internalmedia_usage', '', 'Deleted');
+
+ $this->assertEquals(array(), ft_mediause('internal_media.png'));
+ $this->assertEquals(array(), ft_mediause('test:internalmedia.png'));
+ }
+}
diff --git a/_test/tests/inc/httpclient_http.test.php b/_test/tests/inc/httpclient_http.test.php
index 387eb53aa..43dd4478f 100644
--- a/_test/tests/inc/httpclient_http.test.php
+++ b/_test/tests/inc/httpclient_http.test.php
@@ -122,9 +122,14 @@ class httpclient_http_test extends DokuWikiTest {
function test_maxbody(){
$http = new HTTPClient();
$http->max_bodysize = 250;
+
+ // this should abort completely
$data = $http->get($this->server.'/stream/30');
$this->assertTrue($data === false, 'HTTP response');
+
+ // this should read just the needed bytes
$http->max_bodysize_abort = false;
+ $http->keep_alive = false;
$data = $http->get($this->server.'/stream/30');
$this->assertFalse($data === false, 'HTTP response');
/* should read no more than max_bodysize+1 */
@@ -215,5 +220,55 @@ class httpclient_http_test extends DokuWikiTest {
$data = $http->get('http://www.wikimatrix.org/cfeed/dokuwiki/-/-');
$this->assertTrue($data !== false, $http->error);
}
+
+ function test_postencode(){
+ $http = new HTTPClient();
+
+
+ // check simple data
+ $data = array(
+ 'öä?' => 'öä?',
+ 'foo' => 'bang'
+ );
+ $this->assertEquals(
+ '%C3%B6%C3%A4%3F=%C3%B6%C3%A4%3F&foo=bang',
+ $http->_postEncode($data),
+ 'simple'
+ );
+
+ // check first level numeric array
+ $data = array(
+ 'foo' => 'bang',
+ 'ärr' => array('ö', 'b', 'c')
+ );
+ $this->assertEquals(
+ 'foo=bang&%C3%A4rr%5B0%5D=%C3%B6&%C3%A4rr%5B1%5D=b&%C3%A4rr%5B2%5D=c',
+ $http->_postEncode($data),
+ 'onelevelnum'
+ );
+
+ // check first level associative array
+ $data = array(
+ 'foo' => 'bang',
+ 'ärr' => array('ö'=>'ä', 'b' => 'c')
+ );
+ $this->assertEquals(
+ 'foo=bang&%C3%A4rr%5B%C3%B6%5D=%C3%A4&%C3%A4rr%5Bb%5D=c',
+ $http->_postEncode($data),
+ 'onelevelassoc'
+ );
+
+
+ // check first level associative array
+ $data = array(
+ 'foo' => 'bang',
+ 'ärr' => array('ö'=>'ä', 'ä' => array('ö'=>'ä'))
+ );
+ $this->assertEquals(
+ 'foo=bang&%C3%A4rr%5B%C3%B6%5D=%C3%A4&%C3%A4rr%5B%C3%A4%5D%5B%C3%B6%5D=%C3%A4',
+ $http->_postEncode($data),
+ 'twolevelassoc'
+ );
+ }
}
//Setup VIM: ex: et ts=4 :
diff --git a/_test/tests/inc/parser/parser_code.test.php b/_test/tests/inc/parser/parser_code.test.php
new file mode 100644
index 000000000..c50d2d328
--- /dev/null
+++ b/_test/tests/inc/parser/parser_code.test.php
@@ -0,0 +1,72 @@
+<?php
+require_once 'parser.inc.php';
+
+class TestOfDoku_Parser_Code extends TestOfDoku_Parser {
+
+ function setUp() {
+ parent::setUp();
+ $this->P->addMode('code',new Doku_Parser_Mode_Code());
+ }
+
+ function testCode() {
+ $this->P->parse('Foo <code>Test</code> Bar');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo ')),
+ array('p_close',array()),
+ array('code',array('Test',null,null)),
+ array('p_open',array()),
+ array('cdata',array(' Bar')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+
+ function testCodeBash() {
+ $this->P->parse('Foo <code bash>Test</code> Bar');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo ')),
+ array('p_close',array()),
+ array('code',array('Test','bash',null)),
+ array('p_open',array()),
+ array('cdata',array(' Bar')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+
+ function testCodeDownload() {
+ $this->P->parse('Foo <code bash script.sh>Test</code> Bar');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo ')),
+ array('p_close',array()),
+ array('code',array('Test','bash','script.sh')),
+ array('p_open',array()),
+ array('cdata',array(' Bar')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+
+ function testCodeToken() {
+ $this->P->parse('Foo <code2>Bar</code2><code>Test</code>');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo <code2>Bar</code2>')),
+ array('p_close',array()),
+ array('code',array('Test',null,null)),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+}
+
diff --git a/_test/tests/inc/parser/parser_file.test.php b/_test/tests/inc/parser/parser_file.test.php
new file mode 100644
index 000000000..39bda8a58
--- /dev/null
+++ b/_test/tests/inc/parser/parser_file.test.php
@@ -0,0 +1,56 @@
+<?php
+require_once 'parser.inc.php';
+
+class TestOfDoku_Parser_File extends TestOfDoku_Parser {
+
+ function setUp() {
+ parent::setUp();
+ $this->P->addMode('file',new Doku_Parser_Mode_File());
+ }
+
+ function testFile() {
+ $this->P->parse('Foo <file>Test</file> Bar');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo ')),
+ array('p_close',array()),
+ array('file',array('Test',null,null)),
+ array('p_open',array()),
+ array('cdata',array(' Bar')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+
+ function testFileHighlightDownload() {
+ $this->P->parse('Foo <file txt test.txt>Test</file> Bar');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo ')),
+ array('p_close',array()),
+ array('file',array('Test','txt','test.txt')),
+ array('p_open',array()),
+ array('cdata',array(' Bar')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+
+ function testFileToken() {
+ $this->P->parse('Foo <file2>Test</file2> Bar');
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n".'Foo <file2>Test</file2> Bar')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
+
+}
+
diff --git a/_test/tests/inc/tar.test.php b/_test/tests/inc/tar.test.php
index 28e709cc3..9801ca1e0 100644
--- a/_test/tests/inc/tar.test.php
+++ b/_test/tests/inc/tar.test.php
@@ -11,7 +11,8 @@ class Tar_TestCase extends DokuWikiTest {
public function test_createdynamic() {
$tar = new Tar();
- $dir = dirname(__FILE__).'/tar';
+ $dir = dirname(__FILE__).'/tar';
+ $tdir = ltrim($dir,'/');
$tar->create();
$tar->AddFile("$dir/testdata1.txt");
@@ -24,11 +25,17 @@ class Tar_TestCase extends DokuWikiTest {
$this->assertTrue(strpos($data, 'testcontent2') !== false, 'Content in TAR');
$this->assertTrue(strpos($data, 'testcontent3') !== false, 'Content in TAR');
- $this->assertTrue(strpos($data, "$dir/testdata1.txt") !== false, 'Path in TAR');
+ // fullpath might be too long to be stored as full path FS#2802
+ $this->assertTrue(strpos($data, "$tdir") !== false, 'Path in TAR');
+ $this->assertTrue(strpos($data, "testdata1.txt") !== false, 'File in TAR');
+
$this->assertTrue(strpos($data, 'noway/testdata2.txt') !== false, 'Path in TAR');
$this->assertTrue(strpos($data, 'another/testdata3.txt') !== false, 'Path in TAR');
- $this->assertTrue(strpos($data, "$dir/foobar/testdata2.txt") === false, 'Path not in TAR');
+ // fullpath might be too long to be stored as full path FS#2802
+ $this->assertTrue(strpos($data, "$tdir/foobar") === false, 'Path not in TAR');
+ $this->assertTrue(strpos($data, "foobar.txt") === false, 'File not in TAR');
+
$this->assertTrue(strpos($data, "foobar") === false, 'Path not in TAR');
}
@@ -42,6 +49,7 @@ class Tar_TestCase extends DokuWikiTest {
$tar = new Tar();
$dir = dirname(__FILE__).'/tar';
+ $tdir = ltrim($dir,'/');
$tmp = tempnam(sys_get_temp_dir(), 'dwtartest');
$tar->create($tmp, Tar::COMPRESS_NONE);
@@ -57,11 +65,17 @@ class Tar_TestCase extends DokuWikiTest {
$this->assertTrue(strpos($data, 'testcontent2') !== false, 'Content in TAR');
$this->assertTrue(strpos($data, 'testcontent3') !== false, 'Content in TAR');
- $this->assertTrue(strpos($data, "$dir/testdata1.txt") !== false, 'Path in TAR');
+ // fullpath might be too long to be stored as full path FS#2802
+ $this->assertTrue(strpos($data, "$tdir") !== false, 'Path in TAR');
+ $this->assertTrue(strpos($data, "testdata1.txt") !== false, 'File in TAR');
+
$this->assertTrue(strpos($data, 'noway/testdata2.txt') !== false, 'Path in TAR');
$this->assertTrue(strpos($data, 'another/testdata3.txt') !== false, 'Path in TAR');
- $this->assertTrue(strpos($data, "$dir/foobar/testdata2.txt") === false, 'Path not in TAR');
+ // fullpath might be too long to be stored as full path FS#2802
+ $this->assertTrue(strpos($data, "$tdir/foobar") === false, 'Path not in TAR');
+ $this->assertTrue(strpos($data, "foobar.txt") === false, 'File not in TAR');
+
$this->assertTrue(strpos($data, "foobar") === false, 'Path not in TAR');
@unlink($tmp);