Skip to content

Commit 4dd4c25

Browse files
committed
feat: add and impl ReservationServiceImplSecurityTest
1 parent e1c059d commit 4dd4c25

1 file changed

Lines changed: 130 additions & 0 deletions

File tree

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package kattsyn.dev.rentplace.services;
2+
3+
import kattsyn.dev.rentplace.services.impl.ReservationServiceImpl;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.ExtendWith;
6+
import org.mockito.InjectMocks;
7+
import org.mockito.Mock;
8+
import org.mockito.junit.jupiter.MockitoExtension;
9+
import kattsyn.dev.rentplace.dtos.ReservationCreateEditDTO;
10+
import kattsyn.dev.rentplace.entities.Reservation;
11+
import kattsyn.dev.rentplace.entities.User;
12+
import kattsyn.dev.rentplace.enums.Role;
13+
import kattsyn.dev.rentplace.exceptions.ForbiddenException;
14+
import kattsyn.dev.rentplace.repositories.ReservationRepository;
15+
16+
import java.util.Optional;
17+
18+
import static org.junit.jupiter.api.Assertions.*;
19+
import static org.mockito.Mockito.*;
20+
21+
@ExtendWith(MockitoExtension.class)
22+
class ReservationServiceImplSecurityTest {
23+
24+
@Mock
25+
private UserService userService;
26+
27+
@Mock
28+
private ReservationRepository reservationRepository;
29+
30+
@InjectMocks
31+
private ReservationServiceImpl reservationService;
32+
33+
34+
@Test
35+
void ownsReservationOrAdmin_UserIsAdmin_ReturnsTrue() {
36+
User adminUser = new User();
37+
adminUser.setRole(Role.ROLE_ADMIN);
38+
39+
Reservation reservation = new Reservation();
40+
reservation.setReservationId(1L);
41+
42+
when(userService.getUserByEmail("admin@test.com")).thenReturn(adminUser);
43+
when(reservationRepository.findById(1L)).thenReturn(Optional.of(reservation));
44+
45+
assertTrue(reservationService.ownsReservationOrAdmin(1L, "admin@test.com"));
46+
}
47+
48+
@Test
49+
void ownsReservationOrAdmin_UserIsOwner_ReturnsTrue() {
50+
User ownerUser = new User();
51+
ownerUser.setUserId(100L);
52+
ownerUser.setRole(Role.ROLE_USER);
53+
54+
Reservation reservation = new Reservation();
55+
reservation.setReservationId(1L);
56+
reservation.setRenter(ownerUser);
57+
58+
when(userService.getUserByEmail("owner@test.com")).thenReturn(ownerUser);
59+
when(reservationRepository.findById(1L)).thenReturn(Optional.of(reservation));
60+
61+
assertTrue(reservationService.ownsReservationOrAdmin(1L, "owner@test.com"));
62+
}
63+
64+
@Test
65+
void ownsReservationOrAdmin_UserNotAdminNorOwner_ThrowsForbiddenException() {
66+
User randomUser = new User();
67+
randomUser.setUserId(999L);
68+
randomUser.setRole(Role.ROLE_USER);
69+
70+
Reservation reservation = new Reservation();
71+
reservation.setReservationId(1L);
72+
reservation.setRenter(new User());
73+
74+
when(userService.getUserByEmail("random@test.com")).thenReturn(randomUser);
75+
when(reservationRepository.findById(1L)).thenReturn(Optional.of(reservation));
76+
77+
ForbiddenException exception = assertThrows(
78+
ForbiddenException.class,
79+
() -> reservationService.ownsReservationOrAdmin(1L, "random@test.com")
80+
);
81+
assertTrue(exception.getMessage().contains("FORBIDDEN. You are not allowed"));
82+
}
83+
84+
85+
@Test
86+
void allowedToCreateReservationOrAdmin_UserIsAdmin_ReturnsTrue() {
87+
User adminUser = new User();
88+
adminUser.setRole(Role.ROLE_ADMIN);
89+
90+
ReservationCreateEditDTO dto = new ReservationCreateEditDTO();
91+
dto.setRenterId(123L);
92+
93+
when(userService.getUserByEmail("admin@test.com")).thenReturn(adminUser);
94+
95+
assertTrue(reservationService.allowedToCreateReservationOrAdmin(dto, "admin@test.com"));
96+
}
97+
98+
@Test
99+
void allowedToCreateReservationOrAdmin_UserIsRenter_ReturnsTrue() {
100+
User renterUser = new User();
101+
renterUser.setUserId(123L);
102+
renterUser.setRole(Role.ROLE_USER);
103+
104+
ReservationCreateEditDTO dto = new ReservationCreateEditDTO();
105+
dto.setRenterId(123L);
106+
107+
when(userService.getUserByEmail("renter@test.com")).thenReturn(renterUser);
108+
109+
assertTrue(reservationService.allowedToCreateReservationOrAdmin(dto, "renter@test.com"));
110+
}
111+
112+
@Test
113+
void allowedToCreateReservationOrAdmin_UserNotAllowed_ThrowsForbiddenException() {
114+
User user = new User();
115+
user.setUserId(456L);
116+
user.setRole(Role.ROLE_USER);
117+
118+
ReservationCreateEditDTO dto = new ReservationCreateEditDTO();
119+
dto.setRenterId(123L); // Не совпадает с ID пользователя
120+
121+
when(userService.getUserByEmail("user@test.com")).thenReturn(user);
122+
123+
124+
ForbiddenException exception = assertThrows(
125+
ForbiddenException.class,
126+
() -> reservationService.allowedToCreateReservationOrAdmin(dto, "user@test.com")
127+
);
128+
assertTrue(exception.getMessage().contains("FORBIDDEN. You are not allowed"));
129+
}
130+
}

0 commit comments

Comments
 (0)