compañeros stackoverflowianos :)
Estuve durante la hora de salida para hacer una llamada de publicación usando la API de Gmail. He estado tratando de usar createDraft y createLabel. Ahora creo que he encontrado cómo hacer esto correctamente (en su mayoría), pero aparece este error:
java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>.Me doy cuenta de que este error ocurre porque realizo una solicitud incorrecta.
¿Podrían ustedes, chicos, ayudarme con esto? Aquí está mi código:
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) } }Supongo que uso HashMap incorrectamente o uso algunos campos de cuerpo incorrectos. Recién comencé a aprender RestAssured , así que pido perdón por la pregunta Newby.
¡Gracias!
PD Realmente agradecería cualquier ayuda con los métodos Post y poner datos en el cuerpo
Creo que su uso de RestAssured y HashMap es correcto. Creo que está obteniendo un 400 de esta API porque está especificando la propiedad de id . Al jugar con esto en el API Explorer de Google, pude generar 400 errores al hacerlo. De acuerdo con la documentación , las únicas cosas que necesita especificar para POST/Create son: labelListVisibility , messageListVisibility y name . La id se le devuelve como parte de la respuesta.
Una buena característica de RestAssured es que puede hacer que registre lo que envía o recibe cuando hay un error o todo el tiempo.
Registrar todas las solicitudes:
given().log().all()Registrar todas las respuestas:
`when`().log().all()O simplemente cuando fallan las validaciones:
`when`().log().ifValidationFails() Usar eso le dará una razón más precisa por la cual su interacción con la API está fallando porque mostrará todo lo que Google está enviando. Entonces podemos ver con certeza si tengo razón sobre la id .
Y dado que parece estar usando Kotlin para esto, es posible que desee aprovechar sus excelentes capacidades de cadenas multilínea y simplemente crear la carga JSON manualmente:
val body = """ { "labelListVisibility": "labelShow", "messageListVisibility": "show", "name": "ThisIsATest" } """