Skip to content
This repository has been archived by the owner on Sep 3, 2024. It is now read-only.

Commit

Permalink
Merge pull request #396 from nstreltsov/master
Browse files Browse the repository at this point in the history
Добавлена возможность добавлять фильтры для запросов для restassured
  • Loading branch information
clicman authored Jun 13, 2023
2 parents 00ce4b3 + 353ad4a commit 867a377
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 1 deletion.
10 changes: 10 additions & 0 deletions page-factory-doc/src/main/asciidoc/rest-plugin.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,15 @@ api.ssl.relaxed = true

Подробнее об этом можно узнать в документации https://github.com/rest-assured/rest-assured/wiki/Usage#ssl[rest-assured^, role="ext-link"]

=== Филтрация запросов
Фильтр позволяет проверять и изменять запрос до того, как он будет отправлен, а также проверять и изменять ответ до того, как он вернется. Фильтры можно использовать для реализации пользовательских схем аутентификации, управления сеансами, ведения журналов и т. д. Чтобы создать фильтр, вам необходимо реализовать интерфейс `io.restassured.filter.Filter`
Чтобы использовать фильтр, вы можете указать в параметре классы фильтров (если несколько, то необходимо указывать через запятую):

[source,]
----
api.request.filters = ru.sbtqa.tag.api.TestFilter
----

Подробнее об этом можно узнать в документации https://github.com/rest-assured/rest-assured/wiki/Usage#filters[rest-assured^, role="ext-link"]


8 changes: 8 additions & 0 deletions page-factory-doc/src/main/asciidoc/rest_properties.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,12 @@

Возможные значения: true или false.
| false

| api.request.filters
| Фильтры для запросов

Возможные значения: путь до классов, которые реализуют интерфейс `io.restassured.filter.Filter`

Если используется несколько фильтров, то указываются через запятую
|
|====================
Original file line number Diff line number Diff line change
@@ -1,26 +1,37 @@
package ru.sbtqa.tag.api;

import io.restassured.filter.Filter;
import io.restassured.response.Response;
import io.restassured.response.ValidatableResponse;
import io.restassured.specification.RequestSpecification;

import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import ru.sbtqa.tag.api.annotation.FromResponse;
import ru.sbtqa.tag.api.annotation.Mutator;
import ru.sbtqa.tag.api.annotation.Query;
import ru.sbtqa.tag.api.annotation.Stashed;
import ru.sbtqa.tag.api.environment.ApiEnvironment;
import ru.sbtqa.tag.api.exception.RestPluginException;
import ru.sbtqa.tag.api.properties.ApiConfiguration;
import ru.sbtqa.tag.api.repository.ApiPair;
import ru.sbtqa.tag.api.storage.BlankStorage;
import ru.sbtqa.tag.api.utils.PlaceholderUtils;
import ru.sbtqa.tag.api.utils.ReflectionUtils;
import ru.sbtqa.tag.api.utils.TemplateUtils;
import ru.sbtqa.tag.pagefactory.ApiEndpoint;
import ru.sbtqa.tag.pagefactory.Rest;
import ru.sbtqa.tag.pagefactory.annotations.rest.Endpoint;
import ru.sbtqa.tag.pagefactory.utils.PathUtils;

import static io.restassured.RestAssured.filters;
import static io.restassured.RestAssured.given;
import static java.lang.String.format;
import static ru.sbtqa.tag.api.annotation.ParameterType.*;

/**
Expand Down Expand Up @@ -109,7 +120,10 @@ public void send() {
}

private RequestSpecification buildRequest() {
RequestSpecification request = given().log().all(true);
RequestSpecification request = given()
.filters(getFilters())
.log()
.all(true);

request.queryParams(getQueryParameters());
request.headers(getHeaders());
Expand All @@ -124,6 +138,16 @@ private RequestSpecification buildRequest() {
return request;
}

private List<Filter> getFilters(){
return PROPERTIES.getRequestFilters().stream().map(filter -> {
try {
return (Filter)Class.forName(filter).getConstructor().newInstance();
} catch (InstantiationException | IllegalAccessException | InvocationTargetException |
NoSuchMethodException | ClassNotFoundException e) {
throw new RestPluginException(format("Failed to create filter instance \"%s\"", filter), e);
}
}).collect(Collectors.toList());
}
private Map<String, ?> getQueryParameters() {
Map<String, Object> queries = new HashMap<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import org.aeonbits.owner.Config;
import ru.sbtqa.tag.pagefactory.properties.Configuration;

import java.util.List;

public interface ApiConfiguration extends Config {

@Key("api.baseURI")
Expand All @@ -28,6 +30,10 @@ public interface ApiConfiguration extends Config {
@DefaultValue("false")
boolean shouldRemoveEmptyObjects();

@Key("api.request.filters")
@DefaultValue("")
List<String> getRequestFilters();

static ApiConfiguration create() {
return Configuration.init(ApiConfiguration.class);
}
Expand Down

0 comments on commit 867a377

Please sign in to comment.