I need to automate the rest API. The API is secured with Spring security.
Below is the code to authenticate :
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();
}
The user logs in and return 302 status, means redirection.I found the cookie and set in some global variable.
Now, i set the cookie with the request :
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());
But in response i get the login page HTML. I am not able to understand where i am doing wrong.
Assumptions :
GET /example.com/abc.html HTTP/1.1 Host: example.com Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8 Cookie: JSESSIONID=C70A69F1C60D93DC3F8AC564BDE3F4DE.lon2mcaqaapp002; __utma=185291189.2055499590.1460104969.1460104969.1460618428.2
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With