Rest-assured why can't I send a post request from multiple POJO classes

Viewed 72

i have JSON :

  {
    "id": "string",
    "name": "string",
    "port": 0,
    "location": "string",
    "useCustomLocation": true,
    "inMemoryMode": true,
    "enabled": true,
    "active": true,
    "autoStartup": true,
    "partitions": [
      {
        "id": "string",
        "name": "string",
        "factorUser": {
          "username": "string",
          "password": "string",
          "admin": true,
          "perms": "string"
        },
        "users": [
          {
            "username": "string",
            "password": "string",
            "admin": true,
            "perms": "string"
          }
        ]
      }
    ]
  }

My pojo classes:

public class Root {
    private String id;
    private String name;
    private long port;
    private String location;
    private boolean useCustomLocation;
    private boolean inMemoryMode;
    private boolean enabled;
    private boolean active;
    private boolean autoStartup;

    private Partition[] partitions;

    //Getter and Setters simple variebles

    public Partition[] getPartitions() {
        return partitions;
    }

    public void setPartitions(Partition[] value) {
        this.partitions = value;
    }
}

Partition class:

public class Partition {
    private String id;
    private String name;

    private User factorUser;
    private User[] users;

      //Getter and Setters simple variebles

    public User getFactorUser() {
        return factorUser;
    }

    public void setFactorUser(User value) {
        this.factorUser = value;
    }

    public User[] getUsers() {
        return users;
    }

    public void setUsers(User[] value) {
        this.users = value;
    }
}

and the next two classes work similarly(FactorUser and User)

my Test:

public void postBaseData() {
    Root root = new Root();

    Response response = given()
            .contentType(ContentType.JSON)
            .log().all()
            .auth()
            .preemptive()
            .basic("login", "password")
            .body(root)
            .baseUri(BaseUrl + STORE_INSTANCE)
            .when()
            .post()
            .then()
            .extract().response();
    System.out.println(response.getBody().asString());
    Assert.assertEquals(200, response.statusCode());
}

Why is only part of the request sent to me? And therefore returning status code 400

Part of body which posted:

{
    "id": null,
    "name": null,
    "port": 0,
    "location": null,
    "useCustomLocation": false,
    "inMemoryMode": false,
    "enabled": false,
    "active": false,
    "autoStartup": false,
    "partitions": null
}

I understand that the error is somewhere in the initialization of nested classes, for example "partition", but I can not understand how to do it correctly.I asked a similar question with get, but for a long time I can’t figure out how to work with such complex json requests. I also tried the line: "private Partition[] partitions" changing to "private List<Partition> partitions" and etc... but I still can't send full json.

i don't use constructor because in POSTMAN i get 200 ok with empty fields

scr enter image description here

0 Answers
Related