/
koskv
/
TeamSync-Tests
Обзор
Документация
Войти
/
koskv
/
TeamSync-Tests
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/test/java/TeamSyncTest/contract/UserContract_Test.java
164 строки
6 KB
Koskv
REF: Перед правкой метода getRandomEntity()
20 ноя 2025, 16:11
20 ноя 2025, 16:11
0544783
Код
Авторство
О чём код?
package TeamSyncTest.contract; import TeamSyncTest.constants.JsonSchemaPath; import TeamSyncTest.models.error.ApiErrorResponseDto; import TeamSyncTest.models.error.ErrorExceptionDto; import TeamSyncTest.models.response.ApiResponse; import TeamSyncTest.utils.api.ApiMethodsNew; import io.qameta.allure.Story; import utils.api.BaseContractTest; import TeamSyncTest.constants.Endpoints; import TeamSyncTest.constants.JsonPath; import TeamSyncTest.models.UserDto; import TeamSyncTest.utils.custom.Generator; import utils.coverage.SchemaCoverageTracker; import utils.api.SchemaValidator; import com.github.javafaker.Faker; import io.qameta.allure.Epic; import io.qameta.allure.Feature; import io.qameta.allure.Step; import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; @Tag("contract") @Epic("Contract Tests") @Feature("User - JSON Schema Validation") public class UserContract_Test extends BaseContractTest { @Autowired private ApiMethodsNew apiMethodsNew; private Long userId; @Override protected SchemaCoverageTracker getPrimaryTracker() { return SchemaCoverageTracker.USER; } @Override protected SchemaCoverageTracker getErrorTracker() { return SchemaCoverageTracker.ERROR_USER; } //===== Тесты ======================================================== // ===== POST ======== @Test @Story("User - UserResponseSchema.json") @DisplayName("POST /users — успешное создание (201)") void createUser_Success() throws IOException { UserDto body = createValidUserBody(); UserDto response = apiMethodsNew.create(UserDto.class, body, Endpoints.USER_API, authToken); this.userId = response.getId(); SchemaValidator.validateAndTrack(response, JsonSchemaPath.USER_RESPONSE_SCHEMA, SchemaCoverageTracker.USER); } @Test @Story("User - UserInvalidUsernameSchema.json") @DisplayName("POST /users — ошибка валидации длинны username (400)") void createUser_InvalidUsername() throws IOException { UserDto body = createValidUserBody(); body.setUsername("ab"); ApiErrorResponseDto error = apiMethodsNew.create(ApiErrorResponseDto.class, body, Endpoints.USER_API, authToken); SchemaValidator.validateAndTrack(error, JsonSchemaPath.USER_INVALID_USERNAME_SCHEMA, SchemaCoverageTracker.ERROR_USER); } @Test @Story("User - error_response.json") @DisplayName("POST /users — ошибка username дубликат (409)") void createUser_DuplicateUsername() throws IOException { // Arrange UserDto body = createValidUserBody(); UserDto response = apiMethodsNew.create(UserDto.class, body, Endpoints.USER_API, authToken); this.userId = response.getId(); body.setEmail("test_email123@mail.ru"); // act ApiResponse<ErrorExceptionDto> error = apiMethodsNew.createExpectingError(ErrorExceptionDto.class, body, Endpoints.USER_API, authToken, 409); // validate SchemaValidator.validateAndTrack(error, "jsonSchema/error/error_response.json", SchemaCoverageTracker.ERROR_USER); } @Test @Story("User - error_response.json") @DisplayName("POST /users — ошибка email дубликат (409)") void createUser_DuplicateEmail() throws IOException { // Arrange UserDto body = createValidUserBody(); body.setEmail("test_email12345@mail.ru"); UserDto newUser = apiMethodsNew.create(UserDto.class, body, Endpoints.USER_API, authToken); this.userId = newUser.getId(); body.setUsername("test_email12345"); // act ApiErrorResponseDto error = apiMethodsNew.createExpectingError( ApiErrorResponseDto.class, body, Endpoints.USER_API, authToken, 409).getBody(); // validate SchemaValidator.validateAndTrack(error, "jsonSchema/error/error_response.json", SchemaCoverageTracker.ERROR_USER); } // ====== GET ======== @Test @Story("User - UserResponseSchema.json") @DisplayName("GET /users — успех (200)") void getUser_Success() throws IOException { // Arrange UserDto body = createValidUserBody(); UserDto response = apiMethodsNew.create(UserDto.class, body, Endpoints.USER_API, authToken); this.userId = response.getId(); // Act UserDto user = apiMethodsNew.getByIdWithResponse(UserDto.class, Endpoints.USER_API, userId, authToken).getBody(); // Validate SchemaValidator.validateAndTrack(user, JsonSchemaPath.USER_RESPONSE_SCHEMA, SchemaCoverageTracker.USER); } @Test @Story("User - error_response.json") @DisplayName("GET /users — User не найден (404)") void getUser_notFound() throws IOException { // Arrange // act ErrorExceptionDto error = apiMethodsNew.getByIdWithResponse( ErrorExceptionDto.class, Endpoints.USER_API, 9999L, authToken).getBody(); // validate SchemaValidator.validateAndTrack(error, "jsonSchema/error/error_response.json", SchemaCoverageTracker.ERROR_USER); } //------------------------------------------------------------------------ @Step("Создание тела запроса для пользователя") public UserDto createValidUserBody() throws IOException { Faker faker = new Faker(); String password = Generator.randomString(6) + "_Test!12345"; return createRequestBody(JsonPath.USER_JSON, UserDto.class, body -> { body.setUsername(faker.name().username() + "_test"); body.setPassword(password); body.setConfirmPassword(password); body.setEmail(faker.internet().emailAddress()); body.setRole("ROLE_USER"); }); } @AfterEach void cleanup() { if (userId != null) { System.out.println("Try to delete User with ID: " + userId); apiMethodsNew.deleteWithResponse(Endpoints.USER_API, userId, authToken); userId = null; } } }