FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

FINERACT-2781: Feign integration test guardrails - #6324

Merged
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails
Aug 31, 2026
Merged

FINERACT-2781: Feign integration test guardrails#6324
adamsaghy merged 3 commits into
apache:developfrom
DeathGun44:FINERACT-2781/feign-integration-test-guardrails

Conversation

@DeathGun44

Copy link
Copy Markdown
Contributor

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.

Your assigned reviewer(s) will follow our guidelines for code reviews.

Aman-Mittal
Aman-Mittal previously requested changes Aug 24, 2026

@Aman-MittalAman-Mittal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

License concerns

Comment threadconfig/checkstyle/checkstyle.xml Outdated
@Aman-Mittal
Aman-Mittal dismissed their stale reviewAugust 24, 2026 16:03

Need to check more in this

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from a1bd542 to b2465ecCompareAugust 24, 2026 18:55
@budaidev

Copy link
Copy Markdown
Contributor

Fix the current checkstyle violation before merge

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please review the failing checks and advise on them

@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from b2465ec to f30b991CompareAugust 26, 2026 18:15
@DeathGun44

DeathGun44 commented Aug 26, 2026

Copy link
Copy Markdown
ContributorAuthor

The violation is real, but the fix is not in this PR - it is in #6321.
The rule flags five io.restassured imports in FeignLoanHelper.java. that pr deletes exactly those five. I checked both sides with the standalone Checkstyle CLI.

So this check goes green on its own once the other one merges, and the merge order is #6321 then #6324. I have deliberately not suppressed the file or narrowed the rule to get a green tick here, since that would switch off the guardrail this PR exists to add.

@adamsaghy

Copy link
Copy Markdown
Contributor

@DeathGun44 Please rebase

Adds a Feign Integration Tests chapter covering how a test reaches the
generated client, how to assert failures against it, and what to do when a
generated model is missing a field.
The conventions are drawn from review feedback on the migration pull
requests and are given stable identifiers (IT-01 to IT-20) so that a review
comment can cite a rule instead of restating it.
The shared Feign machinery is inherited by every migrated test, so a REST
Assured call reintroduced there is inherited by all of them.
Adds an IllegalImport check narrowed by a SuppressionSingleFilter carrying
the same id, so the check applies to the client/feign package tree, the
FeignIntegrationTest root base class one directory above it, and the
FineractFeignClientHelper client factory in common, and nowhere else. Both
are stock Checkstyle modules, which avoids adding another dependency on the
LGPL sevntu-checks extension. The check runs as part of checkstyleTest,
which build-quality-checks.yml already executes on every pull request, so no
new tooling or workflow is involved.
The check reads imports only, so a fully qualified reference or a var that
never names a REST Assured type still gets through. Neither occurs today and
the chapter records the limitation.
The chapter still taught the REST Assured setup block as the way to start a
new test, and documented several methods and commands that do not exist.
- Point new tests at FeignLoanTestBase, which 149 test classes now extend,
and keep the REST Assured pattern only as the legacy path. The Best
Practices list said the opposite and has been brought into line.
- Drop testCapitalizedIncome, testDownPayment, testAdvancedPaymentAllocation
and createMultiDisbursementProduct, none of which exist on either base
class, and correct the loan product template name.
- Note that the create* methods return a PostLoanProductsRequest rather than
a product identifier.
- Remove the --exclude, -Xmx4g and -Dtest.timeout invocations: the test task
accepts none of them. Size the test JVM with maxHeapSize, which is the
setting that actually applies to the forked process.
- Document -PcargoDisabled, which is required to run against an instance
started outside the build.
- Use PostgreSQL in the troubleshooting queries, per FSIP-9, correct the
m_appuser column name, and use createPGDB rather than the MariaDB task.
- Stop the instance before dropping its databases, which PostgreSQL will
otherwise refuse.
@DeathGun44
DeathGun44force-pushed the FINERACT-2781/feign-integration-test-guardrails branch from f30b991 to d7b8e13CompareAugust 28, 2026 16:43
@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

@adamsaghy Done!

@DeathGun44

Copy link
Copy Markdown
ContributorAuthor

test seems flaky

@adamsaghyadamsaghy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@adamsaghy
adamsaghy merged commit 1741c84 into apache:developAug 31, 2026
179 of 180 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@DeathGun44@budaidev@adamsaghy@Aman-Mittal