- Project Overview
- Features
- Installation
- Configuration
- Usage
- Folder Structure
- Dependencies
- Reporting and Logs
- Contributing
- License
The restassured-api-learning-path is a Java-based API testing framework designed to automate REST API validations using RestAssured, TestNG, and Hamcrest. It supports comprehensive CRUD operations across multiple public APIs and includes structured logging, assertions, and POJO-based deserialization with Jackson. The framework leverages DataFaker to generate dynamic and localized test data, enhancing variability in test scenarios.
This framework includes test scenarios against the following public/mock APIs:
-
Zippopotam.us API
Provides postal code and location data for validating JSON structure and values.
π http://api.zippopotam.us -
GoRest API
User and comment management with full CRUD support.
π https://gorest.co.in/public/v2 -
Campus API (Mersys)
Simulates country/location management with role-based authentication.
π https://test.mersys.io -
Restful-Booker API
Designed to simulate hotel booking flows with authentication and full lifecycle actions (POST
,PUT
,PATCH
,DELETE
).
π https://restful-booker.herokuapp.com -
Reqres API
Allows testing of pagination, user creation, and BDD validations.
π https://reqres.in/api
For detailed test implementations, see Key Test Scenarios.
-
API Testing with RestAssured
Supports HTTP methods includingGET
,POST
,PUT
,PATCH
, andDELETE
for comprehensive API coverage. -
POJO Modeling
Enables object-oriented validation by deserializing JSON responses into clean, reusable Java POJO classes. -
Behavior-Driven Development (BDD)
Uses TestNG annotations and fluent RestAssured syntax to define test flows clearly and readably. -
Data Randomization with DataFaker
Integratesnet.datafaker
to generate realistic and localized test data dynamically. -
Reusable Specifications
UtilizesRequestSpecification
andResponseSpecification
to centralize request/response configurations. -
Token-Based Authentication
Handles authentication dynamically using tokens (e.g., for secured booking APIs). -
API Key Authentication
Supports header-based API key testing (e.g., for role-restricted endpoints like Campus API). -
Comprehensive Logging
Automatically logs URIs, request/response bodies, headers, and status codes to simplify debugging. -
Dependency Management with Maven
Ensures reliable builds and version control through Maven with clearly defined dependencies. -
Multi-API Integration
Implements test flows across five different public APIs to validate CRUD operations, auth flows, and data handling.
-
Clone the Repository:
git clone https://github.com/cihat-kose/restassured-api-learning-path.git
-
Import the Project in IntelliJ IDEA:
- Open IntelliJ IDEA.
- Select File > Open and choose the project folder.
- Ensure Maven auto-import is enabled to download dependencies.
-
Install Plugins (if required):
- TestNG and RestAssured support plugins in IntelliJ IDEA for enhanced IDE integration.
- TestNG.xml: Defines the suite structure and test class execution flow.
- pom.xml: Manages dependencies and configurations for the framework.
To run tests, use Maven or execute directly from IntelliJ IDEA.
mvn clean test
- Right-click on
TestNG.xml
and select Run to execute all tests. - Alternatively, right-click any test class or method to run specific tests.
-
_01_APITestIntro.java
Intro to basicGET
requests, response logging, JSON field validation, and assertions with Hamcrest. -
_02_APITestSpec.java
Demonstrates usage of reusable specifications withRequestSpecBuilder
andResponseSpecBuilder
. -
_03_APITestExtract.java
Focuses on extracting response data using.path()
and validating with TestNG assertions. -
_04_APITestPOJO.java
Shows how to deserialize JSON responses into custom POJO classes likeLocation
andPlace
. -
_05_Tasks.java
Collection of exercise-style test cases usingjsonplaceholder.typicode.com
with validation and POJO handling. -
_06_PathAndJSONPath.java
Explains and contrasts usage of.path()
vs.jsonPath()
in extracting nested JSON data and converting to Java objects. -
_07_GoRestUsersTest.java
Handles user creation, retrieval by ID, updating, and deletion using GoRest API. -
_08_GoRestCommentTest.java
Manages comments: creation, retrieval, update, and deletion. -
_09_CountryTest.java
Covers country creation, duplicate checks, updates, and deletions in the Campus API. -
_10_RestfulBookerAPITest.java
Tests hotel booking flows: token generation, booking creation, update (PUT & PATCH), retrieval, and deletion. -
_11_ReqresUserTest.java
Includes status code checks, BDD-style tests, and user creation with POST. -
_12_APIKeyTest.java
Demonstrates sending authenticated requests using API keys.
This project commonly encounters a variety of HTTP status codes in responses. Below is a summary of some frequently used status codes and their meanings:
cihat-kose/restassured-api-learning-path/
β
βββ src/
β βββ test/
β βββ java/
β β βββ model/ # POJO models for JSON response data
β β β βββ Country.java
β β β βββ Location.java
β β β βββ Place.java
β β β βββ ToDo.java
β β β βββ User.java
β β βββ _01_APITestIntro.java # Intro to basic API tests and assertions
β β βββ _02_APITestSpec.java # Reusable request/response specifications
β β βββ _03_APITestExtract.java # Extracting and asserting response data
β β βββ _04_APITestPOJO.java # Deserialization into POJOs
β β βββ _05_Tasks.java # Task-style practical API test cases
β β βββ _06_PathAndJSONPath.java # Path vs JSONPath comparison
β β βββ _07_GoRestUsersTest.java # GoRest: user CRUD
β β βββ _08_GoRestCommentTest.java # GoRest: comment CRUD
β β βββ _09_CountryTest.java # Campus API: country CRUD
β β βββ _10_RestfulBookerAPITest.java# Restful-Booker: full booking flow
β β βββ _11_ReqresUserTest.java # ReqRes: status & BDD testing
β β βββ _12_APIKeyTest.java # API Key authentication testing
β β
β
βββ TestNG.xml # TestNG suite configuration
β
βββ target/ # Build output (generated)
βββ images/ # Project images
β βββ HTTP_Status_Codes.png # HTTP status codes reference image
βββ pom.xml # Maven build configuration
βββ README.md # Project overview and structure
β οΈ This project uses Java 21 features (e.g., text blocks, modern APIs). Ensure your JDK version is 21 or above.
Dependencies are managed in pom.xml
. Key dependencies include:
- RestAssured: For making HTTP requests to test APIs.
- TestNG: For organizing and managing test execution.
- Hamcrest: For enhanced assertions in test validations.
- Jackson: For JSON serialization and deserialization.
- DataFaker: For generating realistic and localized fake test data.
- SLF4J (Simple Logging Facade for Java): For logging support.
This framework logs API requests and responses, which can be useful for debugging. Logs include:
- Request and Response Bodies: Automatically logged for all test methods.
- Status Codes and Headers: Available in logs to confirm correct responses.
Test results and logs are saved in the target
directory after test execution.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Commit your changes (
git commit -m 'Add new feature'
). - Push to the branch (
git push origin feature-branch
). - Open a Pull Request.
This project is licensed under the MIT License - see the LICENSE
file for details.