Будьте уверены: не можете десериализовать ответ JSON на его POJO - PullRequest
0 голосов
/ 19 июня 2019

У меня есть следующий возвращенный JSON из вызова REST для входа в Azure:

{
    "token_type": "Bearer",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1560857196",
    "not_before": "1560853296",
    "resource": "https://management.azure.com",
    "access_token": "d9f9s..." //I cut the value significantly here...
}

POJO, который я построил для него, выглядит следующим образом:

public class AzureLoginResponse {

    private String tokenType;
    private String expiresIn;
    private String extExpiresIn;
    private String expiresOn;
    private String notBefore;
    private String resource;
    private String accessToken; 

    //setters\getters

}

Когда я делаю это:

   @Given("^Azure Login Request Executed$")
    public void azureLoginExecuted() {

        RestAssured.baseURI = BASE_URI;

        Response response =
        given()  //Add x-www-form-urlencoded body params:
            .formParam(GRANT_TYPE_KEY, GRANT_TYPE_VALUE)
            .formParam(AUTO_TEAM_CLIENT_ID_KEY, AUTO_TEAM_CLIENT_ID_VALUE)
            .formParam(AUTO_TEAM_CLIENT_SECRET_KEY, AUTO_TEAM_CLIENT_SECRET_VALUE)
            .formParam(RESOURCE_KEY, RESOURCE_VALUE)
        .when()
            .post(AUTO_TEAM_TENANT_ID + RESOURCE); //Send the request along with the resource

        AzureLoginResponse azureLoginResponse = response.as(AzureLoginResponse.class);

    }

azureLoginResponse получает следующие данные:

azureLoginResponse = {AzureLoginResponse@3532} 
 tokenType = null
 expiresIn = null
 extExpiresIn = null
 expiresOn = null
 notBefore = null
 resource = "https://management.azure.com"
 accessToken = null

Итак, заполняется только свойство 'resource', тогда как тесты типа

assertThat(expires_in_val, greaterThan(min_expected_expires_in_val));

или

response.then().body("resource", equalTo(expected_resource));

пройти без проблем.

Пожалуйста, сообщите. Спасибо!

1 Ответ

1 голос
/ 19 июня 2019

Ваши ключи POJO не совпадают с ключами, приходящими в ответ, поэтому нулевое значение. Как вы можете видеть, ключи, приходящие в ответ, - это snake_case, а используемый в вашем POJO - camelCase.

...