Будьте уверены: как передать значения, полученные от одной конечной точки к другой? - PullRequest
0 голосов
/ 21 июня 2020

* Новичок в Rest Assured

Вопрос: Как передать значения, полученные от конечной точки «A», в конечную точку «B»?

Мой сценарий : ( с использованием службы API пользовательского интерфейса, которая предоставляет завитки )

  1. [ Конечная точка 1 ] Я указываю имя пользователя в [GET] пользователь / вход .
  2. Затем я получаю следующий ответ

{
  "session": "Need to pass this session Id which changes everytime for every signin",
  "challengeName": "CUSTOM_CHALLENGE",
  "challengeSentTo": "example@EMAIL.com",
  "username": "This id never changes"
}
[ Endpoint 2 ] Мне нужно передать идентификатор сеанса и идентификатор пользователя второй конечной точке, которая является [GET] / user / verifyCode . Для этой конечной точки требуется следующее:
1. идентификатор сеанса (строка из конечной точки 1)
2. идентификатор пользователя (строка из конечной точки 1)
3. ключ api

Curl для конечной точки 2:
curl -X GET "https://example.com/apiservice/m1/users/verifyCode" -H "accept: application/json" -H "session: id from GET user/signin" -H "username: id from GET user/signin" -H "X-API-KEY: api key needed"

Мой код для пользователя GET / входа (работает для пользователя GET / входа). Необходимо, чтобы это работало для шага 3

    public void getInitialAuthSignIn() {
            .given()
            .header("X-API-KEY", "apiKey in here")
            .queryParam("challengeMethod", "EMAIL")
            .header("alias", "example@EMAIL.com")
            .when()
            .log().all()
            .get(baseUri + basePath + "/users/signin");

}

1 Ответ

2 голосов
/ 21 июня 2020

Вы можете сначала запустить вызов API для входа и установить sessionId, имя пользователя из ответа как переменные класса. Затем используйте их во всех других вызовах API, которые захотите.

import io.restassured.path.json.JsonPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.given;

public class AuthResponseTest {

    private static final String baseUri = "https://ExampleApiService.com";
    private static final String basePath = "/apiservice/m1";
    private static final String verifyPath = "/users/verifyCode";
    private static final String usenameId = "fixed_id_never_changes";

    private String sessionId;
    private String userName;

    @BeforeMethod // Use the appropriate TestNG annotation here.
    public void getInitialAuthSignIn() {
        JsonPath jsonPath = given()
                .contentType("application/json")
                .header("X-API-KEY", "apiKey in here")
                .queryParam("challengeMethod", "EMAIL")
                .header("alias", "example@EMAIL.com")
                .when()
                .log().all()
                .get(baseUri + basePath + "/users/signin")
                .then()
                .extract()
                .jsonPath();

        this.sessionId = jsonPath.get("session");
        this.userName = jsonPath.get("username");
    }

    @Test
    public void testVerifyCode() {

        given()
                .header("X-API-KEY", "apiKey in here")
                .header("session", this.sessionId)
                .header("username", this.userName)
                .when()
                .log().all()
                .get(baseUri + basePath + "/users/verifyCode")
                .then()
                .extract()
                .response()
                .prettyPrint();
    }

}

Я использовал здесь аннотации TestNG.

...