gpt4 book ai didi

RestAssured oAuth2 http 状态码 401

转载 作者:行者123 更新时间:2023-12-03 13:23:52 25 4
gpt4 key购买 nike

我正在尝试使用 RestAssured 库和 Spring MVC REST oAuth2 安全端点实现集成测试。

这是我的测试:

@Test
public void testCreateDecision() throws Exception {
File createDecisionJsonFile = ResourceUtils.getFile(getClass().getResource("/json/decisions/create-decision.json"));

// @formatter:off
final String createDecisionRequest = FileUtils.readFileToString(createDecisionJsonFile)
.replace("{{name}}", "Test decision name")
.replace("{{description}}", "Test decision description");
// @formatter:on

String accessToken = getAccessToken("user", "user");

// @formatter:off
given()
.auth()
.oauth2(accessToken, OAuthSignature.HEADER)
.body(createDecisionRequest)
.contentType("application/json; charset=UTF-8")
.when()
.post(format("http://localhost:%d/api/v1.0/decisions/create", port))
.then()
.statusCode(200)
.contentType(ContentType.JSON)
.body("id", notNullValue())
.body("createDate", notNullValue());
// @formatter:on

}

accessToken 有效,但我不断收到 401 http 代码。
我的代码可能有什么问题?

最佳答案

我知道这是一篇旧帖子,但只是想记录下来以防其他人需要答案。
我能够使用以下格式实现:

首先检索 token (在我的情况下,我没有存储用户 token ,只是在每次测试之前获取它们)

// we need to get the oauth token before we can perform the request
private void authenticateUser(String username, String password) {

String response =
given()
.parameters("username", username, "password", password,
"grant_type", "password", "scope", "read write",
"client_id", "clientapp", "client_secret", "123456")
.auth()
.preemptive()
.basic("clientapp","123456")
.when()
.post("/oauth/token")
.asString();

JsonPath jsonPath = new JsonPath(response);
accessToken = jsonPath.getString("access_token");
}

他们在测试中使用了检索到的 token :
@Test
public void testGetUserDefaultUserOwner() {


authenticateUser(testData.user1.getLogin(), "1");

User user =
given()
.auth().oauth2(accessToken)
.contentType(ContentType.JSON)
.accept(ContentType.JSON)
.expect()
.log().all()
.statusCode(HttpStatus.OK.value())
.when()
.get(USER_RESOURCE, testData.user1.getId())
.as(User.class);

assertThat(user).isEqualTo(testData.user1);
}

我使用 Restassured 和 AssertJ 进行测试,使用 SpringBoot 和 OAuth2 进行 Rest API。

关于RestAssured oAuth2 http 状态码 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com