# sidmlv43/restful-reads-api-testing architecture

> Architecture diagram of the GitHub repository sidmlv43/restful-reads-api-testing, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sidmlv43/restful-reads-api-testing
- Repository: https://github.com/sidmlv43/restful-reads-api-testing

## Overview

Restful Reads is a Java REST Assured/TestNG API automation framework. Its main workflow is to run API tests with an isolated role-specific user session, invoke service-layer requests against the Restful Reads API, then assert responses and report results. The graph includes documented data-driven testing, schema validation, retries, and reporting; some of those links are omitted where implementation wiring was not sampled.

Main entry points: [`src/main/java/com/restfulReads/services/base/BaseService.java`](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/base/BaseService.java) (Shared request setup), [`src/test/java/com/restfulReads/tests/BookServiceTest.java`](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/BookServiceTest.java) (Book tests), [`src/main/java/com/restfulReads/services/BookService.java`](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/BookService.java) (Book service), [`src/test/java/com/restfulReads/tests/AuthTest.java`](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/AuthTest.java) (Auth tests)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Test execution"]
  node_testng(("TestNG runner"))
  node_auth_tests["Auth tests<br/>[AuthTest.java]"]
  node_book_tests["Book tests"]
  node_journey_tests["User journeys"]
  node_data_providers["Data providers"]
end

subgraph group_identity["User isolation"]
  node_user_listener["User context listener"]
  node_user_pool["Role user pools<br/>[UserPool.java]"]
  node_pool_init["Pool initializer"]
  node_session["Thread-local session"]
end

