diff --git a/lib/persistence.php b/lib/persistence.php
index 42a6674..58faadf 100644
--- a/lib/persistence.php
+++ b/lib/persistence.php
@@ -48,7 +48,7 @@ abstract class persistence
public static function getPath($filename = null)
{
if(strlen($filename)) {
- return self::$_path . '/' . $filename;
+ return self::$_path . DIRECTORY_SEPARATOR . $filename;
} else {
return self::$_path;
}
diff --git a/tst/RainTPL.php b/tst/RainTPL.php
index 39272e0..8892a68 100644
--- a/tst/RainTPL.php
+++ b/tst/RainTPL.php
@@ -1,103 +1,103 @@
- '5 minutes',
- '1hour' => '1 hour',
- 'never' => 'Never',
- );
-
- private static $expire_default = '1hour';
-
- private static $version = 'Version 1.2.3';
-
- private $_content;
-
- public function setUp()
- {
- /* Setup Routine */
- $page = new RainTPL;
- $page::configure(array('cache_dir' => 'tmp/'));
-
- $page = new RainTPL;
- // We escape it here because ENT_NOQUOTES can't be used in RainTPL templates.
- $page->assign('CIPHERDATA', htmlspecialchars(self::$data, ENT_NOQUOTES));
- $page->assign('ERROR', self::$error);
- $page->assign('STATUS', self::$status);
- $page->assign('VERSION', self::$version);
- $page->assign('BURNAFTERREADINGSELECTED', false);
- $page->assign('OPENDISCUSSION', false);
- $page->assign('SYNTAXHIGHLIGHTING', true);
- $page->assign('EXPIRE', self::$expire);
- $page->assign('EXPIREDEFAULT', self::$expire_default);
- ob_start();
- $page->draw('page');
- $this->_content = ob_get_contents();
- // run a second time from cache
- $page->cache('page');
- $page->draw('page');
- ob_end_clean();
- }
-
- public function tearDown()
- {
- /* Tear Down Routine */
- helper::rmdir(PATH . 'tmp');
- }
-
- public function testTemplateRendersCorrectly()
- {
- $this->assertTag(
- array(
- 'id' => 'cipherdata',
- 'content' => htmlspecialchars(self::$data, ENT_NOQUOTES)
- ),
- $this->_content,
- 'outputs data correctly'
- );
- $this->assertTag(
- array(
- 'id' => 'errormessage',
- 'content' => self::$error
- ),
- $this->_content,
- 'outputs error correctly'
- );
- $this->assertTag(
- array(
- 'id' => 'opendiscussion',
- 'attributes' => array(
- 'disabled' => 'disabled'
- ),
- ),
- $this->_content,
- 'disables discussions if configured'
- );
- // testing version number in JS address, since other instances may not be present in different templates
- $this->assertTag(
- array(
- 'tag' => 'script',
- 'attributes' => array(
- 'src' => 'js/zerobin.js?' . rawurlencode(self::$version)
- ),
- ),
- $this->_content,
- 'outputs version correctly'
- );
- }
-
- /**
- * @expectedException RainTpl_Exception
- */
- public function testMissingTemplate()
- {
- $test = new RainTPL;
- $test->draw('123456789 does not exist!');
- }
-}
+ '5 minutes',
+ '1hour' => '1 hour',
+ 'never' => 'Never',
+ );
+
+ private static $expire_default = '1hour';
+
+ private static $version = 'Version 1.2.3';
+
+ private $_content;
+
+ public function setUp()
+ {
+ /* Setup Routine */
+ $page = new RainTPL;
+ $page::configure(array('cache_dir' => 'tmp/'));
+
+ $page = new RainTPL;
+ // We escape it here because ENT_NOQUOTES can't be used in RainTPL templates.
+ $page->assign('CIPHERDATA', htmlspecialchars(self::$data, ENT_NOQUOTES));
+ $page->assign('ERROR', self::$error);
+ $page->assign('STATUS', self::$status);
+ $page->assign('VERSION', self::$version);
+ $page->assign('BURNAFTERREADINGSELECTED', false);
+ $page->assign('OPENDISCUSSION', false);
+ $page->assign('SYNTAXHIGHLIGHTING', true);
+ $page->assign('EXPIRE', self::$expire);
+ $page->assign('EXPIREDEFAULT', self::$expire_default);
+ ob_start();
+ $page->draw('page');
+ $this->_content = ob_get_contents();
+ // run a second time from cache
+ $page->cache('page');
+ $page->draw('page');
+ ob_end_clean();
+ }
+
+ public function tearDown()
+ {
+ /* Tear Down Routine */
+ helper::rmdir(PATH . 'tmp');
+ }
+
+ public function testTemplateRendersCorrectly()
+ {
+ $this->assertTag(
+ array(
+ 'id' => 'cipherdata',
+ 'content' => htmlspecialchars(self::$data, ENT_NOQUOTES)
+ ),
+ $this->_content,
+ 'outputs data correctly'
+ );
+ $this->assertTag(
+ array(
+ 'id' => 'errormessage',
+ 'content' => self::$error
+ ),
+ $this->_content,
+ 'outputs error correctly'
+ );
+ $this->assertTag(
+ array(
+ 'id' => 'opendiscussion',
+ 'attributes' => array(
+ 'disabled' => 'disabled'
+ ),
+ ),
+ $this->_content,
+ 'disables discussions if configured'
+ );
+ // testing version number in JS address, since other instances may not be present in different templates
+ $this->assertTag(
+ array(
+ 'tag' => 'script',
+ 'attributes' => array(
+ 'src' => 'js/zerobin.js?' . rawurlencode(self::$version)
+ ),
+ ),
+ $this->_content,
+ 'outputs version correctly'
+ );
+ }
+
+ /**
+ * @expectedException RainTpl_Exception
+ */
+ public function testMissingTemplate()
+ {
+ $test = new RainTPL;
+ $test->draw('123456789 does not exist!');
+ }
+}
diff --git a/tst/auto.php b/tst/auto.php
index f8cb4c0..3bc99b3 100644
--- a/tst/auto.php
+++ b/tst/auto.php
@@ -1,8 +1,8 @@
-assertFalse(auto::loader('foo2501bar42'), 'calling non existent class');
- }
-}
+assertFalse(auto::loader('foo2501bar42'), 'calling non existent class');
+ }
+}
diff --git a/tst/filter.php b/tst/filter.php
index 198a13f..c8d4239 100644
--- a/tst/filter.php
+++ b/tst/filter.php
@@ -1,47 +1,47 @@
-assertEquals(
- array("f'oo", "b'ar", array("fo'o", "b'ar")),
- filter::stripslashes_deep(array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")))
- );
- }
-
- public function testFilterMakesSizesHumanlyReadable()
- {
- $this->assertEquals('1 B', filter::size_humanreadable(1));
- $this->assertEquals('1 000 B', filter::size_humanreadable(1000));
- $this->assertEquals('1.00 kiB', filter::size_humanreadable(1024));
- $this->assertEquals('1.21 kiB', filter::size_humanreadable(1234));
- $exponent = 1024;
- $this->assertEquals('1 000.00 kiB', filter::size_humanreadable(1000 * $exponent));
- $this->assertEquals('1.00 MiB', filter::size_humanreadable(1024 * $exponent));
- $this->assertEquals('1.21 MiB', filter::size_humanreadable(1234 * $exponent));
- $exponent *= 1024;
- $this->assertEquals('1 000.00 MiB', filter::size_humanreadable(1000 * $exponent));
- $this->assertEquals('1.00 GiB', filter::size_humanreadable(1024 * $exponent));
- $this->assertEquals('1.21 GiB', filter::size_humanreadable(1234 * $exponent));
- $exponent *= 1024;
- $this->assertEquals('1 000.00 GiB', filter::size_humanreadable(1000 * $exponent));
- $this->assertEquals('1.00 TiB', filter::size_humanreadable(1024 * $exponent));
- $this->assertEquals('1.21 TiB', filter::size_humanreadable(1234 * $exponent));
- $exponent *= 1024;
- $this->assertEquals('1 000.00 TiB', filter::size_humanreadable(1000 * $exponent));
- $this->assertEquals('1.00 PiB', filter::size_humanreadable(1024 * $exponent));
- $this->assertEquals('1.21 PiB', filter::size_humanreadable(1234 * $exponent));
- $exponent *= 1024;
- $this->assertEquals('1 000.00 PiB', filter::size_humanreadable(1000 * $exponent));
- $this->assertEquals('1.00 EiB', filter::size_humanreadable(1024 * $exponent));
- $this->assertEquals('1.21 EiB', filter::size_humanreadable(1234 * $exponent));
- $exponent *= 1024;
- $this->assertEquals('1 000.00 EiB', filter::size_humanreadable(1000 * $exponent));
- $this->assertEquals('1.00 ZiB', filter::size_humanreadable(1024 * $exponent));
- $this->assertEquals('1.21 ZiB', filter::size_humanreadable(1234 * $exponent));
- $exponent *= 1024;
- $this->assertEquals('1 000.00 ZiB', filter::size_humanreadable(1000 * $exponent));
- $this->assertEquals('1.00 YiB', filter::size_humanreadable(1024 * $exponent));
- $this->assertEquals('1.21 YiB', filter::size_humanreadable(1234 * $exponent));
- }
-}
+assertEquals(
+ array("f'oo", "b'ar", array("fo'o", "b'ar")),
+ filter::stripslashes_deep(array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")))
+ );
+ }
+
+ public function testFilterMakesSizesHumanlyReadable()
+ {
+ $this->assertEquals('1 B', filter::size_humanreadable(1));
+ $this->assertEquals('1 000 B', filter::size_humanreadable(1000));
+ $this->assertEquals('1.00 kiB', filter::size_humanreadable(1024));
+ $this->assertEquals('1.21 kiB', filter::size_humanreadable(1234));
+ $exponent = 1024;
+ $this->assertEquals('1 000.00 kiB', filter::size_humanreadable(1000 * $exponent));
+ $this->assertEquals('1.00 MiB', filter::size_humanreadable(1024 * $exponent));
+ $this->assertEquals('1.21 MiB', filter::size_humanreadable(1234 * $exponent));
+ $exponent *= 1024;
+ $this->assertEquals('1 000.00 MiB', filter::size_humanreadable(1000 * $exponent));
+ $this->assertEquals('1.00 GiB', filter::size_humanreadable(1024 * $exponent));
+ $this->assertEquals('1.21 GiB', filter::size_humanreadable(1234 * $exponent));
+ $exponent *= 1024;
+ $this->assertEquals('1 000.00 GiB', filter::size_humanreadable(1000 * $exponent));
+ $this->assertEquals('1.00 TiB', filter::size_humanreadable(1024 * $exponent));
+ $this->assertEquals('1.21 TiB', filter::size_humanreadable(1234 * $exponent));
+ $exponent *= 1024;
+ $this->assertEquals('1 000.00 TiB', filter::size_humanreadable(1000 * $exponent));
+ $this->assertEquals('1.00 PiB', filter::size_humanreadable(1024 * $exponent));
+ $this->assertEquals('1.21 PiB', filter::size_humanreadable(1234 * $exponent));
+ $exponent *= 1024;
+ $this->assertEquals('1 000.00 PiB', filter::size_humanreadable(1000 * $exponent));
+ $this->assertEquals('1.00 EiB', filter::size_humanreadable(1024 * $exponent));
+ $this->assertEquals('1.21 EiB', filter::size_humanreadable(1234 * $exponent));
+ $exponent *= 1024;
+ $this->assertEquals('1 000.00 EiB', filter::size_humanreadable(1000 * $exponent));
+ $this->assertEquals('1.00 ZiB', filter::size_humanreadable(1024 * $exponent));
+ $this->assertEquals('1.21 ZiB', filter::size_humanreadable(1234 * $exponent));
+ $exponent *= 1024;
+ $this->assertEquals('1 000.00 ZiB', filter::size_humanreadable(1000 * $exponent));
+ $this->assertEquals('1.00 YiB', filter::size_humanreadable(1024 * $exponent));
+ $this->assertEquals('1.21 YiB', filter::size_humanreadable(1234 * $exponent));
+ }
+}
diff --git a/tst/phpunit.xml b/tst/phpunit.xml
index 035b040..eeed5e6 100644
--- a/tst/phpunit.xml
+++ b/tst/phpunit.xml
@@ -14,4 +14,4 @@
-
\ No newline at end of file
+
diff --git a/tst/sjcl.php b/tst/sjcl.php
index eca5f4f..2473ea5 100644
--- a/tst/sjcl.php
+++ b/tst/sjcl.php
@@ -1,21 +1,21 @@
-assertTrue(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'valid sjcl');
- $this->assertFalse(sjcl::isValid('{"iv":"$","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid base64 encoding of iv');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"$","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid base64 encoding of salt');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","salt":"Gx1vA2/gQ3U","ct":"$"}'), 'invalid base64 encoding of ct');
- $this->assertFalse(sjcl::isValid('{"iv":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'iv to long');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'salt to long');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA","foo":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA="}'), 'invalid additional key');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":0.9,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'unsupported version');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":100,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'not enough iterations');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":127,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid key size');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":63,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid tag length');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"!#@","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid mode');
- $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"!#@","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid cipher');
- // @note adata is not validated, except as part of the total message length
- }
-}
+assertTrue(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'valid sjcl');
+ $this->assertFalse(sjcl::isValid('{"iv":"$","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid base64 encoding of iv');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"$","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid base64 encoding of salt');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","salt":"Gx1vA2/gQ3U","ct":"$"}'), 'invalid base64 encoding of ct');
+ $this->assertFalse(sjcl::isValid('{"iv":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'iv to long');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'salt to long');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA","foo":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA="}'), 'invalid additional key');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":0.9,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'unsupported version');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":100,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'not enough iterations');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":127,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid key size');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":63,"mode":"ccm","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid tag length');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"!#@","adata":"","cipher":"aes","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid mode');
+ $this->assertFalse(sjcl::isValid('{"iv":"83Ax/OdUav3SanDW9dcQPg","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"!#@","salt":"Gx1vA2/gQ3U","ct":"j7ImByuE5xCqD2YXm6aSyA"}'), 'invalid cipher');
+ // @note adata is not validated, except as part of the total message length
+ }
+}
diff --git a/tst/trafficlimiter.php b/tst/trafficlimiter.php
index 67e0a5a..97b8655 100644
--- a/tst/trafficlimiter.php
+++ b/tst/trafficlimiter.php
@@ -1,30 +1,33 @@
-_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'trafficlimit';
- trafficlimiter::setPath($this->_path);
- }
-
- public function tearDown()
- {
- /* Tear Down Routine */
- helper::rmdir($this->_path . DIRECTORY_SEPARATOR);
- }
-
- public function testTrafficGetsLimited()
- {
- trafficlimiter::setLimit(4);
- $this->assertTrue(trafficlimiter::canPass('127.0.0.1'), 'first request may pass');
- sleep(2);
- $this->assertFalse(trafficlimiter::canPass('127.0.0.1'), 'second request is to fast, may not pass');
- sleep(3);
- $this->assertTrue(trafficlimiter::canPass('127.0.0.1'), 'third request waited long enough and may pass');
- $this->assertTrue(trafficlimiter::canPass('2001:1620:2057:dead:beef::cafe:babe'), 'fourth request has different ip and may pass');
- $this->assertFalse(trafficlimiter::canPass('127.0.0.1'), 'fifth request is to fast, may not pass');
- }
-}
+_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'trafficlimit';
+ trafficlimiter::setPath($this->_path);
+ }
+
+ public function tearDown()
+ {
+ /* Tear Down Routine */
+ helper::rmdir($this->_path . DIRECTORY_SEPARATOR);
+ }
+
+ public function testTrafficGetsLimited()
+ {
+ $this->assertEquals($this->_path, trafficlimiter::getPath());
+ $file = 'baz';
+ $this->assertEquals($this->_path . DIRECTORY_SEPARATOR . $file, trafficlimiter::getPath($file));
+ trafficlimiter::setLimit(4);
+ $this->assertTrue(trafficlimiter::canPass('127.0.0.1'), 'first request may pass');
+ sleep(2);
+ $this->assertFalse(trafficlimiter::canPass('127.0.0.1'), 'second request is to fast, may not pass');
+ sleep(3);
+ $this->assertTrue(trafficlimiter::canPass('127.0.0.1'), 'third request waited long enough and may pass');
+ $this->assertTrue(trafficlimiter::canPass('2001:1620:2057:dead:beef::cafe:babe'), 'fourth request has different ip and may pass');
+ $this->assertFalse(trafficlimiter::canPass('127.0.0.1'), 'fifth request is to fast, may not pass');
+ }
+}
diff --git a/tst/vizhash16x16.php b/tst/vizhash16x16.php
index cf73011..82f06a0 100644
--- a/tst/vizhash16x16.php
+++ b/tst/vizhash16x16.php
@@ -1,41 +1,41 @@
-_path = PATH . 'data' . DIRECTORY_SEPARATOR;
- $this->_dataDirCreated = !is_dir($this->_path);
- if($this->_dataDirCreated) mkdir($this->_path);
- $this->_file = $this->_path . 'vizhash.png';
- }
-
- public function tearDown()
- {
- /* Tear Down Routine */
- if($this->_dataDirCreated) {
- helper::rmdir($this->_path);
- } else {
- if(!@unlink($this->_file)) {
- throw new Exception('Error deleting file "' . $this->_file . '".');
- }
- }
- }
-
- public function testVizhashGeneratesUniquePngsPerIp()
- {
- $vz = new vizhash16x16();
- $pngdata = $vz->generate('127.0.0.1');
- file_put_contents($this->_file, $pngdata);
- $finfo = new finfo(FILEINFO_MIME_TYPE);
- $this->assertEquals('image/png', $finfo->file($this->_file));
- $this->assertNotEquals($pngdata, $vz->generate('2001:1620:2057:dead:beef::cafe:babe'));
- $this->assertEquals($pngdata, $vz->generate('127.0.0.1'));
- }
-}
+_path = PATH . 'data' . DIRECTORY_SEPARATOR;
+ $this->_dataDirCreated = !is_dir($this->_path);
+ if($this->_dataDirCreated) mkdir($this->_path);
+ $this->_file = $this->_path . 'vizhash.png';
+ }
+
+ public function tearDown()
+ {
+ /* Tear Down Routine */
+ if($this->_dataDirCreated) {
+ helper::rmdir($this->_path);
+ } else {
+ if(!@unlink($this->_file)) {
+ throw new Exception('Error deleting file "' . $this->_file . '".');
+ }
+ }
+ }
+
+ public function testVizhashGeneratesUniquePngsPerIp()
+ {
+ $vz = new vizhash16x16();
+ $pngdata = $vz->generate('127.0.0.1');
+ file_put_contents($this->_file, $pngdata);
+ $finfo = new finfo(FILEINFO_MIME_TYPE);
+ $this->assertEquals('image/png', $finfo->file($this->_file));
+ $this->assertNotEquals($pngdata, $vz->generate('2001:1620:2057:dead:beef::cafe:babe'));
+ $this->assertEquals($pngdata, $vz->generate('127.0.0.1'));
+ }
+}
diff --git a/tst/zerobin/data.php b/tst/zerobin/data.php
index 7e85285..0dce94e 100644
--- a/tst/zerobin/data.php
+++ b/tst/zerobin/data.php
@@ -1,70 +1,70 @@
- '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}',
- 'meta' => array(
- 'postdate' => 1344803344,
- 'expire_date' => 1344803644,
- 'opendiscussion' => true,
- ),
- );
-
- private static $commentid = 'c47efb4741195f42';
-
- private static $comment = array(
- 'data' => '{"iv":"Pd4pOKWkmDTT9uPwVwd5Ag","salt":"ZIUhFTliVz4","ct":"6nOCU3peNDclDDpFtJEBKA"}',
- 'meta' => array(
- 'nickname' => '{"iv":"76MkAtOGC4oFogX/aSMxRA","salt":"ZIUhFTliVz4","ct":"b6Ae/U1xJdsX/+lATud4sQ"}',
- 'vizhash' => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABGUlEQVQokWOsl5/94983CNKQMjnxaOePf98MeKwPfNjkLZ3AgARab6b9+PeNEVnDj3/ff/z7ZiHnzsDA8Pv7H2TVPJw8EAYLAwb48OaVgIgYKycLsrYv378wMDB8//qdCVMDRA9EKSsnCwRBxNsepaLboMFlyMDAICAi9uHNK24GITQ/MDAwoNhgIGMLtwGrzegaLjw5jMz9+vUdnN17uwDCQDhJgk0O07yvX9+teDX1x79v6DYIsIjgcgMaYGFgYOBg4kJx2JejkAiBxAw+PzAwMNz4dp6wDXDw4MdNNOl0rWYsNkD89OLXI/xmo9sgzatJjAYmBgYGDiauD3/ePP18nVgb4MF89+M5ZX6js293wUMpnr8KTQMAxsCJnJ30apMAAAAASUVORK5CYII=',
- 'postdate' => 1344803528,
- ),
- );
-
- private $_model;
-
- private $_path;
-
- public function setUp()
- {
- /* Setup Routine */
- $this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'zerobin_data';
- $this->_model = zerobin_data::getInstance(array('dir' => $this->_path));
- }
-
- public function tearDown()
- {
- /* Tear Down Routine */
- helper::rmdir($this->_path);
- }
-
- public function testFileBasedDataStoreWorks()
- {
- // storing pastes
- $this->assertFalse($this->_model->exists(self::$pasteid), 'paste does not yet exist');
- $this->assertTrue($this->_model->create(self::$pasteid, self::$paste), 'store new paste');
- $this->assertTrue($this->_model->exists(self::$pasteid), 'paste exists after storing it');
- $this->assertFalse($this->_model->create(self::$pasteid, self::$paste), 'unable to store the same paste twice');
- $this->assertEquals(json_decode(json_encode(self::$paste)), $this->_model->read(self::$pasteid));
-
- // storing comments
- $this->assertFalse($this->_model->existsComment(self::$pasteid, self::$pasteid, self::$commentid), 'comment does not yet exist');
- $this->assertTrue($this->_model->createComment(self::$pasteid, self::$pasteid, self::$commentid, self::$comment) !== false, 'store comment');
- $this->assertTrue($this->_model->existsComment(self::$pasteid, self::$pasteid, self::$commentid), 'comment exists after storing it');
- $comment = json_decode(json_encode(self::$comment));
- $comment->meta->commentid = self::$commentid;
- $comment->meta->parentid = self::$pasteid;
- $this->assertEquals(
- array($comment->meta->postdate => $comment),
- $this->_model->readComments(self::$pasteid)
- );
-
- // deleting pastes
- $this->_model->delete(self::$pasteid);
- $this->assertFalse($this->_model->exists(self::$pasteid), 'paste successfully deleted');
- $this->assertFalse($this->_model->existsComment(self::$pasteid, self::$pasteid, self::$commentid), 'comment was deleted with paste');
- $this->assertFalse($this->_model->read(self::$pasteid), 'paste can no longer be found');
- }
-}
+ '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}',
+ 'meta' => array(
+ 'postdate' => 1344803344,
+ 'expire_date' => 1344803644,
+ 'opendiscussion' => true,
+ ),
+ );
+
+ private static $commentid = 'c47efb4741195f42';
+
+ private static $comment = array(
+ 'data' => '{"iv":"Pd4pOKWkmDTT9uPwVwd5Ag","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"6nOCU3peNDclDDpFtJEBKA"}',
+ 'meta' => array(
+ 'nickname' => '{"iv":"76MkAtOGC4oFogX/aSMxRA","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"b6Ae/U1xJdsX/+lATud4sQ"}',
+ 'vizhash' => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABGUlEQVQokWOsl5/94983CNKQMjnxaOePf98MeKwPfNjkLZ3AgARab6b9+PeNEVnDj3/ff/z7ZiHnzsDA8Pv7H2TVPJw8EAYLAwb48OaVgIgYKycLsrYv378wMDB8//qdCVMDRA9EKSsnCwRBxNsepaLboMFlyMDAICAi9uHNK24GITQ/MDAwoNhgIGMLtwGrzegaLjw5jMz9+vUdnN17uwDCQDhJgk0O07yvX9+teDX1x79v6DYIsIjgcgMaYGFgYOBg4kJx2JejkAiBxAw+PzAwMNz4dp6wDXDw4MdNNOl0rWYsNkD89OLXI/xmo9sgzatJjAYmBgYGDiauD3/ePP18nVgb4MF89+M5ZX6js293wUMpnr8KTQMAxsCJnJ30apMAAAAASUVORK5CYII=',
+ 'postdate' => 1344803528,
+ ),
+ );
+
+ private $_model;
+
+ private $_path;
+
+ public function setUp()
+ {
+ /* Setup Routine */
+ $this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'zerobin_data';
+ $this->_model = zerobin_data::getInstance(array('dir' => $this->_path));
+ }
+
+ public function tearDown()
+ {
+ /* Tear Down Routine */
+ helper::rmdir($this->_path);
+ }
+
+ public function testFileBasedDataStoreWorks()
+ {
+ // storing pastes
+ $this->assertFalse($this->_model->exists(self::$pasteid), 'paste does not yet exist');
+ $this->assertTrue($this->_model->create(self::$pasteid, self::$paste), 'store new paste');
+ $this->assertTrue($this->_model->exists(self::$pasteid), 'paste exists after storing it');
+ $this->assertFalse($this->_model->create(self::$pasteid, self::$paste), 'unable to store the same paste twice');
+ $this->assertEquals(json_decode(json_encode(self::$paste)), $this->_model->read(self::$pasteid));
+
+ // storing comments
+ $this->assertFalse($this->_model->existsComment(self::$pasteid, self::$pasteid, self::$commentid), 'comment does not yet exist');
+ $this->assertTrue($this->_model->createComment(self::$pasteid, self::$pasteid, self::$commentid, self::$comment) !== false, 'store comment');
+ $this->assertTrue($this->_model->existsComment(self::$pasteid, self::$pasteid, self::$commentid), 'comment exists after storing it');
+ $comment = json_decode(json_encode(self::$comment));
+ $comment->meta->commentid = self::$commentid;
+ $comment->meta->parentid = self::$pasteid;
+ $this->assertEquals(
+ array($comment->meta->postdate => $comment),
+ $this->_model->readComments(self::$pasteid)
+ );
+
+ // deleting pastes
+ $this->_model->delete(self::$pasteid);
+ $this->assertFalse($this->_model->exists(self::$pasteid), 'paste successfully deleted');
+ $this->assertFalse($this->_model->existsComment(self::$pasteid, self::$pasteid, self::$commentid), 'comment was deleted with paste');
+ $this->assertFalse($this->_model->read(self::$pasteid), 'paste can no longer be found');
+ }
+}
diff --git a/tst/zerobin/db.php b/tst/zerobin/db.php
index 132f290..1bb5eb0 100644
--- a/tst/zerobin/db.php
+++ b/tst/zerobin/db.php
@@ -4,7 +4,7 @@ class zerobin_dbTest extends PHPUnit_Framework_TestCase
private static $pasteid = '501f02e9eeb8bcec';
private static $paste = array(
- 'data' => '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}',
+ 'data' => '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}',
'meta' => array(
'postdate' => 1344803344,
'expire_date' => 1344803644,
@@ -15,9 +15,9 @@ class zerobin_dbTest extends PHPUnit_Framework_TestCase
private static $commentid = 'c47efb4741195f42';
private static $comment = array(
- 'data' => '{"iv":"Pd4pOKWkmDTT9uPwVwd5Ag","salt":"ZIUhFTliVz4","ct":"6nOCU3peNDclDDpFtJEBKA"}',
+ 'data' => '{"iv":"Pd4pOKWkmDTT9uPwVwd5Ag","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"6nOCU3peNDclDDpFtJEBKA"}',
'meta' => array(
- 'nickname' => '{"iv":"76MkAtOGC4oFogX/aSMxRA","salt":"ZIUhFTliVz4","ct":"b6Ae/U1xJdsX/+lATud4sQ"}',
+ 'nickname' => '{"iv":"76MkAtOGC4oFogX/aSMxRA","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"b6Ae/U1xJdsX/+lATud4sQ"}',
'vizhash' => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABGUlEQVQokWOsl5/94983CNKQMjnxaOePf98MeKwPfNjkLZ3AgARab6b9+PeNEVnDj3/ff/z7ZiHnzsDA8Pv7H2TVPJw8EAYLAwb48OaVgIgYKycLsrYv378wMDB8//qdCVMDRA9EKSsnCwRBxNsepaLboMFlyMDAICAi9uHNK24GITQ/MDAwoNhgIGMLtwGrzegaLjw5jMz9+vUdnN17uwDCQDhJgk0O07yvX9+teDX1x79v6DYIsIjgcgMaYGFgYOBg4kJx2JejkAiBxAw+PzAwMNz4dp6wDXDw4MdNNOl0rWYsNkD89OLXI/xmo9sgzatJjAYmBgYGDiauD3/ePP18nVgb4MF89+M5ZX6js293wUMpnr8KTQMAxsCJnJ30apMAAAAASUVORK5CYII=',
'postdate' => 1344803528,
),