Browse Source

reviewed unit tests, fixing line endings, added more tests

El RIDO 11 năm trước cách đây
mục cha
commit
ad70051323
10 tập tin đã thay đổi với 328 bổ sung325 xóa
  1. 1 1
      lib/persistence.php
  2. 103 103
      tst/RainTPL.php
  3. 8 8
      tst/auto.php
  4. 47 47
      tst/filter.php
  5. 1 1
      tst/phpunit.xml
  6. 21 21
      tst/sjcl.php
  7. 33 30
      tst/trafficlimiter.php
  8. 41 41
      tst/vizhash16x16.php
  9. 70 70
      tst/zerobin/data.php
  10. 3 3
      tst/zerobin/db.php

+ 1 - 1
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;
         }

+ 103 - 103
tst/RainTPL.php

@@ -1,103 +1,103 @@
-<?php
-class RainTPLTest extends PHPUnit_Framework_TestCase
-{
-    private static $data = '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}';
-
-    private static $error = 'foo bar';
-
-    private static $status = '!*#@?$+';
-
-    private static $expire = array(
-        '5min' => '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!');
-    }
-}
+<?php
+class RainTPLTest extends PHPUnit_Framework_TestCase
+{
+    private static $data = '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}';
+
+    private static $error = 'foo bar';
+
+    private static $status = '!*#@?$+';
+
+    private static $expire = array(
+        '5min' => '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!');
+    }
+}

+ 8 - 8
tst/auto.php

@@ -1,8 +1,8 @@
-<?php
-class autoTest extends PHPUnit_Framework_TestCase
-{
-    public function testAutoloaderReturnsFalseWhenCallingNonExistingClass()
-    {
-        $this->assertFalse(auto::loader('foo2501bar42'), 'calling non existent class');
-    }
-}
+<?php
+class autoTest extends PHPUnit_Framework_TestCase
+{
+    public function testAutoloaderReturnsFalseWhenCallingNonExistingClass()
+    {
+        $this->assertFalse(auto::loader('foo2501bar42'), 'calling non existent class');
+    }
+}

+ 47 - 47
tst/filter.php

@@ -1,47 +1,47 @@
-<?php
-class filterTest extends PHPUnit_Framework_TestCase
-{
-    public function testFilterStripsSlashesDeeply()
-    {
-        $this->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));
-    }
-}
+<?php
+class filterTest extends PHPUnit_Framework_TestCase
+{
+    public function testFilterStripsSlashesDeeply()
+    {
+        $this->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));
+    }
+}

+ 1 - 1
tst/phpunit.xml

@@ -14,4 +14,4 @@
 		<log type="coverage-html" target="log/coverage-report" charset="UTF-8" yui="true" highlight="true" lowUpperBound="50" highLowerBound="80" />
 		<log type="testdox-html" target="log/testdox.html" />
 	</logging>
-</phpunit>
+</phpunit>

+ 21 - 21
tst/sjcl.php

@@ -1,21 +1,21 @@
-<?php
-class sjclTest extends PHPUnit_Framework_TestCase
-{
-    public function testSjclValidatorValidatesCorrectly()
-    {
-        $this->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
-    }
-}
+<?php
+class sjclTest extends PHPUnit_Framework_TestCase
+{
+    public function testSjclValidatorValidatesCorrectly()
+    {
+        $this->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
+    }
+}

+ 33 - 30
tst/trafficlimiter.php

@@ -1,30 +1,33 @@
-<?php
-class trafficlimiterTest extends PHPUnit_Framework_TestCase
-{
-    private $_path;
-
-    public function setUp()
-    {
-        /* Setup Routine */
-        $this->_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');
-    }
-}
+<?php
+class trafficlimiterTest extends PHPUnit_Framework_TestCase
+{
+    private $_path;
+
+    public function setUp()
+    {
+        /* Setup Routine */
+        $this->_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');
+    }
+}

+ 41 - 41
tst/vizhash16x16.php

@@ -1,41 +1,41 @@
-<?php
-class vizhash16x16Test extends PHPUnit_Framework_TestCase
-{
-    private $_dataDirCreated;
-
-    private $_file;
-
-    private $_path;
-
-    public function setUp()
-    {
-        /* Setup Routine */
-        $this->_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'));
-    }
-}
+<?php
+class vizhash16x16Test extends PHPUnit_Framework_TestCase
+{
+    private $_dataDirCreated;
+
+    private $_file;
+
+    private $_path;
+
+    public function setUp()
+    {
+        /* Setup Routine */
+        $this->_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'));
+    }
+}

+ 70 - 70
tst/zerobin/data.php

@@ -1,70 +1,70 @@
-<?php
-class zerobin_dataTest extends PHPUnit_Framework_TestCase
-{
-    private static $pasteid = '501f02e9eeb8bcec';
-
-    private static $paste = array(
-        'data' => '{"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');
-    }
-}
+<?php
+class zerobin_dataTest extends PHPUnit_Framework_TestCase
+{
+    private static $pasteid = '501f02e9eeb8bcec';
+
+    private static $paste = array(
+        '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,
+            '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');
+    }
+}

+ 3 - 3
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,
         ),