Make the endpoint only for ticket message attachments, not replies

remotes/upstream/api-rewrite
Mike Koch 7 years ago
parent 0556d07a56
commit 5112a6a13b

@ -47,7 +47,7 @@ class AttachmentHandler {
$cleanedFileName, $fileParts['extension']);
$ticketAttachment->displayName = $cleanedFileName;
$ticketAttachment->ticketTrackingId = $ticket->trackingId;
$ticketAttachment->type = $createAttachmentModel->type;
$ticketAttachment->type = 0;
$ticketAttachment->downloadCount = 0;
$ticketAttachment->fileSize =
@ -88,10 +88,6 @@ class AttachmentHandler {
$errorKeys[] = 'TICKET_ID_MISSING';
}
if (!in_array($createAttachmentModel->type, array(AttachmentType::MESSAGE, AttachmentType::REPLY))) {
$errorKeys[] = 'INVALID_ATTACHMENT_TYPE';
}
$fileParts = pathinfo($createAttachmentModel->displayName);
if (!isset($fileParts['extension']) || !in_array(".{$fileParts['extension']}", $heskSettings['attachments']['allowed_types'])) {
$errorKeys[] = 'EXTENSION_NOT_PERMITTED';

@ -6,7 +6,4 @@ namespace BusinessLogic\Attachments;
class CreateAttachmentForTicketModel extends CreateAttachmentModel {
/* @var $ticketId int */
public $ticketId;
/* @var $type int [use <code>AttachmentType</code] */
public $type;
}

@ -10,7 +10,7 @@ use BusinessLogic\Helpers;
use Controllers\JsonRetriever;
class StaffTicketAttachmentsController {
function post() {
function post($ticketId) {
global $hesk_settings, $applicationContext;
if (!$hesk_settings['attachments']['use']) {
@ -20,19 +20,18 @@ class StaffTicketAttachmentsController {
/* @var $attachmentHandler AttachmentHandler */
$attachmentHandler = $applicationContext->get[AttachmentHandler::class];
$createAttachmentForTicketModel = $this->createModel(JsonRetriever::getJsonData());
$createAttachmentForTicketModel = $this->createModel(JsonRetriever::getJsonData(), $ticketId);
$createdAttachment = $attachmentHandler->createAttachmentForTicket($createAttachmentForTicketModel, $hesk_settings);
return output($createdAttachment, 201);
}
private function createModel($json) {
private function createModel($json, $ticketId) {
$model = new CreateAttachmentForTicketModel();
$model->attachmentContents = Helpers::safeArrayGet($json, 'data');
$model->displayName = Helpers::safeArrayGet($json, 'displayName');
$model->ticketId = Helpers::safeArrayGet($json, 'ticketId');
$model->type = Helpers::safeArrayGet($json, 'type');
$model->ticketId = $ticketId;
return $model;
}

@ -135,18 +135,6 @@ class AttachmentHandlerTest extends TestCase {
$this->attachmentHandler->createAttachmentForTicket($this->createAttachmentForTicketModel, $this->heskSettings);
}
function testThatValidateThrowsAnExceptionWhenTheAttachmentTypeIsNeitherMessageNorReply() {
//-- Arrange
$this->createAttachmentForTicketModel->type = 5;
//-- Assert
$this->expectException(ValidationException::class);
$this->expectExceptionMessageRegExp('/INVALID_ATTACHMENT_TYPE/');
//-- Act
$this->attachmentHandler->createAttachmentForTicket($this->createAttachmentForTicketModel, $this->heskSettings);
}
function testThatValidateThrowsAnExceptionWhenTheFileExtensionIsNotPermitted() {
//-- Arrange
$this->heskSettings['attachments']['allowed_types'] = array('.gif');
@ -183,7 +171,7 @@ class AttachmentHandlerTest extends TestCase {
$ticketAttachment = new TicketAttachment();
$ticketAttachment->displayName = $this->createAttachmentForTicketModel->displayName;
$ticketAttachment->ticketTrackingId = $ticket->trackingId;
$ticketAttachment->type = $this->createAttachmentForTicketModel->type;
$ticketAttachment->type = 0;
$ticketAttachment->downloadCount = 0;
$ticketAttachment->id = 50;
@ -196,7 +184,7 @@ class AttachmentHandlerTest extends TestCase {
//-- Assert
self::assertThat($actual->id, self::equalTo(50));
self::assertThat($actual->downloadCount, self::equalTo(0));
self::assertThat($actual->type, self::equalTo($this->createAttachmentForTicketModel->type));
self::assertThat($actual->type, self::equalTo(AttachmentType::MESSAGE));
self::assertThat($actual->ticketTrackingId, self::equalTo($ticket->trackingId));
self::assertThat($actual->displayName, self::equalTo($this->createAttachmentForTicketModel->displayName));
}
@ -211,7 +199,7 @@ class AttachmentHandlerTest extends TestCase {
$ticketAttachment = new TicketAttachment();
$ticketAttachment->displayName = $this->createAttachmentForTicketModel->displayName;
$ticketAttachment->ticketTrackingId = $ticket->trackingId;
$ticketAttachment->type = $this->createAttachmentForTicketModel->type;
$ticketAttachment->type = AttachmentType::MESSAGE;
$ticketAttachment->downloadCount = 0;
$ticketAttachment->id = 50;

@ -154,7 +154,7 @@ Link::all(array(
'/v1/tickets' => \Controllers\Tickets\TicketController::class,
// Attachments
'/v1/staff/attachments' => \Controllers\Attachments\StaffTicketAttachmentsController::class,
'/v1/staff/tickets/{i}/attachments' => \Controllers\Attachments\StaffTicketAttachmentsController::class,
// Any URL that doesn't match goes to the 404 handler
'404' => 'handle404'

Loading…
Cancel
Save