summaryrefslogtreecommitdiff
path: root/_test/tests/inc
diff options
context:
space:
mode:
Diffstat (limited to '_test/tests/inc')
-rw-r--r--_test/tests/inc/PassHash.test.php22
-rw-r--r--_test/tests/inc/common_basicinfo.test.php64
-rw-r--r--_test/tests/inc/common_mediainfo.test.php49
-rw-r--r--_test/tests/inc/common_ml.test.php114
-rw-r--r--_test/tests/inc/httpclient_http.test.php11
-rw-r--r--_test/tests/inc/media_isexternal.test.php22
-rw-r--r--_test/tests/inc/media_ispublic.test.php18
-rw-r--r--_test/tests/inc/pageutils_clean_id.test.php4
-rw-r--r--_test/tests/inc/tar.test.php44
-rw-r--r--_test/tests/inc/tar/block.txt1
-rw-r--r--_test/tests/inc/tar/zero.txt0
11 files changed, 349 insertions, 0 deletions
diff --git a/_test/tests/inc/PassHash.test.php b/_test/tests/inc/PassHash.test.php
new file mode 100644
index 000000000..b6cb07090
--- /dev/null
+++ b/_test/tests/inc/PassHash.test.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * Class PassHash_test
+ *
+ * most tests are in auth_password.test.php
+ */
+class PassHash_test extends PHPUnit_Framework_TestCase {
+
+ function test_hmac(){
+ // known hashes taken from https://code.google.com/p/yii/issues/detail?id=1942
+ $this->assertEquals('df08aef118f36b32e29d2f47cda649b6', PassHash::hmac('md5','data','secret'));
+ $this->assertEquals('9818e3306ba5ac267b5f2679fe4abd37e6cd7b54', PassHash::hmac('sha1','data','secret'));
+
+ // known hashes from https://en.wikipedia.org/wiki/Hash-based_message_authentication_code
+ $this->assertEquals('74e6f7298a9c2d168935f58c001bad88', PassHash::hmac('md5','',''));
+ $this->assertEquals('fbdb1d1b18aa6c08324b7d64b71fb76370690e1d', PassHash::hmac('sha1','',''));
+ $this->assertEquals('80070713463e7749b90c2dc24911e275', PassHash::hmac('md5','The quick brown fox jumps over the lazy dog','key'));
+ $this->assertEquals('de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9', PassHash::hmac('sha1','The quick brown fox jumps over the lazy dog','key'));
+
+ }
+} \ No newline at end of file
diff --git a/_test/tests/inc/common_basicinfo.test.php b/_test/tests/inc/common_basicinfo.test.php
new file mode 100644
index 000000000..0369474c9
--- /dev/null
+++ b/_test/tests/inc/common_basicinfo.test.php
@@ -0,0 +1,64 @@
+<?php
+
+class common_infofunctions_test extends DokuWikiTest {
+
+ function setup(){
+ parent::setup();
+
+ global $USERINFO;
+ $USERINFO = array(
+ 'pass' => '179ad45c6ce2cb97cf1029e212046e81',
+ 'name' => 'Arthur Dent',
+ 'mail' => 'arthur@example.com',
+ 'grps' => array ('admin','user'),
+ );
+ $_SERVER['REMOTE_USER'] = 'testuser';
+ $_SERVER['REMOTE_ADDR'] = '1.2.3.4';
+ }
+
+ function _get_info() {
+ global $USERINFO;
+ $info = array (
+ 'isadmin' => true,
+ 'ismanager' => true,
+ 'userinfo' => $USERINFO,
+ 'perm' => 255,
+ 'namespace' => false,
+ 'ismobile' => false,
+ 'client' => 'testuser',
+ );
+
+ return $info;
+ }
+
+ /**
+ * Its important to have the correct set of keys.
+ * Other functions provide the values
+ */
+ function test_basicinfo(){
+ // test with REMOTE_USER set and the user an admin user
+ $info = $this->_get_info();
+ $this->assertEquals(basicinfo($ID,true),$info);
+
+ // with $httpclient parameter set to false
+ unset($info['ismobile']);
+ $this->assertEquals(basicinfo($ID,false),$info);
+
+ // with anonymous user
+ unset($_SERVER['REMOTE_USER']);
+ global $USERINFO; $USERINFO = array();
+
+ $info = array(
+ 'isadmin' => false,
+ 'ismanager' => false,
+ 'perm' => 8,
+ 'namespace' => false,
+ 'ismobile' => false,
+ 'client' => '1.2.3.4',
+ );
+ $this->assertEquals(basicinfo($ID,true),$info);
+ }
+
+}
+
+//Setup VIM: ex: et ts=4 :
diff --git a/_test/tests/inc/common_mediainfo.test.php b/_test/tests/inc/common_mediainfo.test.php
new file mode 100644
index 000000000..0e67fbcd9
--- /dev/null
+++ b/_test/tests/inc/common_mediainfo.test.php
@@ -0,0 +1,49 @@
+<?php
+
+class common_basicinfo_test extends DokuWikiTest {
+
+ function setup(){
+ parent::setup();
+
+ global $USERINFO;
+ $USERINFO = array(
+ 'pass' => '179ad45c6ce2cb97cf1029e212046e81',
+ 'name' => 'Arthur Dent',
+ 'mail' => 'arthur@example.com',
+ 'grps' => array ('admin','user'),
+ );
+ $_SERVER['REMOTE_USER'] = 'testuser';
+ $_SERVER['REMOTE_ADDR'] = '1.2.3.4';
+ }
+
+ function _get_info() {
+ global $USERINFO;
+ $info = array (
+ 'isadmin' => true,
+ 'ismanager' => true,
+ 'userinfo' => $USERINFO,
+ 'perm' => 255,
+ 'namespace' => false,
+ 'ismobile' => false,
+ 'client' => 'testuser',
+ );
+
+ return $info;
+ }
+
+ /**
+ * We're interested in the extra keys for $INFO when its a media request
+ */
+ function test_mediainfo(){
+ global $NS, $IMG;
+ $NS = '';
+ $IMG = 'testimage.png';
+
+ $info = $this->_get_info();
+ $info['image'] = 'testimage.png';
+
+ $this->assertEquals(mediainfo(),$info);
+ }
+}
+
+//Setup VIM: ex: et ts=4 :
diff --git a/_test/tests/inc/common_ml.test.php b/_test/tests/inc/common_ml.test.php
new file mode 100644
index 000000000..6f3b71db4
--- /dev/null
+++ b/_test/tests/inc/common_ml.test.php
@@ -0,0 +1,114 @@
+<?php
+
+class common_ml_test extends DokuWikiTest {
+
+ private $script = 'lib/exe/fetch.php';
+
+ function test_ml_empty() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+ $conf['start'] = 'start';
+
+ $this->assertEquals(DOKU_BASE . $this->script . '?media=' , ml());
+ }
+
+ function test_ml_args_array() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $args = array('a' => 'b', 'c' => 'd', 'q' => '&ä');
+
+ $expect = DOKU_BASE . $this->script . '?a=b&amp;c=d&amp;q=%26%C3%A4&amp;media=some:img.jpg';
+ $this->assertEquals($expect, ml('some:img.jpg', $args));
+ }
+
+ function test_ml_args_string() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $args = 'a=b&c=d';
+
+ $expect = DOKU_BASE . $this->script . '?a=b&c=d&amp;media=some:img.png';
+ $this->assertEquals($expect, ml('some:img.png', $args));
+ }
+
+ function test_ml_args_comma_string() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $args = 'a=b,c=d';
+
+ $expect = DOKU_BASE . $this->script . '?a=b&amp;c=d&amp;media=some:img.gif';
+ $this->assertEquals($expect, ml('some:img.gif', $args));
+ }
+
+
+ function test_ml_imgresize_array() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $id = 'some:img.png';
+ $w = 80;
+ $args = array('w' => $w);
+ $tok = media_get_token($id,$w,0);
+
+ $expect = DOKU_BASE . $this->script . '?w='.$w.'&amp;tok='.$tok.'&amp;media='.$id;
+ $this->assertEquals($expect, ml($id, $args));
+ }
+
+ function test_ml_imgresize_string() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $id = 'some:img.png';
+ $w = 80;
+ $args = 'w='.$w;
+ $tok = media_get_token($id,$w,0);
+
+ $expect = DOKU_BASE . $this->script . '?w='.$w.'&amp;tok='.$tok.'&amp;media='.$id;
+ $this->assertEquals($expect, ml($id, $args));
+ }
+
+ function test_ml_imgresize_array_rootid() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $id = ':wiki:dokuwiki-128.png';
+ $cleanid = 'wiki:dokuwiki-128.png';
+ $w = 80;
+ $args = array('w' => $w);
+ $tok = media_get_token($cleanid, $w, 0);
+
+ $expect = DOKU_BASE.$this->script.'?w='.$w.'&amp;tok='.$tok.'&amp;media='.$cleanid;
+ $this->assertEquals($expect, ml($id, $args));
+ }
+
+ function test_ml_imgresize_array_external() {
+ global $conf;
+ $conf['useslash'] = 0;
+ $conf['userewrite'] = 0;
+
+ $ids = array(
+ 'https://example.com/lib/tpl/dokuwiki/images/logo.png',
+ 'http://example.com/lib/tpl/dokuwiki/images/logo.png',
+ 'ftp://example.com/lib/tpl/dokuwiki/images/logo.png'
+ );
+ $w = 80;
+ $args = array('w' => $w);
+
+ foreach($ids as $id) {
+ $tok = media_get_token($id, $w, 0);
+ $hash = substr(PassHash::hmac('md5', $id, auth_cookiesalt()), 0, 6);
+
+ $expect = DOKU_BASE.$this->script.'?hash='.$hash.'&amp;w='.$w.'&amp;tok='.$tok.'&amp;media='.rawurlencode($id);
+ $this->assertEquals($expect, ml($id, $args));
+ }
+ }
+}
diff --git a/_test/tests/inc/httpclient_http.test.php b/_test/tests/inc/httpclient_http.test.php
index 252eb6b65..387eb53aa 100644
--- a/_test/tests/inc/httpclient_http.test.php
+++ b/_test/tests/inc/httpclient_http.test.php
@@ -204,5 +204,16 @@ class httpclient_http_test extends DokuWikiTest {
$this->assertFalse($data === false, 'HTTP response');
$this->assertEquals(2550,strlen($data));
}
+
+ /**
+ * This address caused trouble with stream_select()
+ *
+ * @group internet
+ */
+ function test_wikimatrix(){
+ $http = new HTTPClient();
+ $data = $http->get('http://www.wikimatrix.org/cfeed/dokuwiki/-/-');
+ $this->assertTrue($data !== false, $http->error);
+ }
}
//Setup VIM: ex: et ts=4 :
diff --git a/_test/tests/inc/media_isexternal.test.php b/_test/tests/inc/media_isexternal.test.php
new file mode 100644
index 000000000..cf5f793e4
--- /dev/null
+++ b/_test/tests/inc/media_isexternal.test.php
@@ -0,0 +1,22 @@
+<?php
+
+class media_isexternal_test extends DokuWikiTest {
+
+
+ public function test_external(){
+ $this->assertTrue(media_isexternal('http://www.example.com/foo.png'));
+ $this->assertTrue(media_isexternal('https://www.example.com/foo.png'));
+ $this->assertTrue(media_isexternal('ftp://www.example.com/foo.png'));
+ $this->assertTrue(media_isexternal('hTTp://www.example.com/foo.png'));
+ $this->assertTrue(media_isexternal('hTTps://www.example.com/foo.png'));
+ $this->assertTrue(media_isexternal('Ftp://www.example.com/foo.png'));
+ }
+
+ public function test_internal(){
+ $this->assertFalse(media_isexternal('wiki:logo.png'));
+ $this->assertFalse(media_isexternal('private:logo.png'));
+ $this->assertFalse(media_isexternal('ftp:private:logo.png'));
+
+ }
+
+} \ No newline at end of file
diff --git a/_test/tests/inc/media_ispublic.test.php b/_test/tests/inc/media_ispublic.test.php
new file mode 100644
index 000000000..307c64654
--- /dev/null
+++ b/_test/tests/inc/media_ispublic.test.php
@@ -0,0 +1,18 @@
+<?php
+
+class media_ispublic_test extends DokuWikiTest {
+
+
+ public function test_external(){
+ $this->assertTrue(media_ispublic('http://www.example.com/foo.png'));
+ $this->assertTrue(media_ispublic('https://www.example.com/foo.png'));
+ $this->assertTrue(media_ispublic('hTTp://www.example.com/foo.png'));
+ $this->assertTrue(media_ispublic('hTTps://www.example.com/foo.png'));
+ }
+
+ public function test_internal(){
+ $this->assertTrue(media_ispublic('wiki:logo.png'));
+ $this->assertFalse(media_ispublic('private:logo.png'));
+ }
+
+} \ No newline at end of file
diff --git a/_test/tests/inc/pageutils_clean_id.test.php b/_test/tests/inc/pageutils_clean_id.test.php
index 9c5781b24..478fd2bc4 100644
--- a/_test/tests/inc/pageutils_clean_id.test.php
+++ b/_test/tests/inc/pageutils_clean_id.test.php
@@ -43,6 +43,10 @@ class init_clean_id_test extends DokuWikiTest {
$tests[] = array('ns._#!ns:page','false','ns._ns:page');
$tests[] = array('ns_:page',false,'ns:page');
$tests[] = array('page...page','false','page...page');
+ $tests[] = array(':page',false,'page');
+ $tests[] = array(':ns:page',false,'ns:page');
+ $tests[] = array('page:',false,'page');
+ $tests[] = array('ns:page:',false,'ns:page');
$conf['useslash'] = 0;
$tests[] = array('page/page',false,'page_page');
diff --git a/_test/tests/inc/tar.test.php b/_test/tests/inc/tar.test.php
index e8805a75d..90bc2e49e 100644
--- a/_test/tests/inc/tar.test.php
+++ b/_test/tests/inc/tar.test.php
@@ -316,4 +316,48 @@ class Tar_TestCase extends DokuWikiTest {
TestUtils::rdelete($out);
}
+
+ /**
+ * A single zero file should be just a header block + the footer
+ */
+ public function test_zerofile(){
+ $dir = dirname(__FILE__).'/tar';
+ $tar = new Tar();
+ $tar->create();
+ $tar->addFile("$dir/zero.txt", 'zero.txt');
+ $file = $tar->getArchive(Tar::COMPRESS_NONE);
+
+ $this->assertEquals(512*3, strlen($file)); // 1 header block + 2 footer blocks
+ }
+
+ public function test_zerodata(){
+ $tar = new Tar();
+ $tar->create();
+ $tar->addData('zero.txt','');
+ $file = $tar->getArchive(Tar::COMPRESS_NONE);
+
+ $this->assertEquals(512*3, strlen($file)); // 1 header block + 2 footer blocks
+ }
+
+ /**
+ * A file of exactly one block should be just a header block + data block + the footer
+ */
+ public function test_blockfile(){
+ $dir = dirname(__FILE__).'/tar';
+ $tar = new Tar();
+ $tar->create();
+ $tar->addFile("$dir/block.txt", 'block.txt');
+ $file = $tar->getArchive(Tar::COMPRESS_NONE);
+
+ $this->assertEquals(512*4, strlen($file)); // 1 header block + data block + 2 footer blocks
+ }
+
+ public function test_blockdata(){
+ $tar = new Tar();
+ $tar->create();
+ $tar->addData('block.txt', str_pad('', 512, 'x'));
+ $file = $tar->getArchive(Tar::COMPRESS_NONE);
+
+ $this->assertEquals(512*4, strlen($file)); // 1 header block + data block + 2 footer blocks
+ }
} \ No newline at end of file
diff --git a/_test/tests/inc/tar/block.txt b/_test/tests/inc/tar/block.txt
new file mode 100644
index 000000000..9b2f53080
--- /dev/null
+++ b/_test/tests/inc/tar/block.txt
@@ -0,0 +1 @@
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \ No newline at end of file
diff --git a/_test/tests/inc/tar/zero.txt b/_test/tests/inc/tar/zero.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/_test/tests/inc/tar/zero.txt