Skip to content

icann/rst-epp-selftest-tool

Purpose

The purpose of the EPP Selftest Tool is to help gTLD applicants prepare for Pre-Delegation Testing (PDT) by clarifying the transformation from input XML to submitted EPP commands.

Scope

While the EPP Selftest Tool does send actual EPP requests and does report the EPP responses, it does not verify the the correctness of the responses. Neither does it verify the pre- and post-conditions listed in the PDT EPP test case specifications.

Disclaimer

The EPP Selftest Tool and the actual EPP testing under PDT are not equal. There is no guarantee that successfully running the EPP Selftest Tool means that the same EPP system will pass the EPP testing under PDT. For example, the parts of EPP tests under PDT that include DNS or Whois lookups are not included in the EPP Selftest Tool. For a complete reference of the EPP tests under PDT see the PDT EPP documents.

Version history

  • v2.2.0 - Updated XML schema (2014-06-27)
  • v2.1.0 - SNI support, clean-up, bug fixes (2014-03-13)
  • v2.0.0 - Initial public release (2013-09-27)
  • v1.0.0 - Unpublished internal version

References

The Pre-Delegation Testing microsite hosts the following documents relevant to the EPP Selftest Tool:

  • The PDT_EPP_TC document, within the PDT Test Specifications zip, specifies the test cases that the EPP Selftest Tool partially implements.
  • The pdtepp.xml file, within the PDT Input Data Templates zip, is a template for the input data XML file.
  • The EPP test section of the PDT Input Data Instructions document describes how to fill in the input data XML template.

Specification compatibility matrix

Refer to this compatibility matrix when deciding which version of EPP Selftest Tool to use.

EPP Selftest Tool versionPDT Input Data TemplatesPDT Test Specifications
v2.2.0v.2.4v.2.4
v2.1.0v.2.31v.2.3
v2.0.0v.2.2v.2.2

1 For SNI-support, the pdtepp.xsd of the PDT Input Data Templates zip needs to be replaced with the pdtepp.xsd supplied with the EPP-Selftest-Tool. No replacement for the pdtepp.rnc of the PDT Input Data Templates zip is provided.

Licensing

The entire source code is this license except ireg which is LGPL 2.1, Client.php which is GPL 2.0 and parseIniFile.php which is Creative Commons Attribution. Refer to the respective files for copyright ownership.

Dependencies

  • Ubuntu 12.04
  • Perl 5.14
    • Config::IniFiles
    • DateTime
    • List::MoreUtils
    • XML::LibXML
    • XML::Simple
  • PHP 5.3
    • PEAR

Installation

Clone the project repository and choose version according to the specification compatibility matrix.

$> git clone https://github.com/dotse/EPP-Selftest-Tool.git <installdir>
$> cd <installdir>
$> git checkout <version>

<installdir> is assumed to be in the PATH in code examples throughout the rest of this document.

Basic usage

Working directory setup

  1. Create a new directory <workdir>
  2. Create a log directory <workdir>/log
  3. Extract the pdtepp.xml template file into <workdir>
  4. Fill in the pdtepp.xml template file according to the PDT Input Data Instructions and PDT_EPP_TC documents

<workdir> is assumed to be the current working directory in code examples throughout the basic usage section.

Input data validation

Validate the input data and convert it to the intermediate format used by epp-test:

$> epp-convert --zone <TLD>

epp-convert reads pdtepp.xml as input. As output it writes config.ini and either writes or deletes cert.pem depending on whether or not the input file contains a client certificate for connecting to the EPP server.

The --zone parameter is used to sanity-check the domain names used in the input data.

Test case selection

List the names of all available test cases:

$> epp-test --list

Test case execution

Run a test case using this command:

$> epp-test --case <testcase>

When called with the --case parameter, the epp-test command executes the EPP transactions determined by the --case argument and the contents of the config.ini file. The response code of each transaction is printed to STDOUT and a more detailed log is written to log/<testcase>.log.

NOTE: Test cases may consume test data, so in order to run a test case again the test data needs to be reset or new data needs be supplied.

Advanced usage

The basic usage described above can be adapted to other settings by using additional command line parameters. For details please refer to the usage information of the respective commands.

$> epp-convert --help
$> epp-test --help

Troubleshooting

  • epp-test is unable to resolve an EPP server domain name in an undelegated zone:

    The domain name resolution is performed by the operating system. In order help the operating system resolve the name you can add an entry to your hosts file or use a custom DNS server that does delegate the zone.