userGateway = $this->createMock(UserGateway::class); $this->userToTicketChecker = new UserToTicketChecker($this->userGateway); } function testItReturnsTrueWhenTheUserIsAnAdmin() { //-- Arrange $user = new UserContext(); $user->admin = true; $user->id = 99; $ticket = new Ticket(); //-- Act $result = $this->userToTicketChecker->isTicketAccessibleToUser($user, $ticket, $this->heskSettings); //-- Assert self::assertThat($result, self::isTrue()); } function testItReturnsTrueWhenTheUserHasAccessToTheCategory() { //-- Arrange $user = new UserContext(); $user->admin = false; $user->categories = array(1); $user->permissions = array(UserPrivilege::CAN_VIEW_TICKETS); $user->id = 99; $ticket = new Ticket(); $ticket->categoryId = 1; //-- Act $result = $this->userToTicketChecker->isTicketAccessibleToUser($user, $ticket, $this->heskSettings); //-- Assert self::assertThat($result, self::isTrue()); } function testItReturnsFalseWhenTheUserCannotViewTickets() { //-- Arrange $user = new UserContext(); $user->admin = false; $user->categories = array(1); $user->permissions = array(); $user->id = 99; $ticket = new Ticket(); $ticket->categoryId = 1; //-- Act $result = $this->userToTicketChecker->isTicketAccessibleToUser($user, $ticket, $this->heskSettings); //-- Assert self::assertThat($result, self::isFalse()); } function testItReturnsFalseWhenTheUserCannotViewAndEditTicketsWhenEditFlagIsTrue() { //-- Arrange $user = new UserContext(); $user->admin = false; $user->categories = array(1); $user->permissions = array(UserPrivilege::CAN_VIEW_TICKETS, 'something else'); $user->id = 99; $ticket = new Ticket(); $ticket->categoryId = 1; //-- Act $result = $this->userToTicketChecker->isTicketAccessibleToUser($user, $ticket, $this->heskSettings, array(UserPrivilege::CAN_EDIT_TICKETS)); //-- Assert self::assertThat($result, self::isFalse()); } }