2017-02-22 75 views
3

Мне нужно автоматизировать остальные API. API обеспечен весной безопасности.Как настроить cookie с запросом, используя остальную информацию?

Ниже приведен код для аутентификации:

Response response = given().auth() 
        .form(userName, password, FormAuthConfig.springSecurity().withLoggingEnabled(new LogConfig(captor, true))) 
        .post("/home/xyz.html"); 

      Assert.assertTrue("Error occurs", response.statusCode() == 302); 

      if (response.statusCode() == 302) { 
       Cookie cookie = response.getDetailedCookie("JSESSIONID"); 
       result.actualFieldValue = "User Authenticated: Session ID ->" + cookie.getValue(); 
       System.out.println("Cookie set : "+cookie.getValue()); 
       apiTestSessionID = cookie.getValue(); 
      } 

Журналы пользователей в систему и вернуть 302 состояния, означает redirection.I нашел печенье и установить в некоторой глобальной переменной.

Теперь я установить печенье с просьбой:

RequestSpecification reqSpecification = new RequestSpecBuilder().addCookie("JSESSIONID", AbstractBaseClass.apiTestSessionID).build(); 

      Map<String, String> parameters = new HashMap<String, String>(); 
      parameters.put("cstmrID", "000N0961"); 
      parameters.put("pageNumber", "1"); 
      parameters.put("pageSize", "10"); 
      parameters.put("sortColumnName", "FIELD_NM"); 
      parameters.put("sortDir", "asc"); 
      parameters.put("filterColumnName1", ""); 
      parameters.put("filterColumnName2", "USER_UPDT_EMAIL_ID"); 
      parameters.put("filterValue2", ""); 

      reqSpecification.queryParams(parameters); 

      Response response = given().spec(reqSpecification).when().get("/service/customerConfig").thenReturn(); 
      System.out.println(response.asString()); 

Но в ответ я получаю входа в страницу HTML. Я не могу понять, где я делаю неправильно.

Предположения:

  1. Поскольку с запросом на пост, 302, он возвращается, мне нужно перенаправить к следующему URL-адресу, и после этого выполнить получить запрос с куки.
  2. Это правильный способ установить cookie с запросом.
  3. Нужно ли устанавливать заголовки с запросом. Если да, то следующая информация заголовка. Нужно ли устанавливать все из них?

GET /example.com/abc.html HTTP/1.1 Host: example.com Подключение: Keep-Alive Cache-Control: макс возраста = 0 Upgrade-Незащищенные-запросы: 1 User- Агент: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/55.0.2883.87 Safari/537.36 Принять: текст/html, application/xhtml + xml, application/xml; q = 0.9 , изображение/WebP, /; д = 0,8 Accept-Encoding: GZIP, выкачать, SDCH Accept-Language: EN-US, ан, Q = 0,8 печенье: JSESSIONID = C70A69F1C60D93DC3F8AC564BDE3F4DE.lon2mcaqaapp002; __utma = 185291189.2055499590.1460104969.1460104969.1460618428.2

ответ

2

Я новичок в Отдыхайте Гарантированный тоже, но я только что написал подобное испытание.

Я предлагаю вам написать личное authenticate() метод:

private static String authenticate() { 
    given() 
     .auth() 
     .form(userName, password,FormAuthConfig.springSecurity().withLoggingEnabled(new LogConfig(captor, true))) 
    when() 
     .post("/home/xyz.html"). 
    thenReturn() 
     .getDetailedCookie("JSESSIONID"); 
} 

, а затем использовать куки в запросе:

given() 
    .cookie(authenticate()) 
when() 
    .get("/service/customerConfig"). 
thenReturn(); 

Но я не знаю, как вы проверить statusCode здесь ,

Также полезно использовать .log().all(), чтобы увидеть журналы.

0
import io.restassured.RestAssured; 
import io.restassured.http.ContentType; 
import io.restassured.http.Cookies; 

private Cookie cookie; 

@BeforeClass 
public void exampleOfLogin() { 
    String body = String.format("//json"); 
    cookies = RestAssured.given() 
      .contentType(ContentType.JSON) 
      .when() 
      .body(body) 
      .post("www.test_test.com") 
      .then() 
      .statusCode(200) 
      .extract() 
      .response() 
      .getDetailedCookies(); 
} 

@Test 
public void performActionsBasedOnCookies() { 
//set cookies before making a post request and check the returned status code 
    RestAssured.given() 
      .cookies(cookies) 
      .contentType(ContentType.JSON) 
      .when() 
      .post("www.test_url.com") 
      .then() 
      .statusCode(200); 
}