Frissités : Rest assured gyakorló feladat

Frissités : Rest assured gyakorló feladat
2022-03-21T16:24:25+01:00
2022-03-21T20:11:31+01:00
2022-10-15T21:21:02+02:00
WorkingClassHero
Sziasztok

Erre a korábbi kérdésemre

korabbi RestAssured kerdes

való hivatkozással, megpróbáltam felhasználni az téma végén adott curl parancsot POST műveletre a RestAssured környezetben. 
A POST hibakódja 

{"code":500,"type":"unknown","message":"something bad happened"}
Itt láttok valamilyen hibát a szintaktikámban ? A 3 macsaköröm helyett csak 1-et használtam, mert nem paracssorral, hanem Java-val futtatok. Ez most a teljes kódom, a feladat a fenti linkben van :

import io.restassured.RestAssured; import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; import org.testng.Assert; import org.testng.annotations.Test; import static io.restassured.RestAssured.given; import org.json.simple.JSONObject; public class TestCases { @Test public void getAvailablePets() { String url = "https://petstore.swagger.io/v2/pet/findByStatus?status=available"; given() .when() .get(url) .then() .assertThat() .statusCode(200); } @Test public void postNewAvailablePet() { String url = "https://petstore.swagger.io/v2"; RestAssured.baseURI = "https://petstore.swagger.io/v2"; JSONObject obj = new JSONObject(); obj.put ("id","0"); obj.put ("category","{'id':'0','name:string'}"); obj.put ("name","Bodri"); obj.put ("photoUrls","www.picture.com"); obj.put ("tags","[{'id:0','name':'string'}]"); obj.put ("status","available"); RequestSpecification request = RestAssured.given(); request .contentType("application/json" ) .accept("application/json") .body(obj.toJSONString()); Response response = request.post("/pet"); int statusCode = response.getStatusCode(); System.out.println(response.asString()); Assert.assertEquals(statusCode, 200); } @Test public void updateLastPetStatus() { String url = "https://petstore.swagger.io/v2/pet/"; RestAssured.baseURI = "https://petstore.swagger.io/v2"; JSONObject obj = new JSONObject(); obj.put ("id","9223372000668885684"); obj.put ("category","{id :0,name:string}"); obj.put ("name","tigris"); obj.put ("photoUrls","www.picture.com"); obj.put ("tags","[{id:0,name:string}]"); obj.put ("status","sold"); RequestSpecification request = RestAssured.given(); request .contentType("application/json" ) .accept("application/json") .body(obj.toJSONString()); Response response = request.put("/pet/"+"9223372000668885684"); int statusCode = response.getStatusCode(); System.out.println(response.asString()); Assert.assertEquals(statusCode, 200); } @Test public void deleteLastPet() { String url = "https://petstore.swagger.io/v2/pet/9223372000668883762"; given() .when() .delete(url) .then() .assertThat() .statusCode(200); } }
Mutasd a teljes hozzászólást!
Megvan a megoldás a POST-ra.

Nem szenvedek a .java állományon belül a struktura összeállításával, hanem egy fileba berakom a .jsont-t, és file olvasással kiolvasom a kodban : 

File file = new File....
Mutasd a teljes hozzászólást!

  • Szerintem a POST-nál itt van a probléma, miért nem helyes a 

    JSONObject obj = new JSONObject(); obj.put ("id",0); obj.put ("category","{'id':0,'name':'string'}"); obj.put ("name","Bodri"); obj.put ("photoUrls","["string"]"); obj.put ("tags","[{'id':0,'name':'string'}]"); obj.put ("status","available");
    ha a parancssorból a másik topikban megoldásként adott

    "{"""id""":0,"""category""":{"""id""":0,"""name""":"""string"""},"""name""":"""Bodri""","""photoUrls""":["""string"""],"""tags""":[{"""id""":0,"""name""":"""string"""}],"""status""":"""available"""}"
    helyes. Gyakorlatilag a parancsori paramétereket vittem át Java-ba
    Mutasd a teljes hozzászólást!
  • Ez se jó sajnos, 500-as hibakodot kapok :

    JSONObject obj = new JSONObject(); obj.put ("id",0); obj.put ("category","{'id':0,'name':"string"}"); obj.put ("name","Bodri"); obj.put ("photoUrls","["string"]"); obj.put ("tags","[{'id':0,'name':"string"}]"); obj.put ("status","available");
    Mutasd a teljes hozzászólást!
  • Próbáltam map-pel, azzal is 500-as a hiba kód : 

    Map<String, Object> map = new HashMap<String, Object>(); map.put ("id",0); map.put ("category","{"id":0,'name':"string"}"); map.put ("name","Bodri"); map.put ("photoUrls","["string"]"); map.put ("tags","[{"id":0,"name":"string"}]"); map.put ("status","available"); JSONObject obj = new JSONObject(map);
    Mutasd a teljes hozzászólást!
  • Itt
    trükk

    láttam egy trükköt, de még igy se jó.

    Ez most a struktura összeállitó kód, a link alapján, bár csak 1 helyen tudtam alkalmazni :

    JSONObject obj = new JSONObject(); JSONObject subObj = new JSONObject(); obj.put ("id",0); subObj.put("id",0); subObj.put("name","string"); obj.put("category",subObj); obj.put ("name","Bodri"); obj.put ("photoUrls","string"); obj.put ("tags","[{'id':0,'name':'string'}]"); obj.put ("status","available");
    Mutasd a teljes hozzászólást!
  • Megvan a megoldás a POST-ra.

    Nem szenvedek a .java állományon belül a struktura összeállításával, hanem egy fileba berakom a .jsont-t, és file olvasással kiolvasom a kodban : 

    File file = new File....
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd