RestAssured RestAPI automation testing Crash Course

Brijendra Rai - Aug 25 - - Dev Community

RestAssured library is used to automate RestAPIs.
Here is some key features of RestAssured which can revise your skills and may boast your code productivity with all new features.

Pre-requisites
Java 9+ and eclipse
TestNG
Maven

Dependencies
rest-assured
json-path
json
gson
testng
scribejava-api - to generate randon test data
json-schema-validator
xml-schema-validator

Static imports

io.restassured.RestAssured.*;
io.restassured.matcher.RestAssuredMatchers.*;
org.hamcrest.Matchers.*;

//or Json Schema
io.restassured.module.jsv.JsonSchemaValidator.*;
Enter fullscreen mode Exit fullscreen mode

Http requests types and automation structure
given()
prerequisite
content-type, set cookies, ad auth, add param, set headers info etc.
when()
request
get, post, put, delete
then()
validation
validate status code, extract response, extract headers cookies and response body

Session 1 - Basic examples of get, post, put, delete

package day1;

import org.testng.annotations.Test;

import io.restassured.config.JsonConfig;
import io.restassured.config.RestAssuredConfig;
import io.restassured.path.json.config.JsonPathConfig.NumberReturnType;

import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
import java.util.HashMap;

/*
given()
    prerequisite
        content-type, set cookies, ad auth, add param, set headers info etc.
when()
    request
        get, post, put, delete
then()
    validation
        validate status code, extract response, extract headers cookies and response body
*/

public class HTTPRequests {
    int id;

    @Test(priority = 1)
    void getUser() {
        given()
        .when()
            .get("https://reqres.in/api/users?page=2")
        .then()
            .statusCode(200)
            .body("page", equalTo(2))
            .log().all();
    }

    @Test(priority = 2)
    void createUser() {
        HashMap<String, String> data = new HashMap<String, String>();
        data.put("name", "Maikal");
        data.put("job", "Trainer");
        id = given()
                .config(RestAssuredConfig.config()
                        .jsonConfig(JsonConfig.jsonConfig().numberReturnType(NumberReturnType.BIG_DECIMAL)))
                .contentType("application/json")
                .body(data)
                .when()
                    .post("https://reqres.in/api/users").jsonPath()
                .getInt("id");
                // .then()
                // .statusCode(201)
                // .log().all();
        System.out.println("********* id= " + id);
    }

    @Test(priority = 3, dependsOnMethods = { "createUser" })
    void updateUser() {
        HashMap<String, String> data = new HashMap<String, String>();
        data.put("name", "Maikal Kumar");
        data.put("job", "Trainer");

        given()
            .contentType("application/json")
            .body(data)
        .when()
            .put("https://reqres.in/api/users/" + id)
        .then()
            .statusCode(200).log().all();
    }

    @Test(priority = 4, dependsOnMethods = { "createUser" })
    void deleteUser() {
        given()
        .when()
            .delete("https://reqres.in/api/users/" + id)
        .then()
            .statusCode(204).log().all();
    }
}

Enter fullscreen mode Exit fullscreen mode

Session 2 - Creating Post Request Payloads in Multiple Ways

How many ways we create request body
1) Post request body using HashMap (not recomemded)
2) Post request body using using org.json (not recomemded)
3) Post request body using using POJO
4) Post request body using using external json file

package day2;

import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashMap;

import org.json.JSONObject;
import org.json.JSONTokener;
import org.testng.annotations.Test;

import day2.pojo.Place;
import io.restassured.RestAssured;
/*
 How many ways we create request body
 1) Post request body using HashMap   (not recomemded)
 2) Post request body using using org.json   (not recomemded)
 3) Post request body using using POJO
 4) Post request body using using external json file

 * */

