public function testFileBasedDataStoreWorks() { $this->_model->delete(helper::getPasteId()); // storing pastes $paste = helper::getPaste(array('expire_date' => 1344803344)); $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'); $this->assertFalse($this->_model->create(helper::getPasteId(), $paste), 'unable to store the same paste twice'); $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->assertEquals(array($comment->meta->postdate => $comment), $this->_model->readComments(helper::getPasteId())); // deleting pastes $this->_model->delete(helper::getPasteId()); $this->assertFalse($this->_model->exists(helper::getPasteId()), 'paste successfully deleted'); $this->assertFalse($this->_model->existsComment(helper::getPasteId(), helper::getPasteId(), helper::getCommentId()), 'comment was deleted with paste'); $this->assertFalse($this->_model->read(helper::getPasteId()), 'paste can no longer be found'); }
public function testImplicitDefaults() { $pasteData = helper::getPaste(); $commentData = helper::getComment(); $this->_model->getPaste(helper::getPasteId())->delete(); $paste = $this->_model->getPaste(); $paste->setData($pasteData['data']); $paste->setBurnafterreading(); $paste->setOpendiscussion(); // not setting a formatter, should use default one $paste->store(); $paste = $this->_model->getPaste(helper::getPasteId())->get(); // ID was set based on data $this->assertEquals(true, property_exists($paste->meta, 'burnafterreading') && $paste->meta->burnafterreading, 'burn after reading takes precendence'); $this->assertEquals(false, property_exists($paste->meta, 'opendiscussion') && $paste->meta->opendiscussion, 'opendiscussion is disabled'); $this->assertEquals($this->_conf->getKey('defaultformatter'), $paste->meta->formatter, 'default formatter is set'); $this->_model->getPaste(helper::getPasteId())->delete(); $paste = $this->_model->getPaste(); $paste->setData($pasteData['data']); $paste->setBurnafterreading('0'); $paste->setOpendiscussion(); $paste->store(); $vz = new vizhash16x16(); $pngdata = 'data:image/png;base64,' . base64_encode($vz->generate($_SERVER['REMOTE_ADDR'])); $comment = $paste->getComment(helper::getPasteId()); $comment->setData($commentData['data']); $comment->setNickname($commentData['meta']['nickname']); $comment->store(); $comment = $paste->getComment(helper::getPasteId(), helper::getCommentId())->get(); $this->assertEquals($pngdata, $comment->meta->vizhash, 'nickname triggers vizhash to be set'); }
/** * @runInSeparateProcess */ public function testCreateDuplicateComment() { $this->reset(); $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; helper::confBackup(); helper::createIniFile(CONF, $options); $this->_model->create(helper::getPasteId(), helper::getPaste()); $this->_model->createComment(helper::getPasteId(), helper::getPasteId(), helper::getCommentId(), helper::getComment()); $this->assertTrue($this->_model->existsComment(helper::getPasteId(), helper::getPasteId(), helper::getCommentId()), 'comment exists before posting data'); $_POST = helper::getCommentPost(); $_POST['pasteid'] = helper::getPasteId(); $_POST['parentid'] = helper::getPasteId(); $_SERVER['HTTP_X_REQUESTED_WITH'] = 'JSONHttpRequest'; $_SERVER['REQUEST_METHOD'] = 'POST'; $_SERVER['REMOTE_ADDR'] = '::1'; ob_start(); new zerobin(); $content = ob_get_contents(); $response = json_decode($content, true); $this->assertEquals(1, $response['status'], 'outputs error status'); $this->assertTrue($this->_model->existsComment(helper::getPasteId(), helper::getPasteId(), helper::getCommentId()), 'paste exists after posting data'); }