Suppose you have a request payload (JSON or XML) in a file and you required to directly send that file as a payload to request in stead of reading it first and then passing. Sending file as a payload directly is a good idea when you have static payloads or minimal modification.
“body()” method of RequestSpecification interface is a overloaded method to allow you to pass payload in different ways. We will use body() method which accepts “File” as argument. Javadoc is below:-
Sending a .json file as a payload
Step 1:- Create a .json file and write payload in that. Keep the file in “src/test/resources” folder.
Step 2 :- Create a File in Java using “File” and pass to body() method.
package DifferentWaysOfPassingPayloadToRequest;
import java.io.File;
import org.hamcrest.Matchers;
import org.testng.annotations.Test;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
public class PassFileAsPayload {
@Test
public void passFileAsPayload()
{
// Creating a File instance
File jsonDataInFile = new File("src/test/resources/Payloads/AuthPayload.json");
//GIVEN
RestAssured
.given()
.baseUri("https://restful-booker.herokuapp.com/auth")
.contentType(ContentType.JSON)
.body(jsonDataInFile)
// WHEN
.when()
.post()
// THEN
.then()
.assertThat()
.statusCode(200)
.body("token", Matchers.notNullValue())
.body("token.length()", Matchers.is(15))
.body("token", Matchers.matchesRegex("^[a-z0-9]+$"));
}
}
Sending a .xml file as a payload
Step 1:- Create a .xml file and write payload in that. Keep the file in “src/test/resources” folder.
Step 2:- Create a File in Java using “File” and pass to body() method.
@Test
public void passXMLFileAsPayload()
{
// Creating a File instance
File jsonDataInFile = new File("src/test/resources/Payloads/AuthPayload.xml");
//GIVEN
RestAssured
.given()
.baseUri("https://restful-booker.herokuapp.com/auth")
// Since I am passing payload as xml. Anyway it is optional as Rest Assured automatically identifies.
.contentType(ContentType.XML)
.body(jsonDataInFile)
// WHEN
.when()
.post()
// THEN
.then()
.assertThat()
.statusCode(200);
}