public class DiffWaysToCreateRequestBody {
    // 1) Post request body using HashMap (not recommended)
    //@Test
    void testPostusingHashMap() {
        RestAssured.baseURI = "https://rahulshettyacademy.com";

        HashMap<String, Object> data = new HashMap<String, Object>();

        HashMap<String, String> location = new HashMap<String, String>();
        location.put("lat", "-38.383494");
        location.put("lng", "33.427362");

        data.put("location", location);
        data.put("accuracy", 50);
        data.put("name", "Frontline House");
        data.put("phone_number", "(+91) 987 654 3210");
        data.put("address", "29, side layout, cohen 09");

        String types[] = { "shoe park", "shop", "sandles" };
        data.put("types", types);

        data.put("website", "https://google.com");
        data.put("language", "French-IN");

        String response = given()
                            .log().all()
                            .queryParam("key", "qaclick123")
                            //.header("Content-Type", "application/json") //use anyone
                            .contentType("application/json")
                            .body(data)
                    .when()
                        .post("maps/api/place/add/json")
                    .then()
                        .statusCode(200)
                        .body("scope", equalTo("APP"))
                        .header("server", "Apache/2.4.52 (Ubuntu)")
                    .extract().response().asString();
        System.out.println("response: " + response);
    }

    // 2) Post request body using org.json library
    /*
     * Prerequisite library to add 
     * <dependency> 
     *  <groupId>org.json</groupId>
     *  <artifactId>json</artifactId> 
     *  <version>20230227</version> 
     * </dependency>
     * 
     */
    //@Test
    public void testPostUsingJsonLibrary() {
        RestAssured.baseURI = "https://rahulshettyacademy.com";

        HashMap<String, String> location = new HashMap<String, String>();
        location.put("lat", "-38.383494");
        location.put("lng", "33.427362");

        JSONObject data = new JSONObject();
        data.put("location", location);
        data.put("accuracy", 50);
        data.put("name", "Frontline House");
        data.put("phone_number", "(+91) 987 654 3210");
        data.put("address", "29, side layout, cohen 09");
        String types[] = { "shoe park", "shop", "sandles" };
        data.put("types", types);
        data.put("website", "https://google.com");
        data.put("language", "French-IN");

        System.out.println("request body data: " + data.toString());

        String response = 
                given()
                    .log().all()
                    .queryParam("key", "qaclick123")
                    .header("Content-Type", "application/json")
                    .contentType("application/json")
                    .body(data.toString())
                .when()
                    .post("maps/api/place/add/json")
                .then()
                    .statusCode(200)
                    .body("scope", equalTo("APP"))
                    .header("server", "Apache/2.4.52 (Ubuntu)")
                .extract()
                    .response().asString();

        System.out.println("response: " + response);
    }

    // 3) Post request body using POJO class
    //@Test
    public void testPostUsingPOJOClass() {
        RestAssured.baseURI = "https://rahulshettyacademy.com";
        Place data = new Place();
        HashMap<String, String> location = new HashMap<String, String>();
        location.put("lat", "-38.383494");
        location.put("lng", "33.427362");

        data.setLocation(location);
        data.setAccuracy(50);
        data.setName("Frontline House");
        data.setPhone_number("(+91) 987 654 3210");
        data.setAddress("29, side layout, cohen 09");

        String types[] = { "shoe park", "shop", "sandles" };
        data.setTypes(types);
        data.setWebsite("https://google.com");
        data.setLanguage("French-IN");

        System.out.println("data: " + data.toString());

        String response = 
                given()
                    .log().all()
                    .queryParam("key", "qaclick123")
                    .header("Content-Type", "application/json")
                    .contentType("application/json")
                    .body(data)
                .when()
                    .post("maps/api/place/add/json")
                .then()
                    .statusCode(200)
                    .body("scope", equalTo("APP"))
                    .header("server", "Apache/2.4.52 (Ubuntu)")
                .extract()
                    .response().asString();

        System.out.println("response: " + response);
    }

