Skip to content

ATS-PFM-QRY-013Render a report for download: Capability Test Specification

Markdown

ATS-PFM-QRY-013

Render a report for download: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleQuestions, record exploration and data deliveryRevision2

Read atservices-platform ad3f6a65react-console baf6dae3rhythm-v2-docs 99376625

Coverage

  • Rule gap: FND-PFM-QRY-063
  • Transition covered
  • Validation covered
  • Permission covered
  • Edge gap: FND-PFM-QRY-063
  • Failure covered
  • Boundary covered
  • Concurrency gap: FND-PFM-QRY-063
  • Invariant gap: FND-PFM-QRY-063
  • Interaction covered

Test Scenarios

15 scenarios proving CAP-PFM-QRY-013; 11 bound to an existing test.

01 Export admission checks report authority and audiencepermissionapinegativetest
Proves
BR-CAP-PFM-QRY-013-01
Preconditions
A report is private and callers lack either visibility or report use.
Steps
Request export under those callers and through another workspace.
Expected
Requests return the appropriate 404 or 403 without creating exports.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#answers a colleague who may not see the private report 404, writing nothing
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#answers the report from another tenant’s path 404: it is not that tenant’s
services-platform:modules/queries/tests/e2e/read-tier.e2e.spec.js#is refused starting an export of a report with 403
Source
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#answers a colleague who may not see the private report 404, writing nothing
02 Report kinds determine output formatsvalidationapinegativetest
Proves
BR-CAP-PFM-QRY-013-02
Preconditions
Table, designed and dashboard reports exist.
Steps
Request PDF and Excel for each, then CSV.
Expected
PDF works for each, Excel works only for the eligible table form, and unsupported formats fail.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#refuses an Excel export of an AG Studio layout at format, writing nothing
Source
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#accepts an Excel export of a table report
03 Rendering inputs preserve valid values and reject invalid onesboundaryapinegativetest
Proves
BR-CAP-PFM-QRY-013-03
Preconditions
An accessible report accepts print parameters.
Steps
Use a reserved name, an object value and whitespace-bearing text.
Expected
Reserved and unsupported values fail; valid text remains exact.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#refuses the renderer’s own parameter name at parameters, writing nothing
Source
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#refuses the renderer’s own parameter name at parameters, writing nothing
04 Access is checked before browser startuppermissionapinegativetest
Proves
BR-CAP-PFM-QRY-013-04
Preconditions
Queued exports have a deleted source or a requester who lost report use.
Steps
Run both render jobs.
Expected
Both end as access lost before a browser or file is created.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a requester who may not use reports access_lost, saying so plainly
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails the export of a deleted report access_lost, starting no browser
Source
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a requester who may not use reports access_lost, saying so plainly
05 Interception restricts origins and operationsinvariantunitnegativetest
Proves
BR-CAP-PFM-QRY-013-05
Preconditions
The rendering interception fixture is ready.
Steps
Try console reads and writes, foreign origins, unlisted routes, another workspace and another report.
Expected
Only the specified permitted requests continue; refusals omit query-string details from logs.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/unit/services/rendering/api-interception.spec.ts#aborts another origin, a macroservice’s or a third party’s
services-platform:modules/queries/tests/unit/services/rendering/api-interception.spec.ts#aborts a route of Platform off the allowlist, a write among them
services-platform:modules/queries/tests/unit/services/rendering/api-interception.spec.ts#logs a refusal with the method, origin, path and reason, never the query string
Source
services-platform:modules/queries/tests/unit/services/rendering/api-interception.spec.ts#continues the console’s own GET
06 Mid-render revocation stops file productionfailureapinegativetest
Proves
BR-CAP-PFM-QRY-013-06
Preconditions
A requester’s grant is revoked during page reads.
Steps
Allow requests before and after revocation.
Expected
The first permitted read works and later refusal fails the export as access lost.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#refuses the run made after it, re-reading the grants for that request
Source
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#refuses the run made after it, re-reading the grants for that request
07 Rendering bounds prevent unusable filesboundaryapinegativetest
Proves
BR-CAP-PFM-QRY-013-07
Preconditions
Pages fail, fail to settle or exceed the configured page cap, and an Excel response is not a workbook.
Steps
Run each controlled render case.
Expected
The corresponding render, timeout or page-limit failure is recorded without storage.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a page that reported an error render_failed, with its reason made plain
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a page that never settled timed_out, and still closes its browser
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails an answer that is not a workbook render_failed, storing nothing of it
Source
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a page that reported an error render_failed, with its reason made plain
08 Completed report files retain dated names and expirytransitionapitest
Proves
BR-CAP-PFM-QRY-013-08
Preconditions
A PDF rendering request is queued.
Steps
Complete rendering and inspect its file record.
Expected
The name uses report and workspace date and expiry is thirty days after completion.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#keeps the file thirty days from its completion, as the bucket’s rule removes it
Source
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#names the file for the report and the tenant’s date, as a PDF
09 File availability is independent of report deletioninteractionbrowsertest
Proves
BR-CAP-PFM-QRY-013-09
Preconditions
A report has one completed and one pending export.
Steps
Remove the report, download the completed export and process the pending request.
Expected
The existing file downloads while the pending render ends as access lost.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
react-console:acceptance/reporting/playwright/journeys/print-and-export/RPT-ACC-0349.spec.ts#RPT-ACC-0349
10 Rendering browser isolation rejects connectionsinvariantbrowsertest
Proves
BR-CAP-PFM-QRY-013-10
Preconditions
A print shell is opened without a session and its page attempts a WebSocket.
Steps
Load the shell and inspect the intercepted connection.
Expected
The unauthenticated shell contains no private content and the connection is refused and recorded.
Data
Use the existing binding’s controlled fixture data.
Bound to
Source
services-platform:modules/queries/tests/unit/services/rendering/api-interception.spec.ts#records a WebSocket the page opened as refused
11 Internal failures retry without exposing internalsfailureapinegativetest
Proves
BR-CAP-PFM-QRY-013-11
Preconditions
The renderer throws an internal failure.
Steps
Process an early attempt and its final receive.
Expected
Early work retries; the final failure uses a generic internal message.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#records internal on the last receive, with the sentence that never says what went wrong
Source
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#throws on an early receive, so the queue delivers the export again
12 Deleting a report separates pending and completed filesinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-011-12 BR-CAP-PFM-QRY-013-09
Preconditions
A report has one completed file and a second queued rendering request.
Steps
Delete the report, follow the completed download and process the queued request.
Expected
The completed file remains available until expiry and the queued render fails for lost access.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#pauses the schedule report_deleted, its report gone,services-platform:docs/queries/report-rendering.md#2. The export row
13 A dashboard render stops after source access is revokedinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-012-09 BR-CAP-PFM-QRY-013-06
Preconditions
A dashboard has two widgets and its requester loses one source permission between print-page requests.
Steps
Start rendering, complete a permitted source read, revoke access and let the next source request proceed.
Expected
The later refusal ends the export without a file containing partial data or a refusal message.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:docs/queries/reports.md#6. Dashboards,services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails the export access_lost rather than printing a page of refusals
14 Report files use the shared file-access boundaryinteractionapiproposed
Proves
BR-CAP-PFM-QRY-013-01 BR-CAP-PFM-QRY-014-07
Preconditions
A requester has report use but another reader lacks export ownership and schedule authority.
Steps
Render a table report, follow it as the requester and request the same export as the unrelated reader.
Expected
The requester downloads the completed file and the unrelated reader receives not found.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#answers a colleague who may not see the private report 404, writing nothing,services-platform:modules/queries/tests/integration/services/exports/query-export-routes.integration.spec.js#answers 404 to a colleague who did not ask for it, even once the file exists
15 A report schedule renders the current presentationinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-013-04 BR-CAP-PFM-QRY-015-12
Preconditions
A table report has a PDF schedule and its layout changes after scheduling.
Steps
Run the schedule, inspect its export and remove the owner’s report-use grant before the next occurrence.
Expected
The first occurrence uses the updated presentation; the next fails without a new file or delivery and pauses the schedule.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a requester who may not use reports access_lost, saying so plainly,services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#refuses Excel for a dashboard (400 at options.format)

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.