subgraph group_client["API client"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_book_service["Book service<br/>[BookService.java]"]
  node_cart_service["Cart service<br/>[CartService.java]"]
  node_other_services["Other API services"]
  node_base_service["Shared request setup<br/>[BaseService.java]"]
  node_config["Environment config<br/>[ConfigManager.java]"]
  node_query_params["Book query builder"]
end

subgraph group_results["Validation and reporting"]
  node_assertions["Custom assertions"]
  node_schema_validation["JSON schema checks"]
  node_retry["Retry handling<br/>[RetryAnalyzer.java]"]
  node_extent_filter["Traffic logging filter"]
  node_extent_manager["Extent reporting<br/>[ExtentManager.java]"]
  node_extent_listener["Report listener"]
end

node_api{{"Restful Reads API"}}

node_testng -->|"runs"| node_auth_tests
node_testng -->|"runs"| node_book_tests
node_testng -->|"runs"| node_journey_tests
node_user_listener -->|"leases user"| node_user_pool
node_pool_init -->|"initializes"| node_user_pool
node_user_listener -->|"sets session"| node_session
node_auth_tests -->|"calls"| node_auth_service
node_book_tests -->|"calls"| node_book_service
node_journey_tests -->|"exercises"| node_cart_service
node_journey_tests -->|"exercises"| node_other_services
node_auth_service -->|"uses requests"| node_base_service
node_book_service -->|"uses requests"| node_base_service
node_cart_service -->|"uses requests"| node_base_service
node_base_service -->|"gets base URL"| node_config
node_base_service -->|"gets token"| node_session
node_base_service -->|"adds filter"| node_extent_filter
node_auth_service -->|"sends auth requests"| node_api
node_book_service -->|"sends book requests"| node_api
node_cart_service -->|"sends cart requests"| node_api
node_other_services -.->|"sends requests"| node_api
node_book_service -->|"applies query map"| node_query_params
node_auth_tests -->|"checks responses"| node_assertions
node_book_tests -->|"checks responses"| node_assertions
node_assertions -.->|"validates schemas"| node_schema_validation
node_testng -.->|"retries failures"| node_retry
node_extent_filter -->|"logs traffic"| node_extent_listener
node_extent_listener -->|"records results"| node_extent_manager
node_book_tests -.->|"uses datasets"| node_data_providers

click node_auth_tests "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/AuthTest.java"
click node_book_tests "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/BookServiceTest.java"
click node_journey_tests "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/UserJourneyTests.java"
click node_user_listener "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/listeners/UserContextListener.java"
click node_user_pool "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/session/UserPool.java"
click node_pool_init "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/session/UserPoolInitializer.java"
click node_session "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/session/SessionManager.java"
click node_auth_service "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/AuthService.java"
click node_book_service "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/BookService.java"
click node_cart_service "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/CartService.java"
click node_other_services "https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/main/java/com/restfulReads/services"
click node_base_service "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/base/BaseService.java"
click node_config "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/config/ConfigManager.java"
click node_query_params "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/query/BookQueryParams.java"
click node_assertions "https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/test/java/com/restfulReads/assertions"
click node_schema_validation "https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/test/resources/schemas"
click node_retry "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/listeners/RetryAnalyzer.java"
click node_extent_filter "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/reporting/ExtentRestAssuredFilter.java"
click node_extent_manager "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/reporting/ExtentManager.java"
click node_extent_listener "https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/listeners/ExtentTestListener.java"
click node_data_providers "https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/test/java/com/restfulReads/dataproviders"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_testng,node_auth_tests,node_book_tests,node_journey_tests,node_data_providers toneBlue
class node_user_listener,node_user_pool,node_pool_init,node_session toneAmber
class node_auth_service,node_book_service,node_cart_service,node_other_services,node_base_service,node_config,node_query_params,node_api toneMint
class node_assertions,node_schema_validation,node_retry,node_extent_filter,node_extent_manager,node_extent_listener toneRose
```

## Components

### Test execution

- **TestNG runner**
- [Auth tests](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/AuthTest.java): `src/test/java/com/restfulReads/tests/AuthTest.java`
- [Book tests](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/BookServiceTest.java): `src/test/java/com/restfulReads/tests/BookServiceTest.java`
- [User journeys](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/tests/UserJourneyTests.java): `src/test/java/com/restfulReads/tests/UserJourneyTests.java`
- [Data providers](https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/test/java/com/restfulReads/dataproviders): `src/test/java/com/restfulReads/dataproviders`

### User isolation

- [User context listener](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/listeners/UserContextListener.java): `src/test/java/com/restfulReads/listeners/UserContextListener.java`
- [Role user pools](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/session/UserPool.java): `src/main/java/com/restfulReads/session/UserPool.java`
- [Pool initializer](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/session/UserPoolInitializer.java): `src/main/java/com/restfulReads/session/UserPoolInitializer.java`
- [Thread-local session](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/session/SessionManager.java): `src/main/java/com/restfulReads/session/SessionManager.java`

### API client

- [Authentication service](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/AuthService.java): `src/main/java/com/restfulReads/services/AuthService.java`
- [Book service](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/BookService.java): `src/main/java/com/restfulReads/services/BookService.java`
- [Cart service](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/CartService.java): `src/main/java/com/restfulReads/services/CartService.java`
- [Other API services](https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/main/java/com/restfulReads/services): `src/main/java/com/restfulReads/services`
- [Shared request setup](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/services/base/BaseService.java): `src/main/java/com/restfulReads/services/base/BaseService.java`
- [Environment config](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/config/ConfigManager.java): `src/main/java/com/restfulReads/config/ConfigManager.java`
- [Book query builder](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/query/BookQueryParams.java): `src/main/java/com/restfulReads/query/BookQueryParams.java`

### Validation and reporting

- [Custom assertions](https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/test/java/com/restfulReads/assertions): `src/test/java/com/restfulReads/assertions`
- [JSON schema checks](https://github.com/sidmlv43/restful-reads-api-testing/tree/main/src/test/resources/schemas): `src/test/resources/schemas`
- [Retry handling](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/listeners/RetryAnalyzer.java): `src/test/java/com/restfulReads/listeners/RetryAnalyzer.java`
- [Traffic logging filter](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/reporting/ExtentRestAssuredFilter.java): `src/main/java/com/restfulReads/reporting/ExtentRestAssuredFilter.java`
- [Extent reporting](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/main/java/com/restfulReads/reporting/ExtentManager.java): `src/main/java/com/restfulReads/reporting/ExtentManager.java`
- [Report listener](https://github.com/sidmlv43/restful-reads-api-testing/blob/main/src/test/java/com/restfulReads/listeners/ExtentTestListener.java): `src/test/java/com/restfulReads/listeners/ExtentTestListener.java`

### Other components

- **Restful Reads API**

## Connections

- TestNG runner → Auth tests: runs
- TestNG runner → Book tests: runs
- TestNG runner → User journeys: runs
- User context listener → Role user pools: leases user
- Pool initializer → Role user pools: initializes
- User context listener → Thread-local session: sets session
- Auth tests → Authentication service: calls
- Book tests → Book service: calls
- User journeys → Cart service: exercises
- User journeys → Other API services: exercises
- Authentication service → Shared request setup: uses requests
- Book service → Shared request setup: uses requests
- Cart service → Shared request setup: uses requests
- Shared request setup → Environment config: gets base URL
- Shared request setup → Thread-local session: gets token
- Shared request setup → Traffic logging filter: adds filter
- Authentication service → Restful Reads API: sends auth requests
- Book service → Restful Reads API: sends book requests
- Cart service → Restful Reads API: sends cart requests
- Other API services → Restful Reads API: sends requests
- Book service → Book query builder: applies query map
- Auth tests → Custom assertions: checks responses
- Book tests → Custom assertions: checks responses
- Custom assertions → JSON schema checks: validates schemas
- TestNG runner → Retry handling: retries failures
- Traffic logging filter → Report listener: logs traffic
- Report listener → Extent reporting: records results
- Book tests → Data providers: uses datasets