    // 4) Post request body using using external json file
    @Test
    public void testPostUsingExternalJsonFile() throws FileNotFoundException {
        RestAssured.baseURI = "https://rahulshettyacademy.com";
        FileReader fr = new FileReader(new File(".//place.json"));
        JSONTokener jt = new JSONTokener(fr);
        JSONObject data = new JSONObject(jt);

        System.out.println("data: " + data.toString());

        String response = 
                given()
                    .log().all()
                    .queryParam("key", "qaclick123")
                    .header("Content-Type", "application/json")
                    .contentType("application/json")
                    .body(data.toString())
                .when()
                    .post("maps/api/place/add/json")
                .then().statusCode(200)
                .body("scope", equalTo("APP"))
                .header("server", "Apache/2.4.52 (Ubuntu)")
                .extract()
                    .response().asString();

        System.out.println("response: " + response);
    }

}

Enter fullscreen mode Exit fullscreen mode

Place.java

package day2.pojo;

import java.util.Arrays;
import java.util.HashMap;

public class Place {
    HashMap<String, String> location;
    int accuracy;
    String name;
    String phone_number;
    String address;
    String[] types;
    String website;
    String language;



    public HashMap<String, String> getLocation() {
        return location;
    }
    public void setLocation(HashMap<String, String> location) {
        this.location = location;
    }
    public int getAccuracy() {
        return accuracy;
    }
    public void setAccuracy(int accuracy) {
        this.accuracy = accuracy;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone_number() {
        return phone_number;
    }
    public void setPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String[] getTypes() {
        return types;
    }
    public void setTypes(String[] types) {
        this.types = types;
    }
    public String getWebsite() {
        return website;
    }
    public void setWebsite(String website) {
        this.website = website;
    }
    public String getLanguage() {
        return language;
    }
    public void setLanguage(String language) {
        this.language = language;
    }
    @Override
    public String toString() {
        return "Place [location=" + location + ", accuracy=" + accuracy + ", name=" + name + ", phone_number="
                + phone_number + ", address=" + address + ", types=" + Arrays.toString(types) + ", website=" + website
                + ", language=" + language + "]";
    }


}

Enter fullscreen mode Exit fullscreen mode

Json File

 {
    "location": {
        "lat": -38.383494,
        "lng": 33.427362
    },
    "accuracy": 50,
    "name": "Frontline house",
    "phone_number": "(+91) 983 893 3937",
    "address": "29, side layout, cohen 09",
    "types": [
        "shoe park",
        "shop"
    ],
    "website": "http://google.com",
    "language": "French-IN"
}
Enter fullscreen mode Exit fullscreen mode

Session 3 - Path and Query Parameter, Cookies, Headers, logs, read values from properties files

Path and Query Parameter
https://reqres.in/api/users?page=2
here
https://reqres.in/api/ Domain
users Path
page=2 parameter

package day3;

import static io.restassured.RestAssured.*;
import org.testng.annotations.Test;

import io.restassured.RestAssured;

public class PathAndQueryParameters {

    @Test
    public void testQueryAndPathParameters()
    {
        RestAssured.baseURI = "https://reqres.in";
        //https://reqres.in/api/users?page=2&id=5
        given()
            .pathParam("mypath", "users")   //path parameter
            .queryParam("page", 2)          //query parameter
            .queryParam("id", 5)            //query parameter
        .when()
            .get("/api/{mypath}")
        .then()
            .statusCode(200)
            .log().all();
    }
}
Enter fullscreen mode Exit fullscreen mode

Get Cookies Demo program

package day3;
import static io.restassured.RestAssured.*;
import static io.restassured.matcher.RestAssuredMatchers.*;
import static org.hamcrest.Matchers.*;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.testng.annotations.Test;

import api.endpoints.UserEndPoint;
import io.restassured.response.Response;

public class CookiesDemo {
    public Logger logger= LogManager.getLogger(this.getClass());
    @Test
    public void testCookies()
    {
        String geturl = "https://www.google.com";
        logger.info("getting cookes from google.com");
        given()
        .when().get(geturl)
        .then()
        .cookie("AEC", "AVYB7co-s8cFbPF7m504V84fGzqmyDyf3judwNLRSbPIvipOjyMLCdO9cg")
        .log().all();
        logger.info("cookies collected");
    }

