QA Review — MC #8822 / MC #8005 NBS IPS WireMock QA Review — MC #8822 (review of MC #8005) Reviewer: John / Proveo QA posture (tool-verified in Pi session 019fa908-a2c1-7588-96c0-0206eb26960c ) Date: 2026-07-28 Subject task: MC #8005 — [DropSrbija T22] NBS IPS WireMock tests (9 cases) Subject status at review: done Subject DoD evidence: T22 WireMock IPS: 9 tests, commit 0c92e6aaf, branch feat/drop-srbija-tests-ips-aml, ./gradlew test BUILD SUCCESSFUL 135 total 0 failures Review scope: Verify that NbsIpsWireMockTest.kt exists, defines the required nine NBS IPS WireMock scenarios, and passes when tested against the referenced commit. Verdict APPROVED_WITH_COMMENTS / CORE PASS. The core MC #8005 acceptance is reproducible against commit 0c92e6aaf : NbsIpsWireMockTest.kt contains 9 test functions covering ACCP/ACSC/RJCT/PDNG, HTTP 500, timeout, HTTP 429, malformed XML, and partner-bank naming; the target class passes 9/9; the archived commit full backend test task passes. Comment: I could not reproduce the exact historical 135 total count from the MC #8005 DoD. The archived 0c92e6aaf rerun produced 131 tests, 0 failures, 0 errors, 0 skipped across 18 XML suites. This does not block the T22 WireMock acceptance, but the DoD total should be treated as historical agent output rather than a current reproducible count. Files reviewed backend/src/test/kotlin/no/alai/dropsrbija/modules/ips/NbsIpsWireMockTest.kt backend/build.gradle.kts BUILD-BLUEPRINT.md Scenario evidence from source NbsIpsWireMockTest.kt defines these 9 test cases: 111: T22-01 ACCP — initiate returns AcceptedCustomerProfile status 131: T22-02 ACSC — checkStatus after settlement returns AcceptedSettlementCompleted 149: T22-03 RJCT — bank returns Rejected status 168: T22-04 PDNG — initiate returns Pending, retry should be honoured 188: T22-05 HTTP 500 — bank server error causes BankApiException with 500 code 208: T22-06 Bank timeout — simulated 2s delay with 1s timeout causes BankTimeoutException 234: T22-07 HTTP 429 — rate limit response causes RateLimitException, not retriable immediately 255: T22-08 Malformed XML response — throws BankResponseParseException 276: T22-09 partner_bank — adapter returns correct partner name per implementation Machine evidence Commands executed from archived commit tree: /tmp/dropsrbija-mc8822-0c92e6aaf-jZwELn/products/DropSrbija/backend Target class command: JAVA_HOME=$(/usr/libexec/java_home -v 21) ./gradlew --no-daemon \ -Dorg.gradle.java.home=$(/usr/libexec/java_home -v 21) \ -Dkotlin.compiler.execution.strategy=in-process \ -Dkotlin.daemon.enabled=false \ test --tests 'no.alai.dropsrbija.modules.ips.NbsIpsWireMockTest' Result: BUILD SUCCESSFUL TEST-no.alai.dropsrbija.modules.ips.NbsIpsWireMockTest.xml: tests=9 failures=0 errors=0 skipped=0 Full backend test command: JAVA_HOME=$(/usr/libexec/java_home -v 21) ./gradlew --no-daemon \ -Dorg.gradle.java.home=$(/usr/libexec/java_home -v 21) \ -Dkotlin.compiler.execution.strategy=in-process \ -Dkotlin.daemon.enabled=false \ test Result: BUILD SUCCESSFUL total_suites=18 tests=131 failures=0 errors=0 skipped=0 Target XML excerpt: Hashes from archived commit rerun: f7f3c4c6719b987cc1339cc5af4364aec0e57272138541da790d898a05724ccc build/test-results/test/TEST-no.alai.dropsrbija.modules.ips.NbsIpsWireMockTest.xml 2e7521cb049edf6ee8ce658e05208144214b78f6bcb4779241a93d0c72aaf657 src/test/kotlin/no/alai/dropsrbija/modules/ips/NbsIpsWireMockTest.kt Current-worktree note Running the target test directly in the current DropSrbija worktree failed before tests because later/current backend code does not compile ( Complaints , MerchantsV2 , RateLimitNames , Micrometer/OpenTelemetry/Sentry unresolved references, plus other model-field mismatches). Therefore the deterministic review used an archived tree of the referenced task commit 0c92e6aaf . Recommendation Accept MC #8005 for its core T22 WireMock deliverable. If MC evidence precision matters, amend the historical DoD note from 135 total to the reproducible archival rerun count 131 total, 0 failures or attach the original CI/test report that proves 135 .