Api Platform Tests (Symfony)
Use when
- Writing functional tests for API Platform endpoints: collection, item, create, update, delete.
- Asserting validation errors (422) and access control (401, 403).
- Checking filters, pagination, or the JSON schema of responses.
- Setting up a clean database and test data for API tests.
Default workflow
- Extend
ApiTestCase and seed data with Foundry factories (createOne, createMany).
- Reset state with
#[ResetDatabase] and the Factories trait, with DAMA rolling back each test.
- Call
static::createClient()->request() and assert the status code, content type, and assertJsonContains().
- Authenticate with
auth_bearer and cover the anonymous, owner, and other-user cases.
- Assert
member and totalItems for filters and pagination (hydra:-prefixed only with hydra_prefix: true).
- Assert the shape with
assertMatchesResourceItemJsonSchema() and assertMatchesResourceCollectionJsonSchema().
Guardrails
- Send
PATCH with the application/merge-patch+json content type.
#[ResetDatabase] needs PHPUnit 10+ and Foundry 2.9: use the ResetDatabase trait on PHPUnit 9.
- Cover the failure paths too: 404, 422, 401, 403. A type error on a constrained property is 422 in 5.0 but 400 in 4.4 and earlier.
- Read the configured items per page rather than hardcoding a page size in assertions.
Progressive disclosure
- Use this file for execution posture and risk controls.
- Open references when deep implementation details are needed.
Output contract
- The test classes added and the endpoints they cover.
- Factories and reset strategy used.
- Test run output, including the failure paths.
References