    @Test
    public void getCookiesInfo()
    {
        String geturl = UserEndPoint.getUrl().getString("googleurl");

        Response response = given()
        .when()
            .get(geturl);
        //get single cookie info
        String cookieValue = response.getCookie("AEC");
        System.out.println("AEC: "+ cookieValue);

        //get all cookies info
        Map<String, String> cookies = response.getCookies();
        for(Entry entry : cookies.entrySet()) {
            System.out.println(entry.getKey()+" : "+entry.getValue());
        }
        logger.info("cookies collected in method 2");
    }

}

Enter fullscreen mode Exit fullscreen mode

Get headers

package day3;
import static io.restassured.RestAssured.*;
import org.testng.annotations.Test;

import io.restassured.http.Header;
import io.restassured.http.Headers;
import io.restassured.response.Response;

public class HeadersDemo {

    //@Test(priority = 1)
    public void testHeaders() {
        baseURI = "https://www.google.com/";
        given()
        .when()
            .get()
        .then()
            .header("Content-Type", "text/html; charset=ISO-8859-1")
            .and()
            .header("Content-Encoding", "gzip")
            .and()
            .header("Server", "gws")
            .log().all();   
    }


    @Test(priority = 1)
    public void getHeaders() {
        baseURI = "https://www.google.com/";
        Response response =  given()
        .when()
            .get()
        ;
        //Get single header info
        String headerValue = response.getHeader("Server");
        System.out.println("Header server :"+headerValue);

        //get all headers
        //this approach is not recommended as log().all() print all headers in the response
        Headers headers= response.getHeaders();
        for(Header header : headers) {
            System.out.println(header.getName() +" : "+ header.getValue());
        }
    }

}

Enter fullscreen mode Exit fullscreen mode

Logger of restassured

package day3;

import static io.restassured.RestAssured.given;

import org.testng.annotations.Test;

public class LoggingDemo {
    @Test
    public void testLogs() {
        given()
        .when()
            .get("https://reqres.in/api/users?page=2")
        .then()
            //.log().body()
            //.log().headers()
            //.log().cookies()
            .log().everything();
    }
}

Enter fullscreen mode Exit fullscreen mode

Read values from properties file
Create a properties file ie routes.properties in src/test/resources folder. provide all route url as below

googleurl=https://www.google.com
Enter fullscreen mode Exit fullscreen mode

Now create a class to load and read this properties file
ie

package api.endpoints;

import java.util.ResourceBundle;

public class UserEndPoint {

    //method created for getting URL's from properties file
    public static ResourceBundle getUrl() {
        ResourceBundle routes = ResourceBundle.getBundle("routes");//Load properties file
        return routes;
    }
}

Enter fullscreen mode Exit fullscreen mode

user this class and get properties values

package day3;

import static io.restassured.RestAssured.given;

import org.testng.annotations.Test;

import api.endpoints.UserEndPoint;

public class PropertiesFileReader {
    @Test
    public void testReadUrlFromPropertyFile()
    {
        String geturl = UserEndPoint.getUrl().getString("googleurl");
        given()
        .when().get(geturl)
        .then()
        .cookie("AEC", "Ackid1SBDMpV34YNWmBdiKiQGDDM646yVwBpWJyFY7uNdmcHhb3-EpX_OTs")
        .log().all();
    }
}

Enter fullscreen mode Exit fullscreen mode

Session 4 - Parsing Response Data, Serialization and deserialization, Authentication

package day4;

import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasXPath;

import org.json.JSONObject;

import static org.hamcrest.Matchers.*;

import org.testng.annotations.Test;

import io.restassured.response.Response;

public class ParsingJSONResponseData {
    @Test(priority = 1)
    void parseResponseBody() {
        Response response =  null;
        given()
        .when()
            .get("https://reqres.in/api/users?page=2")
        .then().log().all()
            .body("page", equalTo(2))
            .body("per_page", equalTo(6))
            .body("total", equalTo(12))
            .body("data[0].id", equalTo(7))
            .body("data[0].email", equalTo("michael.lawson@reqres.in"))
            .body("data[0].first_name", equalTo("Michael"));
    }
    @Test(priority = 1)
    void parseResponseJson() {
        String json = given()
        .when()
            .get("https://reqres.in/api/users?page=2").asString();
        System.out.println("JSONObject: "+json);
        JSONObject jsObject = new JSONObject(json);
        Object data = jsObject.get("data");
        System.out.println("data: "+data.toString());
        }
}

Enter fullscreen mode Exit fullscreen mode

File upload and download

package Day5;

import java.io.File;

import org.testng.annotations.Test;

import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class UploadFile {

    @Test
    public void singleFileUpload()
    {
        File myfile = new File("C:\\AutomationPractice\\Test1.txt");

        given()
            .multiPart("file",myfile)
            .contentType("multipart/form-data")
        .when()
            .post("http://localhost:8080/uploadFile")
        .then()
            .statusCode(200)
            .body("fileName", equalTo("Test1.txt"))
            .log().all();
    }
    @Test
    public void multipleFileUpload()
    {
        File myfile1 = new File("C:\\AutomationPractice\\Test1.txt");
        File myfile2 = new File("C:\\AutomationPractice\\Test2.txt");

        given()
            .multiPart("files",myfile1)
            .multiPart("files",myfile2)
            .contentType("multipart/form-data")
        .when()
            .post("http://localhost:8080/uploadMultipleFiles")
        .then()
            .statusCode(200)
            .body("[0].fileName", equalTo("Test1.txt"))
            .body("[1].fileName", equalTo("Test2.txt"))
            .log().all();
    }

    @Test
    public void multipleFileUpload1()//not work for all kind of api
    {
        File myfile1 = new File("C:\\AutomationPractice\\Test1.txt");
        File myfile2 = new File("C:\\AutomationPractice\\Test2.txt");

        File fileArr[] = {myfile1, myfile2};
        given()
            .multiPart("files",fileArr)
            .contentType("multipart/form-data")
        .when()
            .post("http://localhost:8080/uploadMultipleFiles")
        .then()
            .statusCode(200)
            .body("[0].fileName", equalTo("Test1.txt"))
            .body("[1].fileName", equalTo("Test2.txt"))
            .log().all();
    }

    @Test
    void fileDownload() {
        given()
        .when()
            .get("http://localhost:8080/downloadFile/Test1.txt")
        .then()
            .statusCode(200)
            .log().body();
    }



}

Enter fullscreen mode Exit fullscreen mode

Serialization and deserialization

package day6;

import java.util.HashMap;

import org.testng.annotations.Test;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import day2.pojo.Place;

//Pojo  ----> JSON Object ----> Pojo
public class SerializationDeserialization {

    //@Test
    public void convertPojoToJson() throws JsonProcessingException
    {
        //created java object using pojo class
        Place data = new Place();
        HashMap<String, String> location = new HashMap<String, String>();
        location.put("lat", "-38.383494");
        location.put("lng", "33.427362");

        data.setLocation(location);
        data.setAccuracy(50);
        data.setName("Frontline House");
        data.setPhone_number("(+91) 987 654 3210");
        data.setAddress("29, side layout, cohen 09");

        String types[] = { "shoe park", "shop", "sandles" };
        data.setTypes(types);
        data.setWebsite("https://google.com");
        data.setLanguage("French-IN");

        //convert java object -->json object
        ObjectMapper objMapper = new ObjectMapper();
        String jsonData = objMapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);
        System.out.println(jsonData);   
    }
    @Test
    public void convertJsonToPojo() throws JsonProcessingException
    {
        String jsondata = "{\r\n"
                + "  \"location\" : {\r\n"
                + "    \"lng\" : \"33.427362\",\r\n"
                + "    \"lat\" : \"-38.383494\"\r\n"
                + "  },\r\n"
                + "  \"accuracy\" : 50,\r\n"
                + "  \"name\" : \"Frontline House\",\r\n"
                + "  \"phone_number\" : \"(+91) 987 654 3210\",\r\n"
                + "  \"address\" : \"29, side layout, cohen 09\",\r\n"
                + "  \"types\" : [ \"shoe park\", \"shop\", \"sandles\" ],\r\n"
                + "  \"website\" : \"https://google.com\",\r\n"
                + "  \"language\" : \"French-IN\"\r\n"
                + "}";

        ObjectMapper objMapper = new ObjectMapper();
        Place place = objMapper.readValue(jsondata, Place.class);
        System.out.println(place.getAddress());
    }
}

