test(attendance): guard component method surfaces
This commit is contained in:
+119
@@ -11,6 +11,7 @@ import com.lab.labtimesheet.feature.attendance.model.AttendancePolicy;
|
||||
import com.lab.labtimesheet.feature.attendance.model.AttendanceRecord;
|
||||
import com.lab.labtimesheet.feature.attendance.model.AttendanceRole;
|
||||
import com.lab.labtimesheet.feature.attendance.model.AttendanceViolations;
|
||||
import com.lab.labtimesheet.feature.attendance.model.dto.AttendanceCurrentState;
|
||||
import com.lab.labtimesheet.feature.attendance.model.dto.AttendanceHistoryItem;
|
||||
import com.lab.labtimesheet.feature.attendance.model.dto.GlobalCalendarEvent;
|
||||
import com.lab.labtimesheet.feature.attendance.model.entity.AttendancePolicyEntity;
|
||||
@@ -31,6 +32,7 @@ import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.math.BigDecimal;
|
||||
import java.security.Principal;
|
||||
import java.time.Clock;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
@@ -38,8 +40,11 @@ import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||
|
||||
class AttendanceLombokBoilerplateTest {
|
||||
|
||||
@@ -213,6 +218,120 @@ class AttendanceLombokBoilerplateTest {
|
||||
assertMethodSurface(LeaveRequestEntity.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void componentsExposeOnlyIntentionalPublicAndProtectedDeclaredMethods() {
|
||||
assertMethodSurface(
|
||||
AttendanceController.class,
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"ownHistory",
|
||||
String.class,
|
||||
Principal.class,
|
||||
LocalDate.class,
|
||||
LocalDate.class,
|
||||
Model.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"inspectHistory",
|
||||
String.class,
|
||||
Principal.class,
|
||||
long.class,
|
||||
LocalDate.class,
|
||||
LocalDate.class,
|
||||
Model.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"checkIn",
|
||||
String.class,
|
||||
Principal.class,
|
||||
RedirectAttributes.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"checkOut",
|
||||
String.class,
|
||||
Principal.class,
|
||||
RedirectAttributes.class));
|
||||
assertMethodSurface(
|
||||
CalendarController.class,
|
||||
method(Modifier.PUBLIC, "calendar", String.class, Principal.class, Model.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"create",
|
||||
String.class,
|
||||
Principal.class,
|
||||
LocalDate.class,
|
||||
String.class,
|
||||
boolean.class,
|
||||
RedirectAttributes.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"update",
|
||||
String.class,
|
||||
Principal.class,
|
||||
long.class,
|
||||
long.class,
|
||||
LocalDate.class,
|
||||
String.class,
|
||||
boolean.class,
|
||||
RedirectAttributes.class));
|
||||
assertMethodSurface(
|
||||
AttendanceApplicationService.class,
|
||||
method(Modifier.PUBLIC, "checkIn", AttendanceRecord.class, long.class),
|
||||
method(Modifier.PUBLIC, "checkOut", AttendanceRecord.class, long.class),
|
||||
method(Modifier.PUBLIC, "currentState", AttendanceCurrentState.class, long.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"history",
|
||||
List.class,
|
||||
AttendanceActor.class,
|
||||
long.class,
|
||||
LocalDate.class,
|
||||
LocalDate.class),
|
||||
method(Modifier.PUBLIC, "currentBusinessDate", LocalDate.class));
|
||||
assertMethodSurface(
|
||||
AttendanceCurrentUserService.class,
|
||||
method(Modifier.PUBLIC, "actor", AttendanceActor.class, Principal.class));
|
||||
assertMethodSurface(
|
||||
AttendanceService.class,
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"checkIn",
|
||||
AttendanceRecord.class,
|
||||
long.class,
|
||||
Instant.class,
|
||||
AttendancePolicy.class,
|
||||
AttendanceDayContext.class,
|
||||
Optional.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"checkOut",
|
||||
AttendanceRecord.class,
|
||||
Optional.class,
|
||||
Instant.class));
|
||||
assertMethodSurface(
|
||||
CalendarApplicationService.class,
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"createManual",
|
||||
GlobalCalendarEvent.class,
|
||||
AttendanceActor.class,
|
||||
LocalDate.class,
|
||||
String.class,
|
||||
boolean.class),
|
||||
method(
|
||||
Modifier.PUBLIC,
|
||||
"updateManual",
|
||||
GlobalCalendarEvent.class,
|
||||
AttendanceActor.class,
|
||||
long.class,
|
||||
long.class,
|
||||
LocalDate.class,
|
||||
String.class,
|
||||
boolean.class),
|
||||
method(Modifier.PUBLIC, "list", List.class, LocalDate.class, LocalDate.class),
|
||||
method(Modifier.PUBLIC, "isGlobalDayOff", boolean.class, LocalDate.class));
|
||||
}
|
||||
|
||||
private static void assertConstructors(
|
||||
Class<?> type, ConstructorContract... expectedConstructors) {
|
||||
List<ConstructorContract> actual = Arrays.stream(type.getDeclaredConstructors())
|
||||
|
||||
Reference in New Issue
Block a user