114 lines
3.8 KiB
Java
114 lines
3.8 KiB
Java
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;
|
||
}
|
||
}
|