Enter fullscreen mode Exit fullscreen mode

Authentication

package day7;

import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

public class Authentication {
    //@Test
    public void testBasicAuthentication() {
        given()
            .auth().basic("postman", "password")
        .when()
            .get("https://postman-echo.com/basic-auth")
        .then()
            .statusCode(200)
            .body("authenticated", equalTo(true))
            .log().all();
    }

    //@Test
    public void testDigestAuthentication() {
        given()
            .auth().digest("postman", "password")
        .when()
            .get("https://postman-echo.com/basic-auth")
        .then()
            .statusCode(200)
            .body("authenticated", equalTo(true))
            .log().all();
    }
    //@Test
    public void testPreemptiveAuthentication() {
        given()
            .auth().preemptive().basic("postman", "password")
        .when()
            .get("https://postman-echo.com/basic-auth")
        .then()
            .statusCode(200)
            .body("authenticated", equalTo(true))
            .log().all();
    }

    //@Test
    void testBearerTokenAuthentication()
    {
        String bearerToken = "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";
        given()
            .headers("Authorization", "Bearer "+ bearerToken)
        .when()
        .get("https://api.github.com/user/repos")
    .then()
        .statusCode(200)
        .log().all();
    }

    //@Test
    void testOAuth1Authentication() {
        given()
            .auth().oauth("consumerKey", "consumerSecret", "accessToken", "tokenSecret")
        .when()
            .get("url")
        .then()
            .statusCode(200)
            .log().all();
    }
    //@Test
    void testOAuth2Authentication() {
        given()
            .auth().oauth2("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")
        .when()
            .get("https://api.github.com/user/repos")
        .then()
            .statusCode(200)
            .log().all();
    }

    @Test
    void testApiKeyAuthentication() {
        given()
            .queryParam("appid", "55e70390cce0987757f9cc1f09e40d71")
        .when()
            .get("http://api.openweathermap.org/data/2.5/air_pollution?lat=50&lon=50")
        .then()
            .statusCode(200)
            .log().all();
    }

}

Enter fullscreen mode Exit fullscreen mode

Pom.xml i used for all above examples

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>RestAssuredTraining</groupId>
    <artifactId>RestAssuredTraining</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <pluginManagement>
            <plugins>
                <!-- this required to run our app from command prompt of
                jenkins-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.2.3</version>
                    <configuration>
                        <!-- put your configurations here -->
                        <suiteXmlFiles>
                            <suiteXmlFile>testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.12.1</version>

                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <dependencies>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>
        <!-- json-path is included default if you are importing rest-assured dependency -->
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>json-path</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.7.0</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20230227</version>
        </dependency>


        <!--
        https://mvnrepository.com/artifact/com.github.scribejava/scribejava-apis -->
        <dependency>
            <groupId>com.github.scribejava</groupId>
            <artifactId>scribejava-apis</artifactId>
            <version>5.3.0</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.github.javafaker</groupId>
            <artifactId>javafaker</artifactId>
            <version>1.0.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
        <dependency>
            <groupId>com.aventstack</groupId>
            <artifactId>extentreports</artifactId>
            <version>5.0.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.2</version>
        </dependency>

    </dependencies>
</project>
Enter fullscreen mode Exit fullscreen mode

references https://github.com/rest-assured/rest-assured/wiki/Usage#example-1---json

. .
Terabox Video Player