---
id: TST-PFM-DJE-174
title: Upload session paging
kind: integration
product_area: platform
module: data-job-engine
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: services-platform
files:
  - modules/data-jobs/tests/integration/services/persistence/uploads.queries.integration.spec.js
implements: []
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Suite-owned fixture records, job identifiers and workspace contexts; teardown removes the fixture
  data.
evidence:
  - >-
    services-platform:modules/data-jobs/tests/integration/services/persistence/uploads.queries.integration.spec.js
assertion_inventory:
  - 'data-job uploads: reading one session'
  - 'answers every element the record is mapped from, for a session that has completed'
  - >-
    answers the size and the part size as numbers, which the bigint columns would otherwise read as
    strings
  - answers each instant as an ISO 8601 timestamp in UTC
  - answers nothing for an id the tenant has no session under
  - 'data-job uploads: paging a tenant\u2019s sessions'
  - 'answers the tenant\u2019s sessions in id order, which is the order they were opened'
  - answers no cursor when the tenant\u2019s sessions are exhausted
  - 'includes no session of another tenant, however many it has'
  - >-
    answers the other tenant its own session, which is the premise that the absence above is the
    filter
  - answers one state alone when one is asked for
  - >-
    answers the completed session for the completed state, so the filter is the column and not a
    default
  - answers the aborted and the expired sessions under their own states
  - 'answers a page of the size asked for, with the cursor to resume after'
  - 'resumes after the cursor, answering the rest and no cursor'
  - 'pages a filtered list by the same cursor, so a state and a cursor work together'
  - 'refuses a page larger than the maximum, rather than answering an unbounded list'
  - refuses a page of none
  - refuses a state that is not one of the four
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Upload session paging

## Verification Boundary

The suite checks the production service or shared engine against its database fixture. The structured assertion inventory records the checks present at the pinned revision.

## What This Suite Proves

The existing checks exercise upload session paging. The specification bindings identify the narrower outcomes supported by those assertions.

## What It Does Not Prove

Local execution does not establish deployed queue, storage or service behavior. Independent test cases do not establish a complete cross-feature process.

## Real Dependencies and Test Doubles

The owning service exercises production persistence and domain behavior against real Postgres. The fixture supplies caller contexts; queue delivery, storage and external calls are doubled where the file installs a test port.

## Must Not Be Doubled

The database effects, security context and production operation under examination remain real. Their outcomes cannot be replaced with canned success responses.
