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

Привет.

Столкнулся с такой проблемой, для некоторых риквестов для поиска используются 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, остальные параметры мне надо удалялить.

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

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

  1. Можно проосто указывать пустую строку для “null” значений, ничего не удаляя) У нас норм работало)
  2. удалять все параметры и потом добавлять нужные? (например, rest-assured/ParamConfigITest.java at master · rest-assured/rest-assured · GitHub)
  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)

2 лайка