> For the complete documentation index, see [llms.txt](https://docs.mosip.io/1.2.0/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mosip.io/1.2.0/roadmap-and-releases/releases/api-test-commons-releases/v1.7.0.md).

# v1.7.0

**Release Name**: API Test Commons v1.7.0

**Release Version**: 1.7.0

**Release Date**: 21st September, 2026

### Overview

We are pleased to announce **API Test Commons v1.7.0**, a feature enhancement and stabilization release focused on dynamic ID-schema handling, OTP/SMTP listener reliability, report and masking improvements, and infrastructure cleanup within the MOSIP Functional Test Framework.

This release introduces a major rework of dynamic identity request generation to support all ID-schema field types, including array-based handle fields, along with support for the AddIdentity v2 endpoint. It also introduces an opt-in full-schema identity template builder, a self-healing SMTP OTP WebSocket listener, always-on masking of large binary payloads in reports, eSignet signup file-upload support, and removal of the standalone authentication-demo-service module.

Version 1.7.0 builds upon v1.6.0 and continues to strengthen test automation reliability, dynamic schema support, reporting diagnostics, and deployment robustness across MOSIP module test suites.

### Bug Fixes

<table><thead><tr><th width="175.625">Bug ID</th><th>Description</th></tr></thead><tbody><tr><td><a href="https://mosip.atlassian.net/browse/MOSIP-45087">MOSIP-45087</a></td><td>Fixed unreliable OTP extraction from SMTP notification messages, including multilingual templates. Added automatic WebSocket reconnection and keep-alive ping to prevent the SMTP OTP listener from silently stopping during long-running test executions.</td></tr><tr><td><a href="https://github.com/mosip/mosip-functional-tests/issues/1877">#1877</a></td><td>Fixed the apitestrig Helm chart issue where report volumes could not bind correctly to the default storage class. Removed the static PersistentVolume template and switched to dynamic volume provisioning.</td></tr><tr><td><a href="https://mosip.atlassian.net/browse/MOSIP-45127">MOSIP-45127</a></td><td>Removed unused eSignet Data Share Policy helper scaffolding, including database schema wiring and keyword handlers, which were introduced earlier but were not used by any test flow.</td></tr><tr><td><a href="https://mosip.atlassian.net/browse/MOSIP-37651">MOSIP-37651</a></td><td>Fixed patchWithPathParamsBodyAndCookie so that path parameters are resolved correctly.</td></tr><tr><td><a href="http://mosip.atlassian.net/browse/MOSIP-45516">MOSIP-45516</a></td><td>Improved OTP extraction to support different IdSchema configurations and multilingual OTP notification templates. OTP messages are now identified using schema-aware and keyword-anchored patterns to avoid incorrectly treating unrelated six-digit values as OTPs. The OTP polling logic also handles multiple messages for the same identity and selects the latest matching OTP.</td></tr><tr><td><a href="http://mosip.atlassian.net/browse/MOSIP-45542">MOSIP-45542</a></td><td>Replaced the iText PDF library with Apache PDFBox 3.0.3 in apitest-commons. Updated PDF handling in AdminTestUtil to use PDFBox PDDocument and removed the iText dependencies.</td></tr></tbody></table>

## Major Highlights (New Developments & Enhancements)

<table data-search="true"><thead><tr><th width="203.59375">Area</th><th width="183.6484375">JIRA</th><th>Summary</th></tr></thead><tbody><tr><td><strong>Dynamic ID-Schema Handling</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-37651">MOSIP-37651</a></td><td>Major rework of AdminTestUtil identity-request generation to dynamically support all ID-schema field types, with improved handling of phone fields.</td></tr><tr><td><strong>Full-Schema Identity Template Builder</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-45308">MOSIP-45308</a></td><td>Added an opt-in SchemaBasedIdentityTemplateBuilder that builds AddIdentity/UpdateIdentity request bodies using all fields available in the live IdSchema, including both required and optional fields. This is useful for modules that require optional or handle fields to be present during identity creation.</td></tr><tr><td><strong>Array-Type Handle Support</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-45253">MOSIP-45253</a>, <a href="https://mosip.atlassian.net/browse/MOSIP-45003">MOSIP-45003</a></td><td>Enhanced identity add/update utilities to support array-type handle fields and added support for the AddIdentity v2 endpoint through ADD_IDENTITY_V2_ENDPOINT.</td></tr><tr><td><strong>Centralized Mock Identity Generation</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-45287">MOSIP-45287</a></td><td>Moved dynamic .hbs generation for mock identities from individual module repositories into apitest-commons, providing a centralized and reusable implementation.</td></tr><tr><td><strong>SMTP/OTP Listener Reliability</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-45087">MOSIP-45087</a></td><td>Added ping-based keep-alive and automatic backoff-based WebSocket reconnection for the OTP listener. Added configurable smtpURL override and broadened multilingual OTP regex support. WebSocket reconnect events are now surfaced as warning banners in the test report.</td></tr><tr><td><strong>Report &#x26; Masking Improvements</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-38979">MOSIP-38979</a>, <a href="https://mosip.atlassian.net/browse/MOSIP-45087">MOSIP-45087</a></td><td>Improved response reporting with PDF-aware handling, avoiding raw body dumps for application/pdf responses. Sensitive-key masking can be skipped in debug mode for better readability, while large Base64/binary payloads such as biometrics and documents are always masked.</td></tr><tr><td><strong>eSignet Signup File Upload</strong></td><td><a href="https://mosip.atlassian.net/browse/ES-2822">ES-2822</a></td><td>Added postWithMultiPartFileAndVerifiedTransactionCookie REST client support for the eSignet signup upload-file API flow.</td></tr><tr><td><strong>Infrastructure Cleanup</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-45432">MOSIP-45432</a></td><td>Removed the standalone authentication-demo-service module, including approximately 9,000 lines of code, its Dockerfile, tests, CI workflow, and related README references.</td></tr><tr><td><strong>Helm Chart Improvements</strong></td><td><a href="https://github.com/mosip/mosip-functional-tests/issues/1877">#1877</a></td><td>Removed static PersistentVolume/NFS configuration for apitestrig report volumes. Report PVCs now use dynamic provisioning through the nfs-csi storage class. The install.sh script was simplified by removing manual NFS server and path prompts.</td></tr><tr><td><strong>Configuration &#x26; Database Wiring</strong></td><td><a href="https://mosip.atlassian.net/browse/MOSIP-45253">MOSIP-45253</a></td><td>Added smtpURL, audit_db_schema, and pms_default_schema properties. Added PMS schema resolution in DBManager. TestCaseDTO now supports requiredSchemaFields and requiredHandleFields for schema-aware test skip logic.</td></tr><tr><td><strong>IdSchema &#x26; OTP Handling</strong></td><td><a href="http://mosip.atlassian.net/browse/MOSIP-45516">MOSIP-45516</a></td><td>Enhanced identity-schema handling and OTP extraction to work across different IdSchema configurations and multilingual OTP notification templates. Added OTP-message classification to prevent unrelated six-digit values from being treated as OTPs, along with latest-message selection when multiple OTP notifications are received for the same identity.</td></tr><tr><td><strong>PDF Library Migration</strong></td><td><a href="http://mosip.atlassian.net/browse/MOSIP-45542">MOSIP-45542</a></td><td>Replaced the iText PDF library with Apache PDFBox 3.0.3. Updated PDF processing in AdminTestUtil from PdfReader to PDDocument and removed the iText dependencies from apitest-commons.</td></tr></tbody></table>

## Upgrade Instruction

**Upgrade Versions**:

| From           | To             |
| -------------- | -------------- |
| 1.6.0-SNAPSHOT | 1.7.0-SNAPSHOT |

### Key Changes & Required Module-Level Updates

**1. Helm Report Volume Configuration Updated**

The default storage class for apitestrig report volumes has been changed from nfs-client to nfs-csi.

The static PersistentVolume template has also been removed in favor of dynamic provisioning.

**Action required:** If your cluster does not have an nfs-csi storage class, explicitly configure:

apitestrig.volumes.reports.storageClass

**2. New Kernel.properties Configuration Keys**

The following configuration properties have been added:

* smtpURL
* audit\_db\_schema
* pms\_default\_schema

smtpURL is optional. If it is not configured, the SMTP host is derived from keycloak-external-url.

**Action required:** Add these properties if your module maintains its own overriding copy of Kernel.properties.

**3. eSignet Data Share Policy Scaffolding Removed**

The eSignet Data Share Policy helper functionality introduced under MOSIP-44709 has been removed because it was not used by any active test flow.

This includes related:

* Database schema wiring
* Keyword handlers
* Helper methods

**Action required:** Ensure that module test code does not depend on the removed Data Share Policy helpers in BaseTestCase or DBManager.

**4. TestCaseDTO Schema-Aware Fields**

TestCaseDTO now includes two optional fields:

* requiredSchemaFields
* requiredHandleFields

These fields allow test cases to participate in schema/handle-aware skip logic.

**Action required:** No action is required for existing test cases unless a module wants to make use of the new schema-aware skip functionality.

**5. New Schema-Based Identity Template Builder**

A new SchemaBasedIdentityTemplateBuilder has been introduced to generate identity templates using all fields available in the live IdSchema.

The builder is **opt-in** and is not enabled by default.

Existing required-field identity generation through modifySchemaGenerateHbs remains unchanged.

**Action required:** No changes are required for existing modules unless they want to use the new full-schema identity template generation capability.

**6. PDF Library Updated**

The PDF processing implementation has been migrated from **iText** to **Apache PDFBox 3.0.3**.

The apitest-commons dependency on iText has been removed, and PDF handling has been updated to use PDFBox APIs.

**Action required:**\
If your module test code directly uses iText classes or depends on the iText libraries transitively through apitest-commons, update the module code/dependencies accordingly. No action is required for modules that do not directly use iText APIs.

### Repositories Released

<table><thead><tr><th width="383.4296875">Repository</th><th>Version</th></tr></thead><tbody><tr><td>apitest-commons</td><td><a href="https://github.com/mosip/mosip-functional-tests/tree/v1.7.0">v1.7.0</a></td></tr></tbody></table>

### Documentation

* [Setup Guide](https://github.com/mosip/mosip-functional-tests/blob/v1.7.0/README.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.mosip.io/1.2.0/roadmap-and-releases/releases/api-test-commons-releases/v1.7.0.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
