2014-01-05 22 views
4

我想測試需要驗證的REST API,讓JSON響應之前需要驗證REST API。 例如。如果我想去休息API:http://192.168.xx.xx:9000/dashboards/all/list/m1/p1/sch1如何測試使用放心

然後

如果我尚未登錄,那麼這將重定向我登錄的HTML頁面,並登錄後,這將告訴我JSON輸出。

現在我想寫一個在Java中的安全代碼相同: 我不知道,這是否可以使用此登錄或不。

所以我寫了一個簡單的代碼相同::

public class TestNGSimpleTest1 { 

    @Test 
    public void testAdd() { 
      //expect(). 
      //statusCode(400). 
      //body("Status", equalTo("Success")). 
      //when(). 
      //get("http://localhost:9000/dashboards/all/list/m1/p1/sch1"); 
      //System.out.println("Response received is ::" +res); 
      Response res = get("http://localhost:9000/dashboards/all/list/m1/p1/sch1"); 
      assertEquals(200,res.getStatusCode()); 
      String json = res.asString(); 
      System.out.println("Response received is :: " +json); 
    } 

所以這裏不是得到JSON響應的,我得到的HTML源代碼頁面響應。

所以,我的問題是,如果可能的話,該怎麼辦登錄並獲得JSON響應。

在此先感謝。

+1

有關其他方面的信息,請參見[此鏈接](http://code.google.com/p/rest-放心/維基/使用#認證),它顯示如何進行基本或OAut認證或[此鏈接在這裏](http://code.google.com/p/rest-assured/issues/detail?id=87)需要搶先認證。 –

+0

其實,我也試過這個鏈接,但問題是它重定向的登錄頁面是一個html頁面..使用你的鏈接,這只是顯示HTML頁面仍然。 – undefined

+0

你使用什麼類型的認證?只是一個登錄頁面,其中包含一個支持數據庫調用,它會檢查輸入的用戶名和密碼 - 所以沒有基本的身份驗證或OAuth?這似乎相當奇怪,特別是對於基於REST的Web服務,它主要是爲了被應用程序而不是人類訪問(所以沒有在表單字段中輸入並單擊提交按鈕)。你使用什麼服務器框架? CXF,Restlet,...?您是否已經嘗試使用SoapUI連接到您的REST服務? –

回答

1

你可能尋找形式的驗證:

given().auth().form("username", "password"). .. 

可選方案,您需要提供FormAuthConfig的實例作爲第三個參數來描述你的HTML登錄頁面的樣子。

1

如果您正在使用從JIRA默認的身份驗證,然後搶先認證是你所需要的。以下是示例代碼。

RestAssured.baseURI = System.getProperty("baseurl"); 
PreemptiveBasicAuthScheme authScheme = new PreemptiveBasicAuthScheme(); 
authScheme.setUserName("admin"); 
authScheme.setPassword("admin"); 
RestAssured.authentication = authScheme; 

示例代碼將幫助您在發送每個請求之前執行身份驗證。

0

這種方法的偉大工程。除了提交登錄憑證外,它還可以同時驗證200狀態代碼

given().auth().basic(username, password).when().get("/uri/").then().statusCode(200);