Выполнение почтового запроса с использованием Rest Assured DSL

это тело моего почтового запроса

{
    "Type": "Something",
    "Authentication": [
        {
            "Key": "key1",
            "Value": "value1"
        },
        {
            "Key": "key2",
            "Value": "value2"
        },
        {
            "Key": "key3",
            "Value": "value3"
        }
    ]
}

Я не совсем уверен, как имитировать отправку параметров моего почтового запроса для указанной выше полезной нагрузки.

Я предполагал, что отправляю все как пару ключ-значение, но не учел вложенность в Authentication, которая представляет собой массив. В качестве исключения я получаю 400 неверных запросов.

Я был бы признателен за понимание, как правильно отправить параметры сообщения для этого запроса. Имеет ли какое-либо значение отправка его на карте, кроме удобочитаемости?

Это мой RestAssured DSL

given().
                param("type", "Something").
                param("key1", "value1").
                param("key2", "value2").
                param("key3", "value3").
                header("content-type", "application/json").
                when().
                    post("http://someURL/something").
                then().
                statusCode(200).
                log().everything();

person raguyadav    schedule 18.08.2015    source источник


Ответы (2)


Просто создайте хеш-карту следующим образом:

Map<String, Object> map = new HashMap<>();
map.put("Type", "Something");
map.put("Authentication", asList(new HashMap<String, Object>() {{
    put("Key", "key1");
    put("Value", "value1");
}}, new HashMap<String, Object>() {{
    put("Key", "key2");
    put("Value", "value2");
}}, new HashMap<String, Object>() {{
    put("Key", "key3");
    put("Value", "value3");
}}));

И передаем в тело REST Assured:

given().               
        contentType(ContentType.JSON).
        body(map).
when().
        post("http://someURL/something").
then().
        statusCode(200).
        log().everything();

Вы также можете создать POJO вместо карты и передать его телу, если хотите. Чтобы это работало, вам необходимо иметь поддерживаемую платформу сериализатора JSON в пути к классам. Например, jackson-databind. Дополнительную информацию см. В документации.

person Johan    schedule 29.08.2015

person    schedule
comment
Привет, Anoop, Большое спасибо. Это сработало хорошо, но я хотел попробовать другой подход, в котором я помещаю ключ и значение в карту, а затем отправляю их таким же образом, используя contentType, как вы показываете. Единственное, что я могу понять, это как создать структуру массива с аутентификацией. не могли бы вы иметь представление об этом, - person raguyadav; 24.08.2015