RestAssured。我可以在配置类中指定oauth设置吗?

问题描述 投票:0回答:1

我正在使用java中的RestAssured库。

我有下面的配置类。

        import io.restassured.RestAssured;
        import org.junit.BeforeClass;
        import static io.restassured.RestAssured.given;

        public class TestConfig {

        @BeforeClass
        public static void setup(){

            APICredentials ac = new APICredentials();
            RestAssured.baseURI = "https://api.twitter.com";
            RestAssured.basePath = "/1.1/";
            }
        }

然后我有一个测试类,它继承了config类。

    import org.junit.Test;
    import static io.restassured.RestAssured.*;
    import static org.hamcrest.CoreMatchers.equalTo;

    public class MyFirstTest extends TestConfig{

        @Test
        public void getUserInfo() {
            APICredentials ac = new APICredentials();
            given().
                    log().all().
                    auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret()).
            when().
                    get("/users/show.json?screen_name=DexisKenway").then().statusCode(200);
        }

    }

这个测试运行得很好,但我必须重复下面的代码 然而,我必须在每个测试中重复下面的代码。


    APICredentials ac = new APICredentials();
            given().
                    log().all().
                    auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret()).

我正在寻找一个解决方案,将认证部分添加到以下类中 测试配置 类,这样,我就不需要每次重复我的代码了。 这是我的解决方案。

@BeforeClass
public static void setup(){

    APICredentials ac = new APICredentials();
    RestAssured.baseURI = "https://api.twitter.com";
    RestAssured.basePath = "/1.1/";
    RestAssured.given().
                        log().all().
                        auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret());

}

但是.., 然后我的请求失败了,代码是400!

java oauth rest-assured
1个回答
1
投票

请用下面的代码试一下,希望能解决你的问题。

import io.restassured.builder.RequestSpecBuilder;
import io.restassured.specification.RequestSpecification;
import org.junit.BeforeClass;

public class TestConfig {

    @BeforeClass
    public static void setup(){

        APICredentials ac = new APICredentials();


        RequestSpecification requestSpecification = new RequestSpecBuilder()
                .setBaseUri("https://api.twitter.com")
                .setBasePath("/1.1/")
                .addHeader("Content-Type","application/json")
                .addHeader("Accept","application/json")
                .addFilter(new RequestLoggingFilter())
                .addFilter(new ResponseLoggingFilter())
                .build();
        requestSpecification.auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret());
        RestAssured.requestSpecification = requestSpecification;




    }
}

希望能解决你的问题

© www.soinside.com 2019 - 2024. All rights reserved.