Hi everyone,

Just wanted to share a quick progress update on my GSoC project. I’m
currently working on migrating our integration test infrastructure from
RestAssured to the type-safe Feign client. You can track the main progress
here: FINERACT-2609 <https://issues.apache.org/jira/browse/FINERACT-2609>.

*Why we're doing this* Right now, the majority of our integration tests
rely on RestAssured, which means we're dealing with untyped HTTP and raw
JSON strings. If an API field changes, the tests still compile perfectly
fine but fail hours later in CI - or worse, they pass using outdated data.
By switching to the generated Feign client, we get compile-time safety. If
a field gets renamed, the build breaks immediately locally.

*Long-term impact* Once this migration is complete, the test suite becomes
a first-class consumer of our own API. Any breaking API change will fail
the build before it reaches CI, which means faster feedback for
contributors and fewer surprise failures on unrelated PRs. It also means
the Swagger spec stays honest — the spec gaps I've been fixing along the
way show that without something actually consuming the generated client,
the spec drifts silently from what the server does. On the contributor
experience side, writing a new integration test becomes much simpler:
extend a base class, call typed methods, no more copying JSON templates
from other tests and hoping the fields are still correct. Eventually this
also opens the door to retiring RestAssured as a test dependency entirely.

*The approach* To keep things smooth, I'm taking an incremental approach.
The new Feign helpers are being added right alongside the existing
RestAssured ones. Since both clients share the same model classes, we can
migrate tests batch by batch without breaking anyone's current workflow or
causing merge conflicts for other PRs.

*Merged so far (8 PRs in develop)*

   -

   *Core helpers:* Added Feign utilities for Savings (#5907
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/5907>),
   Client (#5954
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/5954>),
   Charges & Delinquency (#5978
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/5978>),
   and Loans (#5997
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/5997>
   ).
   -

   *Initial migrations:* Moved the first 5 loan tests over to
   FeignLoanTestBase (#6005
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/6005>
   ).
   -

   *Spec fixes:* Merged several Swagger fixes (#5934
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/5934>,
   #5955
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/5955>,
   #5978
   
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/5978>)
   to correct fields that the generated client was silently dropping.

*Currently in review* PR #6050
<https://www.google.com/search?q=https://github.com/apache/fineract/pull/6050>
is up next. This is the second batch of loan test migrations (~34 tests
covering charge-off, fraud, delinquency, progressive lending, etc.). I
split the commits by test area so it's much easier to review and catch
regressions.

*What's next*

   -

   Batches 3 and 4 to completely phase out BaseLoanIntegrationTest.
   -

   Building out helpers for Groups, Centers, and Fixed/Recurring Deposits.
   -

   Deprecating the old RestAssured utilities in Utils.java.
   -

   Writing a short migration guide for future contributors.

All feedback is welcome!

Best,
Krishna Mewara
GSoC 2026 Contributor
Apache Fineract

Reply via email to