porkbun-ddns is an unofficial DDNS client for Porkbun. It runs as a pip package or a Docker container, and sets/updates A (IPv4) and AAAA (IPv6) DNS records, only updating when IPs change.
-
e2e test: A hermetic test that runs the client's full request path (Config → PorkbunDDNS → HTTP → mock API) without touching the real Porkbun API or real DNS records. Avoid: integration test, smoke test
-
container e2e test: A test that runs the real Docker image (with its real entrypoint) against the mock running as a sidecar container, verifying env-var wiring (e.g.
API_ENDPOINT) end-to-end. Runs in docker.yml viaDocker/test/e2e.shon the native-runner platforms. -
smoke test: A manual live-API harness (
local_test.py, gitignored) that exercises real DNS records on a real domain with real API keys. Avoid: e2e test -
mock: The hand-written fake of the Porkbun JSON API v3 used by e2e tests, covering only the DNS endpoints the client calls. It also runs standalone as a docker sidecar (via a
__main__block) for the container e2e test. -
fault injection: The mock's
fail_nextcounter, which makes the next N requests return HTTP 500 so the client's retry logic can be tested end-to-end. -
endpoint override: Pointing the client at a non-default API base URL (CLI
--endpoint,PORKBUN_ENDPOINT/API_ENDPOINTenv vars, config-fileendpoint) — used to run against a mirror, proxy, or the mock. -
canary: A scheduled check (GitHub Actions
api-canary.yml) that verifies the default API endpoint is reachable and the mock still conforms to the live API spec.