added tests API for /api/user
This commit is contained in:
parent
77c036f7df
commit
6ddef79444
11 changed files with 461 additions and 0 deletions
73
src/test/java/endpoints/UserEndpoint.java
Normal file
73
src/test/java/endpoints/UserEndpoint.java
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
package endpoints;
|
||||
|
||||
import helpers.PropertyProvider;
|
||||
import io.qameta.allure.Step;
|
||||
import io.restassured.response.Response;
|
||||
import io.restassured.specification.RequestSpecification;
|
||||
import pojo.UserRequest;
|
||||
|
||||
import static io.restassured.RestAssured.given;
|
||||
|
||||
public class UserEndpoint {
|
||||
private static final String ENDPOINT = PropertyProvider.getProperty("endpoint.user");
|
||||
|
||||
@Step("Создание запроса о информации пользователя")
|
||||
public static UserRequest addUser() {
|
||||
return UserRequest.builder()
|
||||
.id(PropertyProvider.getProperty("test.id"))
|
||||
.username(PropertyProvider.getProperty("test.username"))
|
||||
.firstName(PropertyProvider.getProperty("test.firstname"))
|
||||
.lastName(PropertyProvider.getProperty("test.lastname"))
|
||||
.email(PropertyProvider.getProperty("test.email"))
|
||||
.build();
|
||||
}
|
||||
|
||||
@Step("Добавить информацию о пользователе и вернуть его ID")
|
||||
public static Response addUserId(RequestSpecification spec, UserRequest userRequest) {
|
||||
return given(spec)
|
||||
.body(userRequest)
|
||||
.when()
|
||||
.post(ENDPOINT)
|
||||
.then()
|
||||
.statusCode(200)
|
||||
.extract().response();
|
||||
}
|
||||
|
||||
@Step("Получить информацию о текущем пользователе")
|
||||
public static Response getUser(RequestSpecification spec) {
|
||||
return given(spec)
|
||||
.when()
|
||||
.get(ENDPOINT);
|
||||
}
|
||||
|
||||
@Step("Получить информацию о пользователе по ID: {userId}")
|
||||
public static Response getUserById(RequestSpecification spec, String userId) {
|
||||
return given(spec)
|
||||
.pathParam("id", userId)
|
||||
.when()
|
||||
.get(ENDPOINT + "/{id}");
|
||||
}
|
||||
|
||||
@Step("Обновить информацию о пользователе: {user}")
|
||||
public static Response updateUser(RequestSpecification spec, UserRequest userRequest) {
|
||||
return given(spec)
|
||||
.body(userRequest)
|
||||
.when()
|
||||
.put(ENDPOINT);
|
||||
}
|
||||
|
||||
@Step("Удалить текущего пользователя")
|
||||
public static Response deleteUser(RequestSpecification spec) {
|
||||
return given(spec)
|
||||
.when()
|
||||
.delete(ENDPOINT);
|
||||
}
|
||||
|
||||
@Step("Удалить пользователя по ID: {userId}")
|
||||
public static Response deleteUserById(RequestSpecification spec, String userId) {
|
||||
return given(spec)
|
||||
.pathParam("id", userId)
|
||||
.when()
|
||||
.delete(ENDPOINT + "/{id}");
|
||||
}
|
||||
}
|
||||
26
src/test/java/helpers/PropertyProvider.java
Normal file
26
src/test/java/helpers/PropertyProvider.java
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
package helpers;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
public class PropertyProvider {
|
||||
private static final Properties properties = new Properties();
|
||||
private static final String CONFIG_FILE = "config.properties";
|
||||
|
||||
static {
|
||||
try (InputStream input = PropertyProvider.class.getClassLoader().getResourceAsStream(CONFIG_FILE)) {
|
||||
if (input == null) {
|
||||
throw new RuntimeException("Не найден файл конфигурации" + CONFIG_FILE);
|
||||
}
|
||||
properties.load(input);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Ошибка загрузки конфигурационного файла", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getProperty(String key) {
|
||||
return properties.getProperty(key);
|
||||
}
|
||||
}
|
||||
|
||||
23
src/test/java/helpers/Specifications.java
Normal file
23
src/test/java/helpers/Specifications.java
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
package helpers;
|
||||
|
||||
import io.qameta.allure.restassured.AllureRestAssured;
|
||||
import io.restassured.RestAssured;
|
||||
import io.restassured.builder.RequestSpecBuilder;
|
||||
import io.restassured.http.ContentType;
|
||||
import io.restassured.specification.RequestSpecification;
|
||||
|
||||
public class Specifications {
|
||||
protected static final String BASE_URL = PropertyProvider.getProperty("base.url");
|
||||
|
||||
public static RequestSpecification initRequestSpecification(String authToken) {
|
||||
RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
|
||||
RequestSpecBuilder requestSpecBuilder = new RequestSpecBuilder();
|
||||
requestSpecBuilder
|
||||
.setBaseUri(BASE_URL)
|
||||
.setContentType(ContentType.JSON)
|
||||
.setAccept(ContentType.JSON)
|
||||
.addHeader("Authorization", "Bearer " + authToken)
|
||||
.addFilter(new AllureRestAssured());
|
||||
return requestSpecBuilder.build();
|
||||
}
|
||||
}
|
||||
19
src/test/java/pojo/UserRequest.java
Normal file
19
src/test/java/pojo/UserRequest.java
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
package pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
|
||||
public class UserRequest {
|
||||
private String id;
|
||||
private String username;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
private String email;
|
||||
}
|
||||
33
src/test/java/tests/BaseTest.java
Normal file
33
src/test/java/tests/BaseTest.java
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
package tests;
|
||||
|
||||
import endpoints.UserEndpoint;
|
||||
import helpers.PropertyProvider;
|
||||
import helpers.Specifications;
|
||||
import io.restassured.specification.RequestSpecification;
|
||||
import org.testng.annotations.*;
|
||||
import pojo.UserRequest;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class BaseTest {
|
||||
protected static RequestSpecification spec;
|
||||
protected static String authToken;
|
||||
protected static UserRequest testUserRequest;
|
||||
protected String addUserId;
|
||||
|
||||
@BeforeClass
|
||||
public void setupTestData() {
|
||||
authToken = PropertyProvider.getProperty("auth.token");
|
||||
}
|
||||
|
||||
@BeforeMethod
|
||||
public void setup() throws IOException {
|
||||
spec = Specifications.initRequestSpecification(authToken);
|
||||
}
|
||||
|
||||
@AfterMethod
|
||||
public void tearDown() {
|
||||
UserEndpoint.deleteUserById(spec, addUserId);
|
||||
}
|
||||
}
|
||||
|
||||
59
src/test/java/tests/GetAndDeleteUserTest.java
Normal file
59
src/test/java/tests/GetAndDeleteUserTest.java
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package tests;
|
||||
|
||||
import endpoints.UserEndpoint;
|
||||
import helpers.PropertyProvider;
|
||||
import io.qameta.allure.Epic;
|
||||
import io.qameta.allure.Feature;
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.asserts.SoftAssert;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
@Epic("Управление сценариями GET")
|
||||
public class GetAndDeleteUserTest extends BaseTest {
|
||||
|
||||
@Feature("Сценарий с GET")
|
||||
@Test(description = "Проверить, информацию о текущем пользователе и удалить текущего пользователя.")
|
||||
public void testGetCurrentAndDeleteUser() {
|
||||
|
||||
var request = UserEndpoint.addUser();
|
||||
addUserId = request.getId();
|
||||
|
||||
UserEndpoint.addUserId(spec, request);
|
||||
|
||||
var response = UserEndpoint.getUser(spec);
|
||||
response
|
||||
.then()
|
||||
.statusCode(200)
|
||||
.body("username", equalTo(PropertyProvider.getProperty("test.username")),
|
||||
"firstName", equalTo(PropertyProvider.getProperty("test.firstname")),
|
||||
"lastName", equalTo(PropertyProvider.getProperty("test.lastname")),
|
||||
"email", equalTo(PropertyProvider.getProperty("test.email")));
|
||||
|
||||
UserEndpoint.deleteUser(spec)
|
||||
.then()
|
||||
.statusCode(200);
|
||||
}
|
||||
|
||||
@Test(description = "Проверить, информацию пользователя по его ID {userId} и удалить по ID")
|
||||
public void testGetUserById() {
|
||||
var softAssert = new SoftAssert();
|
||||
|
||||
var request = UserEndpoint.addUser();
|
||||
addUserId = request.getId();
|
||||
|
||||
UserEndpoint.addUserId(spec, request);
|
||||
|
||||
var userId = PropertyProvider.getProperty("test.id");
|
||||
var response = UserEndpoint.getUserById(spec, userId);
|
||||
|
||||
softAssert.assertNotNull(userId, "ID пользователя не должен быть нулевым");
|
||||
softAssert.assertFalse(userId.trim().isEmpty(), "ID пользователя не должен быть пустым");
|
||||
|
||||
response
|
||||
.then()
|
||||
.statusCode(200)
|
||||
.body("id", equalTo(userId),
|
||||
"username", equalTo(PropertyProvider.getProperty("test.username")));
|
||||
}
|
||||
}
|
||||
22
src/test/java/tests/PostUserTest.java
Normal file
22
src/test/java/tests/PostUserTest.java
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
package tests;
|
||||
|
||||
import endpoints.UserEndpoint;
|
||||
import io.qameta.allure.Epic;
|
||||
import io.qameta.allure.Feature;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@Epic("POST")
|
||||
public class PostUserTest extends BaseTest {
|
||||
|
||||
@Feature("Сценарий с POST")
|
||||
@Test(description = "Проверить создание нового пользователя и его удаление")
|
||||
public void testAddUserSuccessfully() {
|
||||
var request = UserEndpoint
|
||||
.addUser();
|
||||
|
||||
var response = UserEndpoint.addUserId(spec, request);
|
||||
|
||||
addUserId = response.asString();
|
||||
}
|
||||
}
|
||||
|
||||
41
src/test/java/tests/PutUserTest.java
Normal file
41
src/test/java/tests/PutUserTest.java
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
package tests;
|
||||
|
||||
import endpoints.UserEndpoint;
|
||||
import io.qameta.allure.Epic;
|
||||
import io.qameta.allure.Feature;
|
||||
import org.testng.annotations.Test;
|
||||
import pojo.UserRequest;
|
||||
|
||||
@Epic("PUT")
|
||||
public class PutUserTest extends BaseTest{
|
||||
|
||||
@Feature("Сценарий с PUT (создание - обновление - удаление)")
|
||||
@Test(description = "Проверить, обновление информации о текущем пользователе и удалить его")
|
||||
public void testUpdateUser() {
|
||||
|
||||
var request = UserEndpoint.
|
||||
addUser();
|
||||
addUserId = request.getId();
|
||||
|
||||
UserEndpoint
|
||||
.addUserId(spec, request);
|
||||
|
||||
var updateUser = UserRequest.builder()
|
||||
.username("itc1205" + request.getUsername())
|
||||
.firstName("Kamil" + request.getFirstName())
|
||||
.lastName("Vonuchka" + request.getLastName())
|
||||
.email("kamilka@mail.ru" + request.getEmail())
|
||||
.build();
|
||||
|
||||
UserEndpoint.updateUser(spec, updateUser)
|
||||
.then()
|
||||
.statusCode(200);
|
||||
|
||||
UserEndpoint.getUser(spec)
|
||||
.then()
|
||||
.statusCode(200);
|
||||
//эти проверки нужны будут потом
|
||||
// .body("firstName", equalTo(updateUser.getFirstName()),
|
||||
// "email", equalTo(updateUser.getEmail());
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue