Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Фильтр для удаления queryParam из риквеста REST Assured

rest-assured
java
Теги: #<Tag:0x00007fedc454f718> #<Tag:0x00007fedc454f5d8>

#1

Привет.

Столкнулся с такой проблемой, для некоторых риквестов для поиска используются queryParam в качестве фильтров для поиска. Проблема в том, что все queryParam (optional), их сочетание зависит от теста.

В RestAssured вроде как есть итерфейс фильтра FilterableRequestSpecification.java с методом removeQueryParam(String parameterName), но конкретной реализации я не могу найти. Хотелось бы, что б фильтр убирал queryParam if null.

К примеру из риквеста:

.queryParam("pageSize", pageSize)
                .queryParam("query.brokerFirstName", brokerFirstName)
                .queryParam("query.brokerLastName", brokerLastName)
                .queryParam("query.brokerEmail", brokerEmail)
                .queryParam("query.brokerPhone", brokerPhone)
                .queryParam("query.brokerCompany", brokerCompany)
                .queryParam("query.brokerAccountId", brokerAccountId)
                .queryParam("query.brokerContactId", brokerContactId)
                .queryParam("query.customerFirstName", customerFirstName)
                .queryParam("query.customerLastName", customerLastName)
                .queryParam("query.customerEmail", customerEmail)
                .queryParam("query.customerPhone", customerPhone)

если я хочу искать по customerFirstName и customerLastName, остальные параметры мне надо удалялить.

Может кто то уже решал такую проблему и может помочь.
Спасибо.


(Ilona Dibrova) #2

Все зависит от ваших требований

  1. Можно проосто указывать пустую строку для “null” значений, ничего не удаляя) У нас норм работало)
  2. удалять все параметры и потом добавлять нужные? (например, https://github.com/rest-assured/rest-assured/blob/master/examples/rest-assured-itest-java/src/test/java/io/restassured/itest/java/ParamConfigITest.java#L121)
  3. если таки надо удалять, то все параметры задаем через Map, а потом удаляем не нужные:
Map<String, String> parameters = new HashMap<>();
parameters.put("pageSize", pageSize);
parameters.put("query.brokerFirstName", brokerFirstName);
...
parameters.entrySet().removeIf(entry -> entry.getValue() == null);

а потом уже:
.queryParams(parameters)