Rest Assured Bearer身份验证

时间:2017-03-14 15:25:16

标签: java api authentication rest-assured bearer-token

我是使用Rest Assured,Java和Api测试的新手,所以请温柔地对待我。当我使用放心来测试使用Bearer身份验证的api时,测试失败导致: -  java.net.ConnectException:连接被拒绝:连接

我知道问题可能与身份验证有关,但我不确定如何使用“Bearer”。我四处搜索并相信我需要使用我的用户名和密码进行初始请求。然后获取令牌以用于承载认证。 有人可以通过一个非常简单的例子来帮助我做到这一点吗?

我的代码是

import com.jayway.restassured.RestAssured;
import static com.jayway.restassured.RestAssured.*;
import static org.hamcrest.Matchers.hasItem;

@BeforeTest
    public void setUp() {
        RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
        RestAssured.authentication =   preemptive().basic("username","password");

}

@Test
public void successfulTest() {
    given()
            .contentType("application/json; charset=UTF-8");

    when().

            get("http://mydomain/testpath/Id=2").
    then().
            statusCode(200);

}

4 个答案:

答案 0 :(得分:3)

Response response =
      given()
          .headers(
              "Authorization",
              "Bearer " + bearerToken,
              "Content-Type",
              ContentType.JSON,
              "Accept",
              ContentType.JSON)
          .when()
          .get(url)
          .then()
          .contentType(ContentType.JSON)
          .extract()
          .response();

答案 1 :(得分:1)

为了获得不记名令牌,您可以使用以下代码授权您的请求:

PreemptiveBasicAuthScheme authScheme = new PreemptiveBasicAuthScheme();
authScheme.setUserName("login");
authScheme.setPassword("password");
RestAssured.authentication = authScheme;

获取令牌后,按照以下方式发送请求:

response = given().auth().oauth2(token).get("http://mydomain/testpath/Id=2");

答案 2 :(得分:0)

My Cucumber步骤定义如下:

LOCATION

很大程度上取决于您的端点的编码方式。

当我想学习这种事情的时候,我会去找到有保障的examples并进行搜索。

例如

Here

答案 3 :(得分:0)

如果错误是“拒绝连接”,则听起来更像是网络问题,而不是身份验证。基本上,您还没有达到使用该服务验证客户端身份的地步。 您可以检查服务是否在80以外的其他端口上运行。如果是这种情况,只需在发出请求之前提供端口即可:

given().port(your_port_number)

您可以使用更具可视化的rest客户端应用来尝试您的请求,以确保它确实有效,然后再将其放入代码中。 “邮递员”可能是一个很好的候选人。