Как запросить API POST для отправки токена и значений тела с помощью Rest-Assured? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать тестовую автоматизацию для POST API, используя Rest-Assured и Java. Этот POST API имеет тело в виде Application / JSON, например:

{
    "customer":{
        "email": "teste@mailinator.com"
    },
    "password":"Teste@12"
}

Чтобы сделать этот запрос, я использую следующий код, но он возвращает код состояния «400», но я посылаю ту же информацию о Почтальоне, и он возвращает «200»:

@And("envio as informacoes da chamada: (.*), (.*), (.*), (.*) e (.*)")
        public void enviarDados (String srtEmail, String srtSenha, String srtAmbiente, String srtAPI, String srtToken) {
HashMap<String,String> postContent = new HashMap<String,String>();
            postContent.put("email", srtEmail);
            postContent.put("password", srtSenha);
            //System.out.println("{\"customer\":" +postContent+ "}");
            given().contentType(ContentType.JSON).header("Authorization", "Bearer"+srtToken).header("Content-Type", "application/json").
            //with().body(postContent).
            with().body("{\"customer\":" +postContent+ "}").
            when().post(srtAmbiente+srtAPI).
            then().statusCode(200); 
}

Ответ "400":

{
"status": 400,
"message": "Malformed request",
"additional_error": ""

}

Правильна ли структура? Что-то, по вашему мнению, отсутствует? Спасибо!

1 Ответ

2 голосов
/ 10 апреля 2019

Вы отправляете неправильное тело с POST.

//This line will not serialize HashMap to JSON, but call toString()
.body("{\"customer\":" +postContent+ "}")

В результате ваша полезная нагрузка будет выглядеть следующим образом:

{"customer": {пароль = пароль, customer=example@example.com routменно

, который не является допустимым JSON.Попробуйте это:

Map<String, String> emailContent = new HashMap<>();
emailContent.put("email", "example@example.com");
Map<String, Object> postContent = new HashMap<>();
postContent.put("customer", emailContent);
postContent.put("password", "password");
given().contentType(ContentType.JSON)
    .header("Authorization", "Bearer "+srtToken)
    .with().body(postContent)
    .when().post(srtAmbiente+srtAPI)
    .then().statusCode(200); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...