examples/helpdesk-api-test-main/src/test/java/api/BaseTest.java
2026-08-06 20:17:11 +03:00

114 lines
3.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package api;
import io.restassured.RestAssured;
import io.restassured.builder.RequestSpecBuilder;
import io.restassured.filter.log.LogDetail;
import io.restassured.filter.log.ResponseLoggingFilter;
import io.restassured.http.ContentType;
import model.AuthToken;
import model.Status;
import model.Ticket;
import org.testng.annotations.BeforeClass;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Random;
import java.util.UUID;
import static io.restassured.RestAssured.given;
/** Абстрактный класс, содержащий общие для всех тестов методы */
public abstract class BaseTest {
@BeforeClass
public void prepare() throws IOException{
System.getProperties().load(ClassLoader.getSystemResourceAsStream("config.properties"));
String baseUri = System.getProperty("base.uri");
if (baseUri == null || baseUri.isEmpty()) {
throw new RuntimeException("В файле \"config.properties\" отсутствует значение \"base.uri\"");
}
RestAssured.requestSpecification = new RequestSpecBuilder()
.setBaseUri(baseUri)
.setAccept(ContentType.JSON)
.setContentType(ContentType.JSON)
.log(LogDetail.ALL)
.build();
RestAssured.filters(new ResponseLoggingFilter());
}
protected AuthToken login() {
String username = System.getProperty("username");
if (username == null || username.isEmpty()) {
throw new RuntimeException("В файле \"config.properties\" отсутствует значение \"username\"");
}
String password = System.getProperty("password");
if (password == null || password.isEmpty()) {
throw new RuntimeException("В файле \"config.properties\" отсутствует значение \"password\"");
}
AuthToken auth = new AuthToken();
auth.setUsername(username);
auth.setPassword(password);
AuthToken actual =
given()
.body(auth)
.when()
.post("/api/login")
.then()
.statusCode(200)
.extract().as(AuthToken.class);
auth.setToken(actual.getToken());
return auth;
}
protected Ticket buildNewTicket(Status status, int priority) {
LocalDateTime now = LocalDateTime.now();
Random random = new Random();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
Ticket ticket = new Ticket();
String title = "Проверка rest-assured " + UUID.randomUUID();
String secret_key = UUID.randomUUID().toString();
boolean on_hold = random.nextBoolean();
String due_date = now.format(formatter);
int queue = 1;
//ticket.setDue_date(due_date);
ticket.setAssigned_to("admin");
ticket.setTitle(title);
ticket.setStatus(status.getCode());
ticket.setPriority(priority);
ticket.setSecret_key(secret_key);
ticket.setOn_hold(on_hold);
ticket.setQueue(queue);
return ticket;
}
protected Ticket createTicket(Ticket ticket) {
AuthToken authToken = login();
String token = authToken.getToken();
Ticket actual =
given()
.header("Authorization", "Token " + token)
.body(ticket)
.when()
.post("/api/tickets")
.then()
.statusCode(201)
.extract().as(Ticket.class);
return actual;
}
}