make DatabaseTest work pass again, support reading & writing version 1 & 2 pastes & comments

This commit is contained in:
El RIDO
2019-05-05 14:36:47 +02:00
parent bbdcb3fb0f
commit 6e15903f1e
3 changed files with 150 additions and 94 deletions

View File

@@ -64,11 +64,12 @@ class Helper
'zlib',
),
'plaintext',
0,
1,
0
),
'meta' => array(
'expire' => '5min',
'expire' => '5min',
'created' => 1344803344,
),
'v' => 2,
'ct' => 'ME5JF/YBEijp2uYMzLZozbKtWc5wfy6R59NBb7SmRig=',
@@ -119,7 +120,7 @@ class Helper
* @param array $meta
* @return array
*/
public static function getPaste($version = 2, $meta = array())
public static function getPaste(int $version = 2, array $meta = array())
{
$example = self::getPasteWithAttachment($version, $meta);
// v1 has the attachment stored in a separate property
@@ -136,9 +137,9 @@ class Helper
* @param array $meta
* @return array
*/
public static function getPasteWithAttachment($version = 2, $meta = array())
public static function getPasteWithAttachment(int $version = 2, array $meta = array())
{
$example = $version === 1 ? self::$pasteV1 : self::$pasteV2;
$example = $version === 1 ? self::$pasteV1 : self::$pasteV2;
$example['meta']['salt'] = ServerSalt::generate();
$example['meta'] = array_merge($example['meta'], $meta);
return $example;
@@ -151,7 +152,7 @@ class Helper
* @param array $meta
* @return array
*/
public static function getPasteAsJson($version = 2, $meta = array())
public static function getPasteAsJson(int $version = 2, array $meta = array())
{
$example = self::getPaste($version);
// the JSON shouldn't contain the salt
@@ -183,9 +184,9 @@ class Helper
* @param array $meta
* @return array
*/
public static function getComment($version = 2, $meta = array())
public static function getComment(int $version = 2, array $meta = array())
{
$example = $version === 1 ? self::$commentV1 : self::getPaste($version);
$example = $version === 1 ? self::$commentV1 : self::$pasteV2;
if ($version === 2) {
$example['pasteid'] = $example['parentid'] = self::getPasteId();
$example['meta']['created'] = self::$commentV1['meta']['postdate'];
@@ -202,7 +203,7 @@ class Helper
* @param int $version
* @return array
*/
public static function getCommentPost($version = 2)
public static function getCommentPost(int $version = 2)
{
$example = self::getComment($version);
if ($version === 1) {
@@ -220,7 +221,7 @@ class Helper
* @param string $path
* @throws Exception
*/
public static function rmDir($path)
public static function rmDir(string $path)
{
if (is_dir($path)) {
$path .= DIRECTORY_SEPARATOR;
@@ -279,7 +280,7 @@ class Helper
* @param string $pathToFile
* @param array $values
*/
public static function createIniFile($pathToFile, $values)
public static function createIniFile(string $pathToFile, array $values)
{
if (count($values)) {
@unlink($pathToFile);
@@ -322,7 +323,7 @@ class Helper
* @param bool $return
* @return void|string
*/
public static function varExportMin($var, $return = false)
public static function varExportMin($var, bool $return = false)
{
if (is_array($var)) {
$toImplode = array();

View File

@@ -36,7 +36,7 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
$this->_model->delete(Helper::getPasteId());
// storing pastes
$paste = Helper::getPaste(array('expire_date' => 1344803344));
$paste = Helper::getPaste();
$this->assertFalse($this->_model->exists(Helper::getPasteId()), 'paste does not yet exist');
$this->assertTrue($this->_model->create(Helper::getPasteId(), $paste), 'store new paste');
$this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after storing it');
@@ -44,14 +44,23 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
$this->assertEquals(json_decode(json_encode($paste)), $this->_model->read(Helper::getPasteId()));
// storing comments
$this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment does not yet exist');
$this->assertTrue($this->_model->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId(), Helper::getComment()) !== false, 'store comment');
$this->assertTrue($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'comment exists after storing it');
$comment = json_decode(json_encode(Helper::getComment()));
$comment->id = Helper::getCommentId();
$comment->parentid = Helper::getPasteId();
$this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'v1 comment does not yet exist');
$this->assertTrue($this->_model->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId(), Helper::getComment(1)) !== false, 'store v1 comment');
$this->assertTrue($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getCommentId()), 'v1 comment exists after storing it');
$this->assertFalse($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getPasteId()), 'v2 comment does not yet exist');
$this->assertTrue($this->_model->createComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getPasteId(), Helper::getComment(2)) !== false, 'store v2 comment');
$this->assertTrue($this->_model->existsComment(Helper::getPasteId(), Helper::getPasteId(), Helper::getPasteId()), 'v2 comment exists after storing it');
$comment1 = json_decode(json_encode(Helper::getComment(1)));
$comment1->id = Helper::getCommentId();
$comment1->parentid = Helper::getPasteId();
$comment2 = json_decode(json_encode(Helper::getComment(2)));
$comment2->id = Helper::getPasteId();
$comment2->parentid = Helper::getPasteId();
$this->assertEquals(
array($comment->meta->postdate => $comment),
array(
$comment1->meta->postdate => $comment1,
$comment2->meta->created . '.1' => $comment2,
),
$this->_model->readComments(Helper::getPasteId())
);
@@ -64,8 +73,9 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
public function testDatabaseBasedAttachmentStoreWorks()
{
// this assumes a version 1 formatted paste
$this->_model->delete(Helper::getPasteId());
$original = $paste = Helper::getPasteWithAttachment(array('expire_date' => 1344803344));
$original = $paste = Helper::getPasteWithAttachment(1, array('expire_date' => 1344803344));
$paste['meta']['burnafterreading'] = $original['meta']['burnafterreading'] = true;
$paste['meta']['attachment'] = $paste['attachment'];
$paste['meta']['attachmentname'] = $paste['attachmentname'];
@@ -83,12 +93,12 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
public function testPurge()
{
$this->_model->delete(Helper::getPasteId());
$expired = Helper::getPaste(array('expire_date' => 1344803344));
$paste = Helper::getPaste(array('expire_date' => time() + 3600));
$expired = Helper::getPaste(2, array('expire_date' => 1344803344));
$paste = Helper::getPaste(2, array('expire_date' => time() + 3600));
$keys = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'x', 'y', 'z');
$ids = array();
foreach ($keys as $key) {
$ids[$key] = substr(md5($key), 0, 16);
$ids[$key] = hash('fnv1a64', $key);
$this->_model->delete($ids[$key]);
$this->assertFalse($this->_model->exists($ids[$key]), "paste $key does not yet exist");
if (in_array($key, array('y', 'z'))) {
@@ -243,11 +253,11 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
$this->_options['tbl'] = 'bar_';
$model = Database::getInstance($this->_options);
$original = $paste = Helper::getPasteWithAttachment(array('expire_date' => 1344803344));
$paste['meta']['attachment'] = $paste['attachment'];
$paste['meta']['attachmentname'] = $paste['attachmentname'];
$original = $paste = Helper::getPasteWithAttachment(1, array('expire_date' => 1344803344));
$meta = $paste['meta'];
$meta['attachment'] = $paste['attachment'];
$meta['attachmentname'] = $paste['attachmentname'];
unset($paste['attachment'], $paste['attachmentname']);
$meta = $paste['meta'];
$db = new PDO(
$this->_options['dsn'],
@@ -261,7 +271,7 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
Helper::getPasteId(),
$paste['data'],
$paste['meta']['postdate'],
1344803344,
$paste['meta']['expire_date'],
0,
0,
json_encode($meta),