Ivan - Backend - Create /user/get path [skip ci]
This commit is contained in:
parent
e22b3d999c
commit
da7aad3576
|
@ -16,8 +16,8 @@ class CommentController extends Controller {
|
|||
'validation' => DataValidator::length(20, 500),
|
||||
'error' => ERRORS::INVALID_CONTENT
|
||||
],
|
||||
'ticketId' => [
|
||||
'validation' => DataValidator::dataStoreId('ticket'),
|
||||
'ticketNumber' => [
|
||||
'validation' => DataValidator::validTicketNumber(),
|
||||
'error' => ERRORS::INVALID_TICKET
|
||||
]
|
||||
]
|
||||
|
@ -37,9 +37,9 @@ class CommentController extends Controller {
|
|||
}
|
||||
|
||||
private function requestData() {
|
||||
$ticketId = Controller::request('ticketId');
|
||||
$ticketNumber = Controller::request('ticketNumber');
|
||||
|
||||
$this->ticket = Ticket::getTicket($ticketId);
|
||||
$this->ticket = Ticket::getByTicketNumber($ticketNumber);
|
||||
$this->content = Controller::request('content');
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,10 @@ class TicketGetController extends Controller {
|
|||
|
||||
$ticket = Ticket::getByTicketNumber($ticketNumber);
|
||||
|
||||
if ($ticket->isNull() || $ticket->author->id != Controller::getLoggedUser()->id) {
|
||||
Response::respondError(ERRORS::INVALID_TICKET);
|
||||
} else {
|
||||
Response::respondSuccess($ticket->toArray());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@ include 'user/recover-password.php';
|
|||
include 'user/send-recover-password.php';
|
||||
include 'user/edit-password.php';
|
||||
include 'user/edit-email.php';
|
||||
include 'user/get.php';
|
||||
|
||||
$userControllers = new ControllerGroup();
|
||||
$userControllers->setGroupPath('/user');
|
||||
|
@ -17,5 +18,6 @@ $userControllers->addController(new SendRecoverPasswordController);
|
|||
$userControllers->addController(new RecoverPasswordController);
|
||||
$userControllers->addController(new EditPassword);
|
||||
$userControllers->addController(new EditEmail);
|
||||
$userControllers->addController(new GetUserController);
|
||||
|
||||
$userControllers->finalize();
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
use Respect\Validation\Validator as DataValidator;
|
||||
DataValidator::with('CustomValidations', true);
|
||||
|
||||
class GetUserController extends Controller {
|
||||
const PATH = '/get';
|
||||
|
||||
public function validations() {
|
||||
return [
|
||||
'permission' => 'user',
|
||||
'requestData' => []
|
||||
];
|
||||
}
|
||||
|
||||
public function handler() {
|
||||
$user = Controller::getLoggedUser();
|
||||
$parsedTicketList = [];
|
||||
$ticketList = $user->sharedTicketList;
|
||||
|
||||
foreach($ticketList as $ticket) {
|
||||
$parsedTicketList[] = $ticket->toArray();
|
||||
}
|
||||
|
||||
Response::respondSuccess([
|
||||
'name' => $user->name,
|
||||
'email' => $user->email,
|
||||
'tickets' => $parsedTicketList
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -41,6 +41,7 @@ spl_autoload_register(function ($class) {
|
|||
include_once 'libs/validations/dataStoreId.php';
|
||||
include_once 'libs/validations/userEmail.php';
|
||||
include_once 'libs/validations/captcha.php';
|
||||
include_once 'libs/validations/validTicketNumber.php';
|
||||
|
||||
// LOAD CONTROLLERS
|
||||
foreach (glob('controllers/*.php') as $controller) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
require_once 'models/DataStore.php';
|
||||
|
||||
class DataStoreList {
|
||||
class DataStoreList implements IteratorAggregate{
|
||||
private $list = [];
|
||||
|
||||
public static function getList($type, $beanList) {
|
||||
|
@ -14,6 +14,10 @@ class DataStoreList {
|
|||
return $dataStoreList;
|
||||
}
|
||||
|
||||
public function getIterator() {
|
||||
return new ArrayIterator($this->list);
|
||||
}
|
||||
|
||||
public function add(DataStore $dataStore) {
|
||||
$this->list[] = $dataStore;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
namespace CustomValidations;
|
||||
|
||||
use Respect\Validation\Rules\AbstractRule;
|
||||
|
||||
class ValidTicketNumber extends AbstractRule {
|
||||
|
||||
public function validate($ticketNumber) {
|
||||
$ticket = \Ticket::getByTicketNumber($ticketNumber);
|
||||
|
||||
return !$ticket->isNull();
|
||||
}
|
||||
}
|
|
@ -17,6 +17,7 @@ require './user/send-recover-password.rb'
|
|||
require './user/recover-password.rb'
|
||||
require './user/edit-password.rb'
|
||||
require './user/edit-email.rb'
|
||||
require './user/get.rb'
|
||||
require './ticket/create.rb'
|
||||
require './ticket/comment.rb'
|
||||
require './ticket/get.rb'
|
||||
|
|
|
@ -18,6 +18,23 @@ class Scripts
|
|||
:password => password
|
||||
})
|
||||
|
||||
if response['data'].any?
|
||||
$csrf_userid = response['data']['userId']
|
||||
$csrf_token = response['data']['token']
|
||||
end
|
||||
|
||||
response['data']
|
||||
end
|
||||
|
||||
def self.createTicket()
|
||||
result = request('/ticket/create', {
|
||||
title: 'Winter is coming',
|
||||
content: 'The north remembers',
|
||||
departmentId: 1,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
||||
result['data']
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
describe '/ticket/comment/' do
|
||||
Scripts.createUser('commenter@os4.com', 'commenter', 'Commenter')
|
||||
Scripts.login('commenter@os4.com', 'commenter')
|
||||
|
||||
result = Scripts.createTicket
|
||||
|
||||
@ticketNumber = result['ticketNumber']
|
||||
|
||||
it 'should fail if invalid token is passed' do
|
||||
result = request('/ticket/comment', {
|
||||
content: 'some comment content',
|
||||
ticketId: 1,
|
||||
ticketId: @ticketNumber,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: 'INVALID_TOKEN'
|
||||
})
|
||||
|
@ -14,7 +21,7 @@ describe '/ticket/comment/' do
|
|||
it 'should fail if content is too short' do
|
||||
result = request('/ticket/comment', {
|
||||
content: 'Test',
|
||||
ticketId: 1,
|
||||
ticketNumber: @ticketNumber,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
@ -29,7 +36,7 @@ describe '/ticket/comment/' do
|
|||
|
||||
result = request('/ticket/comment', {
|
||||
content: long_text,
|
||||
ticketId: 1,
|
||||
ticketNumber: @ticketNumber,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
@ -41,7 +48,7 @@ describe '/ticket/comment/' do
|
|||
it 'should fail if ticket does not exist' do
|
||||
result = request('/ticket/comment', {
|
||||
content: 'some comment content',
|
||||
ticketId: 30,
|
||||
ticketNumber: 30,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
@ -53,28 +60,28 @@ describe '/ticket/comment/' do
|
|||
it 'should add comment to ticket' do
|
||||
result = request('/ticket/comment', {
|
||||
content: 'some comment content',
|
||||
ticketId: 1,
|
||||
ticketNumber: @ticketNumber,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
||||
(result['status']).should.equal('success')
|
||||
|
||||
comment = $database.getRow('comment', '1', 'id')
|
||||
ticket = $database.getRow('ticket', @ticketNumber, 'ticket_number')
|
||||
comment = $database.getRow('comment', ticket['id'], 'ticket_id')
|
||||
(comment['content']).should.equal('some comment content')
|
||||
(comment['ticket_id']).should.equal('1')
|
||||
(comment['author_id']).should.equal($csrf_userid)
|
||||
end
|
||||
|
||||
it 'should fail if user is not the author nor owner' do
|
||||
Scripts.createUser('commenter@comment.com', 'commenter', 'Commenter')
|
||||
data = Scripts.login('commenter@comment.com', 'commenter')
|
||||
Scripts.createUser('no_commenter@comment.com', 'no_commenter', 'No Commenter')
|
||||
Scripts.login('no_commenter@comment.com', 'no_commenter')
|
||||
|
||||
result = request('/ticket/comment', {
|
||||
content: 'some comment content',
|
||||
ticketId: 1,
|
||||
csrf_userid: data['userId'],
|
||||
csrf_token: data['token']
|
||||
ticketNumber: @ticketNumber,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
||||
(result['status']).should.equal('fail')
|
||||
|
|
|
@ -1,13 +1,7 @@
|
|||
describe '/ticket/create' do
|
||||
request('/user/logout')
|
||||
Scripts.createUser('jonsnow@os4.com','jonpass','Jon Snow')
|
||||
result = request('/user/login', {
|
||||
email: 'jonsnow@os4.com',
|
||||
password: 'jonpass'
|
||||
})
|
||||
|
||||
$csrf_userid = result['data']['userId']
|
||||
$csrf_token = result['data']['token']
|
||||
Scripts.createUser('creator@os4.com','creator','Creator')
|
||||
Scripts.login('creator@os4.com','creator')
|
||||
|
||||
it 'should fail if invalid token is passed' do
|
||||
result = request('/ticket/create', {
|
||||
|
@ -110,7 +104,7 @@ describe '/ticket/create' do
|
|||
(ticket['author_id']).should.equal($csrf_userid)
|
||||
(ticket['ticket_number'].size).should.equal(6)
|
||||
|
||||
ticket_user_relation = $database.getRow('ticket_user','1','ticket_id')
|
||||
ticket_user_relation = $database.getRow('ticket_user', ticket['id'],'ticket_id')
|
||||
(ticket_user_relation['user_id']).should.equal($csrf_userid)
|
||||
end
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
describe '/ticket/get/' do
|
||||
request('/user/logout')
|
||||
Scripts.createUser('cersei@os4.com', 'cersei','Cersei Lannister')
|
||||
result = request('/user/login', {
|
||||
email: 'cersei@os4.com',
|
||||
password: 'cersei'
|
||||
})
|
||||
$csrf_userid = result['data']['userId']
|
||||
$csrf_token = result['data']['token']
|
||||
Scripts.createUser('not_ticket_getter@os4.com', 'not_ticket_getter','No Author')
|
||||
|
||||
before do
|
||||
result = Scripts.login('cersei@os4.com', 'cersei')
|
||||
$csrf_userid = result['userId']
|
||||
$csrf_token = result['token']
|
||||
result = request('/ticket/create', {
|
||||
title: 'Should we pay?',
|
||||
content: 'A Lannister always pays his debts.',
|
||||
|
@ -15,16 +15,37 @@ describe '/ticket/get/' do
|
|||
csrf_token: $csrf_token
|
||||
})
|
||||
@ticketNumber = result['data']['ticketNumber']
|
||||
end
|
||||
|
||||
#it 'should fail if ticketNumber is invalid' do
|
||||
it 'should fail if ticketNumber is invalid' do
|
||||
result = request('/ticket/get', {
|
||||
ticketNumber: (@ticketNumber.to_i + 1).to_s,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
||||
#end
|
||||
(result['status']).should.equal('fail')
|
||||
end
|
||||
|
||||
#it 'should fail if ticket does not belong to user' do
|
||||
it 'should fail if ticket does not belong to user' do
|
||||
request('/user/logout')
|
||||
result = Scripts.login('not_ticket_getter@os4.com', 'not_ticket_getter')
|
||||
|
||||
#end
|
||||
$csrf_userid = result['userId']
|
||||
$csrf_token = result['token']
|
||||
result = request('/ticket/get', {
|
||||
ticketNumber: @ticketNumber,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
||||
(result['status']).should.equal('fail')
|
||||
end
|
||||
|
||||
it 'should successfully return the ticket information' do
|
||||
result = Scripts.login('cersei@os4.com', 'cersei')
|
||||
$csrf_userid = result['userId']
|
||||
$csrf_token = result['token']
|
||||
result = request('/ticket/get', {
|
||||
ticketNumber: @ticketNumber,
|
||||
csrf_userid: $csrf_userid,
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
describe '/user/get' do
|
||||
request('/user/logout')
|
||||
Scripts.createUser('user_get@os4.com', 'user_get','User Get')
|
||||
|
||||
result = Scripts.login('user_get@os4.com', 'user_get')
|
||||
$csrf_userid = result['userId']
|
||||
$csrf_token = result['token']
|
||||
result = request('/ticket/create', {
|
||||
title: 'Should we pay?',
|
||||
content: 'A Lannister always pays his debts.',
|
||||
departmentId: 1,
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
@ticketNumber = result['data']['ticketNumber']
|
||||
|
||||
it 'should fail if not logged' do
|
||||
request('/user/logout')
|
||||
result = request('/user/get', {
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
||||
(result['status']).should.equal('fail')
|
||||
end
|
||||
|
||||
it 'should successfully return the ticket information' do
|
||||
result = Scripts.login('user_get@os4.com', 'user_get')
|
||||
$csrf_userid = result['userId']
|
||||
$csrf_token = result['token']
|
||||
result = request('/user/get', {
|
||||
csrf_userid: $csrf_userid,
|
||||
csrf_token: $csrf_token
|
||||
})
|
||||
|
||||
ticket = $database.getRow('ticket', @ticketNumber, 'ticket_number')
|
||||
|
||||
(result['status']).should.equal('success')
|
||||
(result['data']['name']).should.equal('User Get')
|
||||
(result['data']['email']).should.equal('user_get@os4.com')
|
||||
|
||||
ticketFromUser = result['data']['tickets'][0]
|
||||
(ticketFromUser['ticketNumber']).should.equal(ticket['ticket_number'])
|
||||
(ticketFromUser['title']).should.equal(ticket['title'])
|
||||
(ticketFromUser['content']).should.equal(ticket['content'])
|
||||
(ticketFromUser['department']['id']).should.equal('1')
|
||||
(ticketFromUser['department']['name']).should.equal($database.getRow('department', 1)['name'])
|
||||
(ticketFromUser['date']).should.equal(ticket['date'])
|
||||
(ticketFromUser['file']).should.equal(ticket['file'])
|
||||
(ticketFromUser['language']).should.equal(ticket['language'])
|
||||
(ticketFromUser['unread']).should.equal(false)
|
||||
(ticketFromUser['author']['name']).should.equal('User Get')
|
||||
(ticketFromUser['author']['email']).should.equal('user_get@os4.com')
|
||||
(ticketFromUser['owner']).should.equal([])
|
||||
(ticketFromUser['comments']).should.equal([])
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue