请放心:如何将给定的值从一个端点传递到另一个端点?

Rest Assured: How do I pass the values given from one end point to another?

*新手放心

问题: 如何将端点 'A' 提供的值传递到端点 'B'?

我的场景:使用提供卷发的UIapi服务

  1. [端点 1] 我在 [GET] 中提供了一个用户名 user/signin.
  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"
}
  1. [端点 2] 我需要将会话 ID 和用户名 ID 传递给第二个端点,即 [GET] /user/verifyCode。 此端点需要以下内容:
    1.The 会话 ID(来自端点 1 的字符串)
    2.username id(来自端点 1 的字符串)
    3.An api 键

端点 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 user/sign 代码(适用于 GET user/signin)。需要让它为第 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");

}

您可以 运行 初始登录 API 首先调用并将响应中的 sessionId、用户名设置为 class 变量。然后在您想要的所有其他 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 注释。