3.3 KiB
Local Compatibility Harness
Purpose
Run a local, deterministic compatibility harness that exercises the current requirements for:
- Admin navigation pages (
Edit Calendar,Users,Setup) - API CRUD and user lifecycle endpoints
- Shared-calendar CalDAV read/write flows
- ICS export endpoint
Seed data includes canonical test fixtures CE-001 through CE-010 from tests/calendar_entries.md.
Quick Start
From repository root:
./compatibility-layer/reset.sh
./compatibility-layer/seed.sh
./compatibility-layer/run.sh
Server default:
http://127.0.0.1:8080
WP Emulation Check
Run the stand-alone local WordPress emulation check (loads plugin code from code/ and runs a minimal E2E flow):
./compatibility-layer/e2e_wp_emulation.php
Harness Authentication Model
This harness uses simple test auth headers/credentials to emulate behavior.
Admin/API (WordPress-style harness auth)
- Header:
X-WP-User: admin(full admin) - Header:
X-WP-User: editor(editor-limited)
CalDAV (plugin user basic auth over local HTTP harness)
Seeded users:
rw_user@example.test/rwpass123456(write)ro_user@example.test/ropass123456(read_only)
Key Endpoints
Admin Pages
/wp-admin/admin.php?page=calendar-edit&as=admin/wp-admin/admin.php?page=calendar-users&as=admin/wp-admin/admin.php?page=calendar-setup&as=admin
Interactive pages available:
- Public calendar UI:
/calendar - User self-service portal:
/users
If setup url_slug is configured (for example demo), canonical URLs move under that prefix (for example /demo/calendar, /demo/users, /demo/wp-json/calendar/v1/..., /demo/calendar.ics, /demo/caldav/...).
API
/wp-json/calendar/v1/events/wp-json/calendar/v1/events/{id}/wp-json/calendar/v1/events/{id}/occurrences/{occurrence_key}/wp-json/calendar/v1/users/register/wp-json/calendar/v1/users/verify/wp-json/calendar/v1/users/forgot-password/wp-json/calendar/v1/users/reset-password/wp-json/calendar/v1/users/{id}/request-write/wp-json/calendar/v1/admin/users/wp-json/calendar/v1/admin/users/{id}/wp-json/calendar/v1/admin/setup/wp-json/calendar/v1/public/events/wp-json/calendar/v1/users/me
ICS
/calendar.ics
CalDAV (single shared public calendar)
/caldav//caldav/calendars//caldav/calendars/public//caldav/calendars/public/{object_id}.ics
Smoke Commands
List events:
curl -sS -H 'X-WP-User: admin' http://127.0.0.1:8080/wp-json/calendar/v1/events
Delete one recurring occurrence as exception:
curl -sS -X DELETE \
-H 'X-WP-User: admin' \
"http://127.0.0.1:8080/wp-json/calendar/v1/events/10/occurrences/2026-04-17T14:00:00+01:00" \
-i
Fetch ICS:
curl -sS http://127.0.0.1:8080/calendar.ics
CalDAV read as read-only user:
curl -sS -u ro_user@example.test:ropass123456 \
http://127.0.0.1:8080/caldav/calendars/public/1.ics -i
Notes
- This compatibility harness is intentionally minimal and deterministic for local development.
- It is not a production security implementation.
- It enforces the shared-calendar model with per-user read/write permissions.
- Current implementation delegates to
fixture/internals via wrapper scripts incompatibility-layer/.