коллеги-штабелевы 🙂
Я был на время, чтобы сделать почтовый вызов, используя 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" } """