/
koskv
/
TeamSync-Tests
Обзор
Документация
Войти
/
koskv
/
TeamSync-Tests
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/test/java/TeamSyncTest/api/auth/AuthApiController_Test.java
112 строк
4 KB
Koskv
REF: Поправлен authApi контроллер тесты
20 ноя 2025, 11:22
20 ноя 2025, 11:22
d10d164
Код
Авторство
О чём код?
package TeamSyncTest.api.auth; import TeamSyncTest.models.auth.AuthResponse; import TeamSyncTest.models.response.ApiResponse; import TeamSyncTest.utils.api.ApiMethodsNew; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.http.HttpMethod; import utils.api.BaseIntegrationTest; import TeamSyncTest.constants.Endpoints; import TeamSyncTest.constants.JsonPath; import TeamSyncTest.models.auth.AuthRequest; import TeamSyncTest.utils.api.ApiMethods_old; import io.qameta.allure.Description; import io.qameta.allure.Epic; import io.qameta.allure.Feature; import io.qameta.allure.Owner; import io.qameta.allure.Severity; import io.qameta.allure.SeverityLevel; import io.qameta.allure.Step; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; import static TeamSyncTest.constants.HttpStatus.OK; import static TeamSyncTest.constants.HttpStatus.UNAUTHORIZED; import static io.restassured.RestAssured.given; import static org.junit.jupiter.api.Assertions.*; @Tag("api") @Epic("API Tests") @Feature("Auth Management - CRUD Operations") @Owner("TeamSync: AQA team") @Severity(SeverityLevel.CRITICAL) @DisplayName("API тесты для контроллера аутентификации") @Slf4j public class AuthApiController_Test extends BaseIntegrationTest { @ParameterizedTest(name = "[{index}] {0} → 200 + valid token") @MethodSource("TeamSyncTest.testdata.AuthDataProvider#validUsersAndPasswords") @DisplayName("Успешное получение токена с валидными данными (200)") @Description("Тест проверяет успешное получение токена с разными пользователями") @Severity(SeverityLevel.BLOCKER) void login_Success(String username, String password) { // Arange AuthRequest request = createAuthBody(username, password); // Act ApiResponse<AuthResponse> response = apiMethodsNew.createWithResponse( AuthResponse.class, request, Endpoints.AUTH_API,null); AuthResponse body = response.getBody(); String token = body.getToken(); // Assert assertAll("Successful authentication - test", () -> assertEquals(200, response.getStatusCode()), () -> assertNotNull(token), () -> assertTrue(token.startsWith("Bearer "), "Token must be Bearer"), () -> assertFalse(token.equals("Bearer "), "Token must not be empty") ); } @ParameterizedTest @MethodSource("TeamSyncTest.testdata.AuthDataProvider#invalidUsersAndPasswords") @DisplayName("Ошибка получения токена с не валидными данными (401)") @Description("Тест проверяет регистрацию под несуществующим пользователем") @Severity(SeverityLevel.BLOCKER) public void getToken_InvalidCredentials(String username, String password) throws Exception { // Arrange AuthRequest request = createAuthBody(username, password); // Act ApiResponse<Void> response = apiMethodsNew.expectError( HttpMethod.POST, Endpoints.AUTH_API, request, UNAUTHORIZED, // ← ожидаем 401 Void.class // ← тело пустое ); // Assert assertAll("401 + пустое тело ответа", () -> assertEquals(UNAUTHORIZED, response.getStatusCode()), () -> assertNull(response.getBody(), "Тело должно быть null"), () -> assertEquals("", response.getRawResponse().getBody().asString(), "Тело должно быть пустой строкой") ); } // -------- ************************************************************** // Источник данных для теста ------------------------------------------------- @Step("Создание тела запроса для задачи") public AuthRequest createAuthBody(String username, String password) { return createRequestBody(JsonPath.AUTH_JSON, AuthRequest.class, body -> { body.setUsername(username); body.setPassword(password); }); } }