What is Rest Assured?
REST Assured is a Java library for testing RESTful APIs. It is widely used to test JSON and XML based web applications. Furthermore, it fully supports all methods including the GET, PUT, POST, PATCH, and DELETE. REST Assured provides users with Domain Specific Language (DSL) to create powerful tests for REST APIs in an effective manner.
Rest Assured supports only REST Services and cannot support SOAP services.
Let me show you an example by creating a project for API testing using Rest Assured.
Prerequisites settings before creating Rest assured API testing project:
· Install Java in your system
· Install an IDE like Eclipse
· Maven must be installed
· Install TestNG plugins
The following steps will guide how to Create a project for API Testing
Step 1 : Open Eclipse
Step 2: Create a maven Project
Step3: Add dependencies in pom.xml
Step 4: Save Project
Step 5: Add Testing Plugin
Step 6: Create Tests
Step 7: Run and verify
Add the below dependencies to the POM.xml:
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>
Selecting The Appropriate Method
Here are the three HTTP methods that correspond to these actions.
GET Method : Read
Post Method : Create
Delete Method: Delete
Let’s see an example of GET , Post and Delete Method using Rest Assured
· Create a Maven Project
· Add Dependencies in pom.xml
· Then create a TestNG class
Request Type: GET
URI: https://dummy.restapiexample.com/api/v1/employees
After creating a TestNG class let’s write the Rest Assured API Automation code
Step: 1 Let’s specify the base URI using the predefined class ResAssured.baseURI
Step: 2 Inorder to send the URI as GET request, we need to create a request object. We have predefined class in Rest assured as RequestSpecification
Step: 3 Using RestAssured.given() and httpRequest method we are sending the request to the server
Step: 4 Response object will send the request using the GET Method
The below code is used for GET method to validate the response.
Code Snippet
@Test
public void f()
{
//Specify base URI
RestAssured.baseURI="https://dummy.restapiexample.com/api/v1/employees;
//Request object
RequestSpecification httpRequest=RestAssured.given();
//Response object
Response response=httpRequest.request(Method.GET);
//print response in console window
String responseBody=response.getBody().asString();
System.out.println("Response Body is:" +responseBody);
//status code validation
int statusCode=response.getStatusCode();
System.out.println("Status code is: "+statusCode);
Assert.assertEquals(statusCode, 200);
//status line verification
String statusLine=response.getStatusLine();
System.out.println("Status line is:"+statusLine);
Assert.assertEquals(statusLine, "HTTP/1.1 200 OK");
}
}
The Response Body is shown in the below picture
STATUS CODE : 200
Status Line: HTTP/1.1 200 OK"
If the status code is 200 then the server has successfully processed the request.
Request Type: POST
URI: https://reqres.in/api/users?page=2
The below code is used for POST method to create a new record
After creating a TestNG class let’s write the Rest Assured API Automation code
Step: 1 Let’s specify the base URI using the predefined class ResAssured.baseURI
Step: 2 In Post method we need to send the request first inorder to get the response hence using Request object in the code
Step: 3 In Post method we need to send parameters like id, email id, first name and last name etc…to create a new entry or record
Step : 4 Body is in JSON format hence we are using JSONObject
Step: 5 Request payload sending along with post request we need to use requestParams.put
Step: 6 Inorder to specify the Content type we need to add the header
httpRequest.header("Content-Type","application/json")
Step: 7 Response object will send the request using POST Method
Creating the new record by sending the below parameters
Body:
{
“Id” : 13
“email”:”michael.lawson@reqres.in”
“first name”:”Michael”
“last name”:”Lawson”
“Avatar”:”https://reqres.in/img/faces/7-image.jpg"
}
Code:
@Test
public void f()
{
//Specify base URI RestAssured.baseURI="https://reqres.in/api/userspage=2";
//Request object(whenever you want to send request to the server)
RequestSpecification httpRequest=RestAssured.given();
//Request payload sending along with post request
JSONObject requestParams=new JSONObject();
requestParams.put("id",14);
requestParams.put("email","nicole.lawson@reqres.in");
requestParams.put("first_name","Nicole");
requestParams.put("last_name","Lawson");
requestParams.put("avatar","https://reqres.in/img/faces/7-image.jpg");
httpRequest.header("Content-Type","application/json");
httpRequest.body(requestParams.toJSONString());
// attach above data to the request
//Response object
Response response=httpRequest.request(Method.POST);
//print response in console window
String responseBody=response.getBody().asString();
System.out.println("Response Body is:"+responseBody);
//status code validation
int statusCode=response.getStatusCode();
System.out.println("Status code is: "+statusCode);
Assert.assertEquals(statusCode, 200);
}
}
The Response Body is shown in the picture below
STATUS CODE : 201
If the status code is 201 then it indicates Created success status response code and the request has succeeded and has led to the creation of a resource.
Request Type: DELETE
URI: https://reqres.in/api/users?page=2
The below code is used for DELETE method to delete a particular record
After creating a TestNG class let’s write the Rest Assured API Automation code
Step: 1 Let’s specify the base URI using the predefined class ResAssured.baseURI
Step: 2 In Delete method we need to send the request first inorder to get the response hence using Request object in the code
Step: 3 In Delete method we need to send parameters like id# to get the specific record to be deleted
Step : 4 Body is in JSON format hence we are using JSONObject
Step: 5 Request payload sending along with Delete request we need to use requestParams.put
Step: 6 Response object will send the request using Delete Method
Code Snippet:
@Test
public void f()
{
//Specify base URI
RestAssured.baseURI="https://reqres.in/api/users?page=2";
//Request object
RequestSpecification httpRequest=RestAssured.given();
//print response in console window//Request payload sending along with post request
JSONObject requestParams=new JSONObject();
requestParams.put("id",14);
httpRequest.header("Content-Type","application/json");
httpRequest.body(requestParams.toJSONString()); // attach above data to the request
//Response object
Response response=httpRequest.request(Method.DELETE);
String responseBody=response.getBody().asString();
System.out.println("Response Body is:" +responseBody);
//status code validation
int statusCode=response.getStatusCode();
System.out.println("Status code is: "+statusCode);
Assert.assertEquals(statusCode, 204);
}
}
The Response Body is shown in the picture below
STATUS CODE : 204
If the Status code is 204 then it indicates that the server has successfully fulfilled the request.
There are various methods in Rest Assured to do API testing. In this blog you have seen one of the method to perform GET, POST and DELETE for API testing using Rest Assured.
Hope this blog will be helpful to peform API testing using Rest Assured
very useful blog thanks for sharing :)