Skip to content

[API tests] Return shipment PDF selection and pdfDocument test isolation - #12683

Open
Prangshuman Das (t-prda) wants to merge 1 commit into
features/646383-stack-d6-field-comparisonfrom
features/646383-stack-d7-pdf-documents
Open

Prangshuman Das (t-prda) wants to merge 1 commit into
features/646383-stack-d6-field-comparisonfrom
features/646383-stack-d7-pdf-documents

Conversation

@t-prda

@t-prda Prangshuman Das (t-prda) commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Review focus: the one-line BaseApp change in ReturnShptPDFDocHandler plus the isolation property in three codeunits.

Area fix (previously #11230 + isolation): return-shipment PDFs use the posted return-shipment report selection. RequiredTestIsolation = Disabled in CU 139908/139922/139928 avoids 409 conflicts while the HTTP session renders the PDF. Re-enables TestExpandPdfDocument in those codeunits.

Related: AB#646383, AB#653393

Stack (each PR shows only its own layer; merge bottom first)

  1. [API tests] Default to web service key authentication #12674 A: web service key auth (base: main)
  2. [Expense tests] Re-enable Expense Agent API tests #12675 B: Expense API tests + clean test codeunit execution
  3. [API tests] Re-enable APIV1 and APIV2 API tests #12676 C: re-enable APIV1/APIV2 API tests
  4. [API tests] Simplify API test web service key handling #12890 Review fixes for A: simplify web service key handling
  5. Area fixes: [API tests] Ensure VAT posting setup in API document fixtures #12677 D1 VAT fixtures → [API tests] Ensure cancellation reason codes in API sales document tests #12678 D2 cancellation reasons → [API tests] Handle localized purchase invoice payment discounts in APIV1 tests #12679 D3 localized discounts → [API tests] Set sales quote document and posting dates in API tests #12680 D4 quote dates → [API tests] Assign a number series to API vendor payment journals #12681 D5 journal numbering → [API tests] Ignore localized fields in API document comparisons #12682 D6 field comparison → [API tests] Return shipment PDF selection and pdfDocument test isolation #12683 D7 PDF documents → [API tests] Improve APIV1 fixture and verification reliability #12684 D8 APIV1 reliability

Experiments (on D8, do not merge): #12685 E single tenant, #12686 F no clean execution. Combined validation (do not merge): #12687, same tree as D8.

Platform: main already pins BCPlatform 30.0.56112.0, which includes the SQL connection-pool fix (AB#653457).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the base branch, and features/* bases have none, so a PR build there fails with a 404. The current CI runs were triggered while these PRs targeted main, so their results are valid for the cumulative change.

@github-actions github-actions Bot added the AL: Apps (W1) Add-on apps for W1 label Oct 12, 2026
@github-actions github-actions Bot added the Team: SCM GitHub request for SCM area label Oct 12, 2026
@t-prda
Prangshuman Das (t-prda) changed the base branch from features/646383-stack-d6-field-comparison to main October 12, 2026 11:13
@github-actions github-actions Bot added Build: Automation Workflows and other setup in .github folder Build: scripts & configs Build scripts and configuration files labels Oct 12, 2026
@github-actions github-actions Bot added this to the Version 30.0 milestone Oct 12, 2026
@github-actions github-actions Bot added Ownership: Needs Review Ownership is Other, low confidence, or needs manual correction Team: Other GitHub request for other area than SCM, Finance or Integration and removed Team: SCM GitHub request for SCM area labels Oct 12, 2026
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d7-pdf-documents branch from 7da98dd to 090cdd6 Compare October 12, 2026 11:28
@t-prda
Prangshuman Das (t-prda) changed the base branch from main to features/646383-stack-d6-field-comparison October 12, 2026 12:29
@t-prda
Prangshuman Das (t-prda) added this pull request to stack #12697 October 12, 2026 15:38
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d7-pdf-documents branch from 090cdd6 to 40b1db3 Compare October 12, 2026 16:45
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d7-pdf-documents branch from 40b1db3 to a22a1ff Compare October 14, 2026 09:27
@t-prda Prangshuman Das (t-prda) added the Team: Finance GitHub request for Finance area label Oct 14, 2026
@github-actions github-actions Bot removed the Team: Finance GitHub request for Finance area label Oct 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

$\textbf{🟡\ Medium\ Severity\ —\ Testing}$

The newly enabled PDF expansion test does not assert the Boolean result of GetPropertyValueFromJSON, so a nonempty response that omits the pdfDocument property can still pass. Assert that the property lookup succeeds.

Suggested fix (apply manually — could not be anchored as a one-click suggestion):

        Assert.IsTrue(LibraryGraphMgt.GetPropertyValueFromJSON(ResponseText, 'pdfDocument', PdfDocumentValue), 'Could not find pdfDocument');

Line mapping was unavailable, so this was posted as an issue comment.

👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.50.6

2 similar comments
@github-actions

Copy link
Copy Markdown
Contributor

$\textbf{🟡\ Medium\ Severity\ —\ Testing}$

The newly enabled PDF expansion test does not assert the Boolean result of GetPropertyValueFromJSON, so a nonempty response that omits the pdfDocument property can still pass. Assert that the property lookup succeeds.

Suggested fix (apply manually — could not be anchored as a one-click suggestion):

        Assert.IsTrue(LibraryGraphMgt.GetPropertyValueFromJSON(ResponseText, 'pdfDocument', PdfDocumentValue), 'Could not find pdfDocument');

Line mapping was unavailable, so this was posted as an issue comment.

👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.50.6

@github-actions

Copy link
Copy Markdown
Contributor

$\textbf{🟡\ Medium\ Severity\ —\ Testing}$

The newly enabled PDF expansion test does not assert the Boolean result of GetPropertyValueFromJSON, so a nonempty response that omits the pdfDocument property can still pass. Assert that the property lookup succeeds.

Suggested fix (apply manually — could not be anchored as a one-click suggestion):

        Assert.IsTrue(LibraryGraphMgt.GetPropertyValueFromJSON(ResponseText, 'pdfDocument', PdfDocumentValue), 'Could not find pdfDocument');

Line mapping was unavailable, so this was posted as an issue comment.

👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.50.6

@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d7-pdf-documents branch from a22a1ff to 717f320 Compare October 14, 2026 09:48
Comment thread src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al
Comment thread src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al
Comment thread src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al
@alexei-dobriansky

Copy link
Copy Markdown
Contributor

Good Sense Reviewer - Round 2

Recommendation: Accept with Suggestions

What this PR does

The rebased commit keeps the same functional change: posted return-shipment PDFs now use the posted return-shipment report selection, and three PDF expansion tests are re-enabled with test isolation disabled.

The production mapping matches the posted purchase-document pattern and the Return Shipment Header record passed to the handler. The setup changes also ensure the purchase quote and blanket order have printable lines.

Status of previous suggestions

Round 1 had no suggestions.

New observations (commits since round 1)

S1 (🟠 Moderate): Assert the expanded PDF property exists
Assert the Boolean result from GetPropertyValueFromJSON in each re-enabled TestExpandPdfDocument. A nonempty response can omit pdfDocument, so these tests can pass without proving the corrected handler is exposed.

Risk assessment and necessity

Risk: The production change is limited to one report-selection value and follows the matching posted-document pattern. The remaining risk is weaker regression detection because the re-enabled tests do not fail when the expanded property is missing.

Necessity: Without this change, posted return shipments can use the purchase return-order report selection and the affected PDF scenarios remain excluded. The scope is narrow and appropriate for restoring this behavior and coverage.


[AI-PR-REVIEW] version=1 promptVersion=4 system=github pr=12683 round=2 by=alexei-dobriansky at=2026-10-14T12:27:02.1333691Z lastSha=a512e47f3c3b413f371ef738a5e901b8a30407ec reviewKey=a1f9674db127a6cc6d3af8a1fb5996d7f17688b1bea7d4ce7aa6d230ef886316 suggestions=S1@aa44b63a:new parentRound=1

@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d7-pdf-documents branch from a512e47 to fb5522a Compare October 14, 2026 14:05
@alexei-dobriansky

Copy link
Copy Markdown
Contributor

Good Sense Reviewer - Round 3

Recommendation: Accept with Suggestions

What this PR does

Posted return-shipment PDFs now use the posted return-shipment report selection. Three PDF expansion tests are re-enabled, with test isolation disabled and printable lines added to the purchase quote and blanket order.

The report selection matches the posted shipment record and the corresponding posted-document handlers. The rebased change keeps the same behavior as the previous round; the PDF property assertions have not changed.

Problem-solution fit

Fit: Strong

The change directly corrects the report-selection mismatch and restores the affected PDF tests. It does not itself fix the separate platform SQL connection-pool problem.

Status of previous suggestions
ID Title Status Author response
S1 Assert the expanded PDF property exists Not addressed No reply or matching assertion change. All three tests still ignore the JSON helper's Boolean result.

S1 (🟠 Moderate): Assert that each expanded PDF property exists
Assert the Boolean returned by GetPropertyValueFromJSON for pdfDocument in all three TestExpandPdfDocument tests. A nonempty response can omit that property and still pass these tests.

New observations (commits since round 2)

None — the rebase preserves the same scoped changes.

Risk assessment and necessity

Risk: The production change affects report selection and PDF attachment naming, not posting, amounts, or public signatures. Disabling test isolation follows the existing HTTP API test pattern, but the missing property assertions still weaken regression detection.

Necessity: Without the change, posted return shipments use the return-order report selection and the three PDF expansion tests remain excluded. The scope is appropriate for correcting PDF generation and restoring coverage.


[AI-PR-REVIEW] version=1 promptVersion=4 system=github pr=12683 round=3 by=alexei-dobriansky at=2026-10-14T18:33:25.3786469Z lastSha=fb5522a7b2978ea150e2d284ec46be56015ea7db reviewKey=ccca40aeb6fd194bf14a5a2c80e742a6c3e80ac24cf0cbe81f5a0ec866352a7d suggestions=S1@aa44b63a:notaddressed parentRound=2

@t-prda
Prangshuman Das (t-prda) removed this pull request from stack #12697 October 15, 2026 08:59
@t-prda
Prangshuman Das (t-prda) added this pull request to stack #12891 October 15, 2026 09:00
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d7-pdf-documents branch from fb5522a to b0bfbfa Compare October 15, 2026 09:02
Select the purchase return shipment report for return shipment PDF documents, run the
PDF document codeunits without test isolation and re-enable their TestExpandPdfDocument tests.

AB#646383
AB#653393

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
@t-prda
Prangshuman Das (t-prda) force-pushed the features/646383-stack-d7-pdf-documents branch from b0bfbfa to 4fa9ecd Compare October 15, 2026 12:56
dominicstarkl pushed a commit to dominicstarkl/BCApps that referenced this pull request Oct 15, 2026
Review focus: ``MicrosoftTestAuthProvider`` (about 60 lines) and the
enum default; the ``build/`` changes are deletions plus the anti-SSRF
line in ``NewBcContainer.ps1``.

Defaults API test authentication (`Library - Graph Mgt`) to the current
user's web service key. API tests no longer need per-app auth uptake or
a container password.

- `API Test Authentication` enum: `DefaultImplementation` = `Microsoft
Test Auth Provider`. Removes `No API Test Auth Provider` and the
explicit `Microsoft Test Environment` value.
- `Microsoft Test Auth Provider`: on-premises with NavUserPassword,
sends Basic auth with `UserId()` and the web service key. When the key
is missing or expired, a background session (`API Test Web Service Key`,
CU 131025) creates it with a 24h expiry and commits it, because the API
request runs in a separate server session. The caller's transaction is
never committed; the provider waits up to 60 s for the session and then
re-reads the key.
- `Library - Graph Mgt`: adds the `SetLicenseSafeWorkDate` and
`AddFieldToIgnoreIfExists` helpers used by later layers.
- Build: removes the container password and Key Vault credential
plumbing (`ApiTestCredential.psm1`, `Remove-ApiTestPassword.ps1`,
`PipelineFinalize` hooks and their tests). Keeps the clean-tenant
execution logic. Sets `NavHttpClientAntiSSRFEnabled=false` in the test
container, as NAV `RunALTests.ps1` does: since microsoft#12323, API tests call
the container's own endpoint through AL `HttpClient`, which anti-SSRF
blocks.
- CU 139494 `API Test Auth Provider Tests`: covers key creation and
renewal. Declares `TestHttpRequestPolicy = AllowAllOutboundRequests`
(NAV blocks outbound requests by default; microsoft#12694 covered the other API
tests).

Related:
[AB#646383](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/646383),
[AB#653393](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653393)

### Stack (each PR shows only its own layer; merge bottom first)
1. microsoft#12674 A: web service key auth (base: `main`)
2. microsoft#12675 B: Expense API tests + clean test codeunit execution
3. microsoft#12676 C: re-enable APIV1/APIV2 API tests
4. microsoft#12890 Review fixes for A: simplify web service key handling
5. Area fixes: microsoft#12677 D1 VAT fixtures → microsoft#12678 D2 cancellation reasons →
microsoft#12679 D3 localized discounts → microsoft#12680 D4 quote dates → microsoft#12681 D5
journal numbering → microsoft#12682 D6 field comparison → microsoft#12683 D7 PDF documents
→ microsoft#12684 D8 APIV1 reliability

Experiments (on D8, do not merge): microsoft#12685 E single tenant, microsoft#12686 F no
clean execution. Combined validation (do not merge): microsoft#12687, same tree
as D8.

Platform: `main` already pins BCPlatform 30.0.56112.0, which includes
the SQL connection-pool fix
([AB#653457](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653457)).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the
base branch, and `features/*` bases have none, so a PR build there fails
with a 404. The current CI runs were triggered while these PRs targeted
`main`, so their results are valid for the cumulative change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
dominicstarkl pushed a commit to dominicstarkl/BCApps that referenced this pull request Oct 15, 2026
Review focus: the Expense test changes and the auth-helper deletion; the
``enableCleanTestCodeunitExecution`` line. The large JSON diffs are
temporary disables, undone in C.

Re-enables the Expense Agent API tests on top of the default web service
key auth. No Key Vault password and no auth subscriber.

- Deletes `Expense API Test Auth Helper` and its usages.
- Re-applies the Expense fixes from microsoft#12325 (reverted in microsoft#12514):
`TravelRequestApproval`, Expense permission and spend-request tests, the
`ExpDetailTest` permission set, and `SpendRequestTests`.
- Turns on `enableCleanTestCodeunitExecution`, as microsoft#12325 did, so
`RequiredTestIsolation = Disabled` codeunits run in clean-tenant lanes.
- Expense disabled tests: keeps only the entries NAV master also
disables (12).
- Temporarily disables the unrelated APIV1/APIV2 tests that the clean
lanes start executing, the same entries microsoft#12325 added. They are
re-enabled in the next layers.

Related:
[AB#646383](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/646383),
[AB#653393](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653393)

### Stack (each PR shows only its own layer; merge bottom first)
1. microsoft#12674 A: web service key auth (base: `main`)
2. microsoft#12675 B: Expense API tests + clean test codeunit execution
3. microsoft#12676 C: re-enable APIV1/APIV2 API tests
4. microsoft#12890 Review fixes for A: simplify web service key handling
5. Area fixes: microsoft#12677 D1 VAT fixtures → microsoft#12678 D2 cancellation reasons →
microsoft#12679 D3 localized discounts → microsoft#12680 D4 quote dates → microsoft#12681 D5
journal numbering → microsoft#12682 D6 field comparison → microsoft#12683 D7 PDF documents
→ microsoft#12684 D8 APIV1 reliability

Experiments (on D8, do not merge): microsoft#12685 E single tenant, microsoft#12686 F no
clean execution. Combined validation (do not merge): microsoft#12687, same tree
as D8.

Platform: `main` already pins BCPlatform 30.0.56112.0, which includes
the SQL connection-pool fix
([AB#653457](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653457)).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the
base branch, and `features/*` bases have none, so a PR build there fails
with a 404. The current CI runs were triggered while these PRs targeted
`main`, so their results are valid for the cumulative change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91
dominicstarkl pushed a commit to dominicstarkl/BCApps that referenced this pull request Oct 15, 2026
Review focus: mostly mechanical. ``Initialize`` sets a license-safe work
date in each API test, and the JSON deletions re-enable tests. A few
files have small fixture or isolation tweaks.

Re-enables the APIV1, APIV2, IRS 1099 and E-Document API tests that pass
without area-specific fixes. Aligned with NAV master: only tests that
NAV master also runs are re-enabled.

- API test `Initialize` sets a license-safe work date. Adds minimal
fixture and isolation adjustments.
- Removes the APIV1/APIV2 exclusions, keeping only the entries fixed in
the following area PRs and the two `139806` methods NAV master disables.
Removes E-Doc `135575`.

Related:
[AB#646383](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/646383),
[AB#653393](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653393)

### Stack (each PR shows only its own layer; merge bottom first)
1. microsoft#12674 A: web service key auth (base: `main`)
2. microsoft#12675 B: Expense API tests + clean test codeunit execution
3. microsoft#12676 C: re-enable APIV1/APIV2 API tests
4. microsoft#12890 Review fixes for A: simplify web service key handling
5. Area fixes: microsoft#12677 D1 VAT fixtures → microsoft#12678 D2 cancellation reasons →
microsoft#12679 D3 localized discounts → microsoft#12680 D4 quote dates → microsoft#12681 D5
journal numbering → microsoft#12682 D6 field comparison → microsoft#12683 D7 PDF documents
→ microsoft#12684 D8 APIV1 reliability

Experiments (on D8, do not merge): microsoft#12685 E single tenant, microsoft#12686 F no
clean execution. Combined validation (do not merge): microsoft#12687, same tree
as D8.

Platform: `main` already pins BCPlatform 30.0.56112.0, which includes
the SQL connection-pool fix
([AB#653457](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/653457)).

Note for CI: AL-Go's new-warning check needs a CI/CD baseline from the
base branch, and `features/*` bases have none, so a PR build there fails
with a 404. The current CI runs were triggered while these PRs targeted
`main`, so their results are valid for the cumulative change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3952f078-a881-4da8-ad96-13b727e48a91

This branch was successfully deployed

1 active (outdated) deployment
triage — a22a1ff9 Deployed Oct 14, 2026 by t-prda via Classify team ownership #7802
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AL: Apps (W1) Add-on apps for W1 Team: SCM GitHub request for SCM area

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants