Невозможно получить данные тела ответа для утверждений при выполнении операций с использованием обеспечения безопасности с использованием Java. - PullRequest
0 голосов
/ 10 июня 2019

Ниже приведено тело ответа:

{
    "Updated_Fields": [
        "a",
        "b",
        "c",
        "d"
    ],
    "Invalid_Fields": [
        "cd",
        "ab"
    ]
}

Я хочу проверить, имеет ли тело ответа

  1. два поля в блоке invalid_field
  2. 'cd' и 'ab' должны быть в блоке invalid_field
JSONArray JSONResponseBody = new JSONArray(response.body().asString());

Assert.assertEquals(JSONResponseBody.getJSONObject(0).getString("Invalid_Fields"), "cd");

response.jsonPath().param("Invalid_Fields", "cd");

assertThat( response.asString(), hasJsonPath("Invalid_Fields.ab"));

Получение ошибки

1 Ответ

0 голосов
/ 10 июня 2019

Один из способов использования библиотеки, такой как gson, для преобразования String в объект Java, а затем применения стандартной логики Java (пример ниже)

Зависимость Gson Maven

приватный статический окончательный список INVALID_DATA = Arrays.asList ("cd", "ab");

public static void main(String[] args)
{
    String input = "{ \"Updated_Fields\": [ \"a\", \"b\", \"c\", \"d\" ], \"Invalid_Fields\": [ \"cd\", \"ab\" ] }";
    Gson gson = new Gson();
    FieldData data = gson.fromJson(input, FieldData.class);
    System.out.println(isInvalidFields(data.Invalid_Fields));
}

private static boolean isInvalidFields(List<String> Invalid_Fields) {
    if(CollectionUtils.isEmpty(Invalid_Fields) || Invalid_Fields.size() != 2) {
     return false;   
    }
    return Invalid_Fields.containsAll(INVALID_DATA);
}

Определение отображения классов на эти данные:

public class FieldData
{

    public List<String> Updated_Fields;

    public List<String> Invalid_Fields;

}
...