diff --git a/src/test/java/com/DesktopApplicationClientJava/controllers/LoginFormControllerTest.java b/src/test/java/com/DesktopApplicationClientJava/controllers/LoginFormControllerTest.java index ede4b1f..7d2244c 100644 --- a/src/test/java/com/DesktopApplicationClientJava/controllers/LoginFormControllerTest.java +++ b/src/test/java/com/DesktopApplicationClientJava/controllers/LoginFormControllerTest.java @@ -17,6 +17,8 @@ import com.DesktopApplicationClientJava.services.ServiceRegistry; import com.DesktopApplicationClientJava.session.Session; import com.DesktopApplicationClientJava.utils.ControllerWiring; +import io.qameta.allure.Epic; +import io.qameta.allure.Feature; import java.util.UUID; import javafx.application.Platform; import javafx.event.ActionEvent; @@ -25,8 +27,14 @@ import javafx.scene.control.TextField; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +@Epic("Аутентификация") +@Feature("№1 Вход") +@Tag("role:guest") +@DisplayName("Форма входа") class LoginFormControllerTest { private static final String VALID_EMAIL = "user@example.com"; @@ -63,6 +71,7 @@ void setUp() { } @Test + @DisplayName("Пустые поля показывают ошибку без вызова сервиса") void emptyFieldsShowErrorAndDoNotCallApi() { controller.onSubmit(new ActionEvent()); @@ -73,6 +82,7 @@ void emptyFieldsShowErrorAndDoNotCallApi() { } @Test + @DisplayName("Пустой пароль показывает ошибку без вызова сервиса") void blankPasswordShowsErrorAndDoesNotCallApi() { controller.emailField.setText(VALID_EMAIL); controller.onSubmit(new ActionEvent()); @@ -84,6 +94,7 @@ void blankPasswordShowsErrorAndDoesNotCallApi() { } @Test + @DisplayName("Неверный формат почты показывает ошибку без вызова сервиса") void invalidEmailShowsErrorAndDoesNotCallApi() { controller.emailField.setText("not-an-email"); controller.passwordField.setText(VALID_PASSWORD); @@ -96,6 +107,7 @@ void invalidEmailShowsErrorAndDoesNotCallApi() { } @Test + @DisplayName("Успешный вход переходит к списку ресурсов") void successfulLoginNavigatesToResourceList() { User user = new User(UUID.randomUUID(), VALID_EMAIL, Role.USER, "Имя", "Фамилия", true); when(authService.login(VALID_EMAIL, VALID_PASSWORD)).thenReturn(user); @@ -110,6 +122,7 @@ void successfulLoginNavigatesToResourceList() { } @Test + @DisplayName("Ошибка входа показывает сообщение сервера без перехода") void failedLoginShowsServerErrorAndDoesNotNavigate() { when(authService.login(VALID_EMAIL, VALID_PASSWORD)) .thenThrow(new ServiceException("Неверный логин или пароль")); diff --git a/src/test/java/com/DesktopApplicationClientJava/services/AuthServiceTest.java b/src/test/java/com/DesktopApplicationClientJava/services/AuthServiceTest.java index 0b48c66..0b069e3 100644 --- a/src/test/java/com/DesktopApplicationClientJava/services/AuthServiceTest.java +++ b/src/test/java/com/DesktopApplicationClientJava/services/AuthServiceTest.java @@ -9,10 +9,18 @@ import com.DesktopApplicationClientJava.entities.User; import com.DesktopApplicationClientJava.services.impl.AuthServiceImpl; import com.DesktopApplicationClientJava.session.Session; +import io.qameta.allure.Epic; +import io.qameta.allure.Feature; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +@Epic("Аутентификация") +@Feature("AuthService") +@Tag("role:none") +@DisplayName("Сервис аутентификации") class AuthServiceTest { private Session session; @@ -25,6 +33,7 @@ void setUp() { } @Test + @DisplayName("Гость не имеет ролей") void guestHasNoRoles() { assertFalse(authService.hasRole(Role.USER)); assertFalse(authService.hasRole(Role.MODER)); @@ -32,6 +41,7 @@ void guestHasNoRoles() { } @Test + @DisplayName("Пользователь имеет только роль пользователя") void userHasOnlyUserRole() { loginAs(Role.USER); @@ -41,6 +51,7 @@ void userHasOnlyUserRole() { } @Test + @DisplayName("Модер имеет роли пользователя и модера, но не админа") void moderHasUserAndModerRolesButIsNotAdmin() { loginAs(Role.MODER); @@ -52,6 +63,7 @@ void moderHasUserAndModerRolesButIsNotAdmin() { } @Test + @DisplayName("Админ имеет все роли") void adminHasAllRoles() { loginAs(Role.ADMIN); diff --git a/src/test/java/com/DesktopApplicationClientJava/services/mock/MockServicesTest.java b/src/test/java/com/DesktopApplicationClientJava/services/mock/MockServicesTest.java index c54e2df..d3f3dc8 100644 --- a/src/test/java/com/DesktopApplicationClientJava/services/mock/MockServicesTest.java +++ b/src/test/java/com/DesktopApplicationClientJava/services/mock/MockServicesTest.java @@ -14,14 +14,19 @@ import com.DesktopApplicationClientJava.services.filter.ResourceFilter; import com.DesktopApplicationClientJava.services.filter.UserFilter; import com.DesktopApplicationClientJava.session.Session; +import io.qameta.allure.Epic; +import io.qameta.allure.Feature; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +@DisplayName("Мок-сервисы входа и пользователей") class MockServicesTest { private Session session; @@ -41,6 +46,10 @@ void setUp() { } @Test + @Epic("Аутентификация") + @Feature("AuthService") + @Tag("role:guest") + @DisplayName("Начальный админ сохраняет роль админа") void seededAdminKeepsAdminRole() { User user = authService.login("admin@example.com", "whatever"); @@ -50,18 +59,30 @@ void seededAdminKeepsAdminRole() { } @Test + @Epic("Аутентификация") + @Feature("AuthService") + @Tag("role:guest") + @DisplayName("Неизвестной почте роль назначается по префиксу") void unknownEmailGetsRoleByPrefix() { assertEquals(Role.MODER, authService.login("moder-ivan@example.com", "x").getRole()); assertEquals(Role.USER, authService.login("someone@example.com", "x").getRole()); } @Test + @Epic("Аутентификация") + @Feature("AuthService") + @Tag("role:guest") + @DisplayName("Пустые учётные данные отклоняются") void blankCredentialsAreRejected() { assertThrows(ServiceException.class, () -> authService.login("", "x")); assertThrows(ServiceException.class, () -> authService.login("a@b.c", "")); } @Test + @Epic("Аутентификация") + @Feature("AuthService") + @Tag("role:guest") + @DisplayName("Выход очищает сессию") void logoutClearsSession() { authService.login("user@example.com", "x"); authService.logout(); @@ -115,6 +136,10 @@ void downloadUnknownFileThrows404(@TempDir Path tempDir) { } @Test + @Epic("Пользователи") + @Feature("UsersService") + @Tag("role:admin") + @DisplayName("Поиск пользователей находит начального админа") void usersSearchFindsSeededAdmin() { List found = usersService.search(new UserFilter("admin@", null, null, null, null), 0, 10);