Skip to content
riftcellPublic

About

A Go test framework for EPP (domain registry protocol) client libraries, with first-class support for InternetX, NiCAT, EURid, and DENIC — including DENIC's proprietary RRI protocol.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

EPP Test Framework

CI

A Go test framework for EPP (Extensible Provisioning Protocol) client libraries, with first-class support for InternetX, NiCAT, EURid, and DENIC. Covers the full EPP operation surface — domains, contacts, hosts, polling — plus DENIC's proprietary text-based RRI protocol. Tests run locally against in-process mock servers and against OT&E/sandbox environments using the same test code and without any changes to configuration.

Core value: Give EPP client developers fast, reliable, locally-runnable tests that also work against real registrar environments. Write a scenario once; run it offline against a mock server or live against an OT&E endpoint by switching a config file.

Run the Mock Server with Docker

No Go needed: run the mock servers from Docker and point your EPP or RRI client (PHP, Python, Java, …) at them.

# EPP over TLS on 127.0.0.1:7700
docker run --rm -p 7700:7700 riftcell/epp-mock:latest

# DENIC RRI over plain TCP on 127.0.0.1:7701
docker run --rm -p 7701:7701 --entrypoint /mock-rri-server riftcell/epp-mock:latest -addr 0.0.0.0:7701

# With a fault flag: repeat -addr, because passing arguments replaces the default CMD
docker run --rm -p 7700:7700 riftcell/epp-mock:latest -addr 0.0.0.0:7700 --login-mode=always

Note: any arguments after the image name replace the default -addr 0.0.0.0:7700, so always include -addr 0.0.0.0:<port> when you pass flags. Without it the server listens only on the container's loopback and the published port can't be reached.

See How-To: Docker Mock for wire framing, TLS settings and what the mock returns. Ready-to-run PHP clients are in docs/examples/php/.

Quick Start

# 1. Clone the repository (or add as a Go module dependency)
git clone https://github.com/riftcell/epp-test && cd epp-test

# 2. Copy the example config (unit tests need no real credentials)
cp configs/epp-test.example.yaml epp-test.yaml

# 3. Run the unit test suite
go test -tags unit ./...

Documentation

Guide Description
Getting Started Install, configure, and run your first test in under 10 minutes
How-To: Docker Mock Test a client in any language (e.g. PHP) against the riftcell/epp-mock image
How-To: Domains Domain lifecycle: check, create, info, update, renew, transfer, delete
How-To: Contacts Contact lifecycle: create, info, update, delete, domain association
How-To: Hosts Host lifecycle: create subordinate nameserver, info, update glue, delete
How-To: Polling EPP message queue: trigger, wait, assert content, ack, verify empty
How-To: DENIC RRI DENIC-specific RRI operations: TRANSIT, AUTHINFO1/AUTHINFO2, info, delete
Config Reference Every RegistrarConfig field with env var, type, default, and validation
Architecture 4-layer diagram and how to add a new registrar
Conventions Go coding conventions for this project
Security Security policy and vulnerability reporting
How-To: Integration Testing Three-tier testing strategy: in-process, standalone mock server, and real OT&E
License MIT license terms for this project
Contributors People who have contributed to this project

Test Modes

Command What runs
go test ./... Compile-time assertions only (no network, no mock servers)
go test -tags unit ./... Full unit suite using in-process mock servers (offline, fast)
make mock-epp-server / make mock-rri-server Long-running mock server in a separate process for manual integration testing
docker run -p 7700:7700 riftcell/epp-mock:latest Same mock server from Docker, for clients in any language (see Docker Mock)
go test -tags integration ./... Integration suite against OT&E endpoints (requires credentials)

See How-To: Integration Testing for a detailed walkthrough of all three tiers, including Docker Compose examples.

Continuous Integration

Every push and pull request to main runs the CI workflow defined in .github/workflows/ci.yml. Each CI step has a local equivalent so a red build can be reproduced without reading the YAML:

CI step Local command
Build make build
Vet make vet
Compile check make test
Unit tests make test-unit
Lint make lint
Vulnerability scan make govulncheck

CI runs only the offline unit-tagged suite against in-process mock servers. Integration tests (make test-integration, ./run-integration.sh) are not run in CI because they need OT&E credentials and network access to registrar sandboxes; run them locally or in a separate credentialed pipeline.

Unit test reports (junit.xml, report.json, report.txt, report.html) are uploaded as the unit-test-reports artifact on every run, including failures.

Module Path

github.com/riftcell/epp-test

Requires Go 1.26.9 or later.

About

A Go test framework for EPP (domain registry protocol) client libraries, with first-class support for InternetX, NiCAT, EURid, and DENIC — including DENIC's proprietary RRI protocol.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages