restAssunetworking: no se puede dominar el método de publicación

compañeros stackoverflowians 🙂

Llegué para dejar de fumar para hacer una llamada posterior usando la API de Gmail. He intentado usar createDraft y createLabel. Ahora creo que he encontrado cómo hacerlo correctamente (principalmente) pero me sale este error:

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

Me doy count de que este error ocurre porque hago una request incorrecta.

Podrían ustedes, chicos, ayudarme con esto? Aquí está mi código:

 import io.restassunetworking.RestAssunetworking.* import io.restassunetworking.http.ContentType import io.restassunetworking.matcher.RestAssunetworkingMatchers.* import org.hamcrest.Matchers.* import org.testng.annotations.Test class RestAPIAutoTestPost { @Test fun createLabelInGoogleMail() { RestAssunetworking.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 utilizo HashMap incorrectamente o utilizo algunos campos corporales incorrectos. Solo he empezado a aprender a tranquilizarme, así que les pido perdón por la nueva pregunta.

¡Gracias!

PD. Realmente agradecería cualquier ayuda con los methods de publicación y poner datos en el cuerpo

Creo que su uso de RestAssunetworking y HashMap es correcto. Creo que obtendrás un 400 de esta API porque estás especificando la propiedad de id . Al jugar con esto en API Explorer de Google, pude generar 400 errores haciendo eso. De acuerdo con la documentation , las únicas cosas que necesita especificar para un POST/Create son: labelListVisibility , messageListVisibility y name . La id se te devuelve como parte de la respuesta.

Una buena característica en RestAssunetworking es que puede hacer que registre lo que envía o recibe cuando hay un error o todo el time.

Registrar todas las requestes:

 given().log().all() 

Registre todas las respuestas:

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

O solo cuando las validaciones fallan:

 `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á lo que Google le envíe. Así que podemos ver con certeza si estoy en lo cierto sobre la id .

Y dado que parece que está 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" } """