updated test cases and delete logic to properly implement documented API, thanks @r4sas #188

This commit is contained in:
El RIDO 2017-02-22 21:42:14 +01:00
parent dd721c651b
commit db307c3a77
No known key found for this signature in database
GPG Key ID: 0F5C940A6BD81F92
3 changed files with 18 additions and 15 deletions

View File

@ -334,19 +334,16 @@ class PrivateBin
// accessing this property ensures that the paste would be // accessing this property ensures that the paste would be
// deleted if it has already expired // deleted if it has already expired
$burnafterreading = $paste->isBurnafterreading(); $burnafterreading = $paste->isBurnafterreading();
if ($deletetoken == 'burnafterreading') { if (
if ($burnafterreading) { ($burnafterreading && $deletetoken == 'burnafterreading') ||
$paste->delete(); Filter::slowEquals($deletetoken, $paste->getDeleteToken())
$this->_return_message(0, $dataid); ) {
} else { // Paste exists and deletion token is valid: Delete the paste.
$this->_return_message(1, 'Paste is not of burn-after-reading type.'); $paste->delete();
} $this->_status = 'Paste was properly deleted.';
} else { } else {
// Make sure the token is valid. if (!$burnafterreading && $deletetoken == 'burnafterreading') {
if (Filter::slowEquals($deletetoken, $paste->getDeleteToken())) { $this->_error = 'Paste is not of burn-after-reading type.';
// Paste exists and deletion token is valid: Delete the paste.
$paste->delete();
$this->_status = 'Paste was properly deleted.';
} else { } else {
$this->_error = 'Wrong deletion token. Paste was not deleted.'; $this->_error = 'Wrong deletion token. Paste was not deleted.';
} }
@ -357,6 +354,13 @@ class PrivateBin
} catch (Exception $e) { } catch (Exception $e) {
$this->_error = $e->getMessage(); $this->_error = $e->getMessage();
} }
if ($this->_request->isJsonApiCall()) {
if (strlen($this->_error)) {
$this->_return_message(1, $this->_error);
} else {
$this->_return_message(0, $dataid);
}
}
} }
/** /**

View File

@ -147,10 +147,9 @@ class JsonApiTest extends PHPUnit_Framework_TestCase
$this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists before deleting data'); $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists before deleting data');
$paste = $this->_model->read(Helper::getPasteId()); $paste = $this->_model->read(Helper::getPasteId());
$_POST = array( $_POST = array(
'action' => 'delete', 'pasteid' => Helper::getPasteId(),
'deletetoken' => hash_hmac('sha256', Helper::getPasteId(), $paste->meta->salt), 'deletetoken' => hash_hmac('sha256', Helper::getPasteId(), $paste->meta->salt),
); );
$_SERVER['QUERY_STRING'] = Helper::getPasteId();
$_SERVER['HTTP_X_REQUESTED_WITH'] = 'JSONHttpRequest'; $_SERVER['HTTP_X_REQUESTED_WITH'] = 'JSONHttpRequest';
$_SERVER['REQUEST_METHOD'] = 'POST'; $_SERVER['REQUEST_METHOD'] = 'POST';
ob_start(); ob_start();

View File

@ -1047,7 +1047,7 @@ class PrivateBinTest extends PHPUnit_Framework_TestCase
ob_end_clean(); ob_end_clean();
$response = json_decode($content, true); $response = json_decode($content, true);
$this->assertEquals(1, $response['status'], 'outputs status'); $this->assertEquals(1, $response['status'], 'outputs status');
$this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste successfully deleted'); $this->assertTrue($this->_model->exists(Helper::getPasteId()), 'paste exists after failing to delete data');
} }
/** /**