commit 0b87bd9c488ea5241e0de527bdb2f13602968413 Author: valerpan Date: Wed Aug 5 16:38:35 2026 +0300 Initial commit api-master diff --git a/helpdesk-api-test-main/.gitignore b/helpdesk-api-test-main/.gitignore new file mode 100644 index 0000000..3667d6f --- /dev/null +++ b/helpdesk-api-test-main/.gitignore @@ -0,0 +1,4 @@ +# Project exclude paths +/target/ +/.idea/ +*.iml diff --git a/helpdesk-api-test-main/pom.xml b/helpdesk-api-test-main/pom.xml new file mode 100644 index 0000000..f93ad5d --- /dev/null +++ b/helpdesk-api-test-main/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + org.example + helpdesk-api-test + 1.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + + + io.rest-assured + rest-assured + 4.3.0 + + + com.google.code.gson + gson + 2.8.6 + + + org.testng + testng + 6.9.6 + + + + \ No newline at end of file diff --git a/helpdesk-api-test-main/src/main/java/model/AuthToken.java b/helpdesk-api-test-main/src/main/java/model/AuthToken.java new file mode 100644 index 0000000..273d2b6 --- /dev/null +++ b/helpdesk-api-test-main/src/main/java/model/AuthToken.java @@ -0,0 +1,5 @@ +package model; + +public class AuthToken { + // todo: serialized поля, согласно swagger, а также геттеры и сеттеры +} diff --git a/helpdesk-api-test-main/src/main/java/model/Status.java b/helpdesk-api-test-main/src/main/java/model/Status.java new file mode 100644 index 0000000..5539116 --- /dev/null +++ b/helpdesk-api-test-main/src/main/java/model/Status.java @@ -0,0 +1,18 @@ +package model; + +/** Статусы тикета, используемые в тестах */ +public enum Status { + OPEN(1), + CLOSED(4), + ; + + private final int code; + + Status(int code) { + this.code=code; + } + + public int getCode() { + return code; + } +} diff --git a/helpdesk-api-test-main/src/main/java/model/Ticket.java b/helpdesk-api-test-main/src/main/java/model/Ticket.java new file mode 100644 index 0000000..69ca5bf --- /dev/null +++ b/helpdesk-api-test-main/src/main/java/model/Ticket.java @@ -0,0 +1,19 @@ +package model; + +/** Объект тикета (POJO) */ +public class Ticket { + + // todo: serialized поля, геттеры и сеттеры + + @Override + public boolean equals(Object o) { + // todo + return false; + } + + @Override + public int hashCode() { + // todo + return 0; + } +} diff --git a/helpdesk-api-test-main/src/test/java/api/BaseTest.java b/helpdesk-api-test-main/src/test/java/api/BaseTest.java new file mode 100644 index 0000000..3b46461 --- /dev/null +++ b/helpdesk-api-test-main/src/test/java/api/BaseTest.java @@ -0,0 +1,40 @@ +package api; + +import model.AuthToken; +import model.Status; +import model.Ticket; +import org.testng.annotations.BeforeClass; + +import java.io.IOException; + +import static io.restassured.RestAssured.given; + +/** Абстрактный класс, содержащий общие для всех тестов методы */ +public abstract class BaseTest { + @BeforeClass + public void prepare() { + // todo: загрузить в системные переменные "base.uri" из "config.properties" + + String baseUri = System.getProperty("base.uri"); + if (baseUri == null || baseUri.isEmpty()) { + throw new RuntimeException("В файле \"config.properties\" отсутствует значение \"base.uri\""); + } + + // todo: подготовить глобальные преднастройки для запросов + } + + protected AuthToken login() { + // todo: отправить запрос на получения токена, используя учетные данные из "config.properties" + return null; + } + + protected Ticket buildNewTicket(Status status, int priority) { + // todo: создать объект с тестовыми данными + return null; + } + + protected Ticket createTicket(Ticket ticket) { + // todo: отправить HTTP запрос для создания тикета + return null; + } +} diff --git a/helpdesk-api-test-main/src/test/java/api/CreateTicketTest.java b/helpdesk-api-test-main/src/test/java/api/CreateTicketTest.java new file mode 100644 index 0000000..ab7cb95 --- /dev/null +++ b/helpdesk-api-test-main/src/test/java/api/CreateTicketTest.java @@ -0,0 +1,18 @@ +package api; + +import model.Ticket; +import org.testng.annotations.Test; + +/** Создание и проверка тикета */ +public class CreateTicketTest extends BaseTest { + + @Test + public void createTicketTest() { + // todo: создать тикет и проверить, что он находится в системе + } + + protected Ticket getTicket(int id) { + // todo: отправить HTTP запрос на получение тикета по его id + return null; + } +} diff --git a/helpdesk-api-test-main/src/test/java/api/UpdateTicketTest.java b/helpdesk-api-test-main/src/test/java/api/UpdateTicketTest.java new file mode 100644 index 0000000..cd77172 --- /dev/null +++ b/helpdesk-api-test-main/src/test/java/api/UpdateTicketTest.java @@ -0,0 +1,17 @@ +package api; + +import model.Ticket; +import org.testng.annotations.Test; + +/** Обновление тикета */ +public class UpdateTicketTest extends BaseTest { + + @Test + public void updateTicketTest() { + // todo: создать тикет со статусом Closed, затем обновить тикет и проверить сообщение об ошибке (негативный сценарий) + } + + private void updateTicketNegative(Ticket ticket) { + // todo: отправить HTTP запрос для обновления данных тикета и сразу же проверить статус код (должен соответствовать ошибке) + } +} diff --git a/helpdesk-api-test-main/src/test/resources/config.properties b/helpdesk-api-test-main/src/test/resources/config.properties new file mode 100644 index 0000000..3450748 --- /dev/null +++ b/helpdesk-api-test-main/src/test/resources/config.properties @@ -0,0 +1,2 @@ +# Ïàðàìåòðû êîíôèãóðàöèè â ôîðìàòå: +# key=value \ No newline at end of file