Restrict page sections API to admins [issue 1055]#1067
Restrict page sections API to admins [issue 1055]#1067Levasey wants to merge 5 commits intohexlet-volunteers:mainfrom
Conversation
Made-with: Cursor
| .cookie(new Cookie("access_token", candidateToken)) | ||
| .header("X-Inertia", "true") | ||
| .contentType(MediaType.APPLICATION_JSON) | ||
| .content(om.writeValueAsString(dto))) |
| @Test | ||
| public void testPostUnauthorizedReturns401() throws Exception { | ||
|
|
||
| var dto = new PageSectionCreateDTO(); |
There was a problem hiding this comment.
создание dto дублируется в двух тестах, можно вынести в отдельный метод. И заменить поля на более осмысленные, например dto.setPageKey("somePageKey") - так будет понятно, что в данном контексте неважно, что в этих полях, и при этом глаз не будет цепляться за "x", "y" и прочее.
| public void setUp() { | ||
|
|
||
| userRepository.deleteAll(); | ||
| var admin = User.builder() |
There was a problem hiding this comment.
лучше готовить тестовые данные внутри теста и только те, которые действительно нужны для выполнения этого теста
Made-with: Cursor
| private PageSection section2; | ||
|
|
||
| @BeforeEach | ||
| public void setUp() { |
There was a problem hiding this comment.
Вижу, что часть логики про подготовку тестовых данных ты вынес в тесты, но паттерн Arrange-Act-Assert все еще нарушен. Исправь, плз. Также каждый тест предлагаю разбить на секции
//given
//when
//then
Made-with: Cursor
| .andExpect(status().isOk()) | ||
| .andReturn() | ||
| .getResponse(); | ||
| // given |
There was a problem hiding this comment.
Нужно, чтобы каждый тест был изолированным, для этого делают Arrange-часть каждого теста явной, а не спрятанной в общем setUp(). В данном случае метод setUp() нужно удалить и перенести создание тестовых данныхв каждый тест, соблюдая условие, что тест готовит тоько те тестовые данные, которые ему действиетльно нужны.
Made-with: Cursor
…issue 1055] Made-with: Cursor
Summary
Restricts /api/pages/sections to users with the ADMIN role so unauthenticated and non-admin clients cannot call these endpoints.
Changes