restAssured – невозможно обработать почтовый метод

коллеги-штабелевы 🙂

Я был на время, чтобы сделать почтовый вызов, используя API Gmail. Пробовал использовать createDraft и createLabel. Теперь, я думаю, я нашел, как это сделать правильно (в основном), но я получаю эту ошибку:

java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>. 

Я понимаю, что эта ошибка возникает из-за неправильного запроса.

Могли бы вы, ребята, помочь мне с этим? Вот мой код:

 import io.restassured.RestAssured.* import io.restassured.http.ContentType import io.restassured.matcher.RestAssuredMatchers.* import org.hamcrest.Matchers.* import org.testng.annotations.Test class RestAPIAutoTestPost { @Test fun createLabelInGoogleMail() { RestAssured.baseURI = "https://www.googleapis.com/gmail/v1/users/me" val accessToken = "ya29.Glw7BEv6***" val jsonAsMap = HashMap<String, Any>() jsonAsMap.put("id", "labelAPITestNameID") jsonAsMap.put("labelListVisibility", "labelShow") jsonAsMap.put("messageListVisibility", "show") jsonAsMap.put("messagesTotal", "0") jsonAsMap.put("messagesUnread", "0") jsonAsMap.put("name", "labelAPITestName") jsonAsMap.put("threadsTotal", "0") jsonAsMap.put("threadsUnread", "0") jsonAsMap.put("type", "user") given(). contentType(ContentType.JSON). body(jsonAsMap). `when`() post("/labels?access_token=$accessToken"). then(). statusCode(200) } } 

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

Благодаря!

PS Я бы очень признателен за любую помощь в методах Post и поместить данные в тело

Я думаю, что ваше использование RestAssured и HashMap верное. Я думаю, что вы получаете 400 из этого API, потому что вы указываете свойство id . Играя с этим в Google API Explorer, я смог создать 400 ошибок, выполнив это. Согласно документации , единственное, что вам нужно указать для POST/Create это: labelListVisibility , messageListVisibility и name . id возвращается вам как часть ответа.

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

Зарегистрировать все заявки:

 given().log().all() 

Записать все ответы:

 `when`().log().all() 

Или просто, когда проверки не выполняются:

 `when`().log().ifValidationFails() 

Использование этого даст вам более точную причину, по которой ваше взаимодействие с API терпит неудачу, потому что оно покажет все, что отправляет Google. Поэтому мы можем точно убедиться, что я прав относительно id .

И поскольку вы, кажется, используете Kotlin для этого, вы можете воспользоваться его превосходными многострочными строковыми возможностями и просто создать полезную нагрузку JSON вручную:

 val body = """ { "labelListVisibility": "labelShow", "messageListVisibility": "show", "name": "ThisIsATest" } """ 
Intereting Posts
Эффективная комбинация карт и фильтров против stdlibs Каков правильный способ использования расширений Anko Coroutines? Firebase Android – создайте пользователя с помощью электронной почты и пароль в Kotlin Почему == и равные производят разные результаты? Не удалось выполнить синхронизацию проекта с градиентом. Основные функции не будут работать должным образом в Android-студии 3.0 Как сериализовать карту в строку JSON через JSON.stringify в kotlin JS? Можем ли мы определить наши аксессоры без значения init? Ошибка внутреннего компилятора Android Studio kaptDebugKoltin Накладные расходы расширения Kotlin для Android Побитовая операция «и» в котлин Получить местоположение android Kotlin Модернизация с kotlin, неспособная создать @Body Почему URL ("http://pboss.pozit.pl/contact.html") .readText () делает сбой приложения для Android? после использования Kotlin, мой проект случится, что java.lang.NoClassDefFoundError Иерархия узлов из списка путей каталога