请放心:如何将给定的值从一个端点传递到另一个端点?
Rest Assured: How do I pass the values given from one end point to another?
*新手放心
问题: 如何将端点 'A' 提供的值传递到端点 'B'?
我的场景:(使用提供卷发的UIapi服务)
- [端点 1] 我在 [GET] 中提供了一个用户名 user/signin.
- 然后我得到以下响应
{
"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"
}
- [端点 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 注释。
*新手放心
问题: 如何将端点 'A' 提供的值传递到端点 'B'?
我的场景:(使用提供卷发的UIapi服务)
- [端点 1] 我在 [GET] 中提供了一个用户名 user/signin.
- 然后我得到以下响应
{
"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"
}
- [端点 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 注释。