Java 重启:我可以在配置类中指定oauth设置吗?
我正在使用java中的RestAssured库 我有以下配置类:Java 重启:我可以在配置类中指定oauth设置吗?,java,oauth,rest-assured,Java,Oauth,Rest Assured,我正在使用java中的RestAssured库 我有以下配置类: import io.restassured.RestAssured; import org.junit.BeforeClass; import static io.restassured.RestAssured.given; public class TestConfig { @BeforeClass public static v
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/";
}
}
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);
}
}
然后我有一个从config类继承的测试类:
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/";
}
}
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()).
我正在寻找一种解决方案,将身份验证部分添加到TestConfig类中,这样,我就不必每次重复代码了以下是我的解决方案:
@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 请尝试使用以下代码:
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;
}
}
我希望它能解决您的问题如何将
oauth
添加到requestSpecification
?我已根据您的建议更新了答案,谢谢@Jeff