Subject: [ietf-provreg] EPP Implementation Test Matrix

From: "Hollenbeck, Scott" <[email-masked]>
Date: Thu, 6 Jul 2006 11:17:24 -0400

Here's the first draft of a complete EPP test matrix.  I've tried to
document the results of testing between two client implementations and
three server implementations, with all of the software being developed
independently.  I'm sharing it here so that all can see what was done,
how I'd like to report the results, and to catch any errors or
omissions.  Each row should have at least one "X" in it to confirm that
the feature was tested and confirmed in at least two implementations.  I
believe we've met that requirement.

Please clue me in if I've missed anything.

-Scott-
----------
Key:
 D-C: DotRegistrar Client
 K-C: Key Systems Client
 A-S: Afilias Server
 N-S: NeuStar Server
 V-S: VeriSign Server
 
 "X": Feature implemented and tested by both client and server.
 "*": Feature implemented by server, but not tested by client.
 "-": Feature not implemented or not tested.

Client Feature                             Client-Server Support
------------------------------------------------------------------------
-
                                    | D-C | D-C | D-C | K-C | K-C | K-C
|
                                    | A-S | N-S | V-S | A-S | N-S | V-S
|
------------------------------------------------------------------------
-
3734bis (TCP)
  TLS on TCP port 700               |  X  |  X  |  X  |  X  |  X  |  X
|
  TLS server authentication         |  X  |  X  |  X  |  X  |  X  |  X
|
  TLS client authentication         |  X  |  X  |  X  |  X  |  X  |  X
|
  EPP header                        |  X  |  X  |  X  |  X  |  X  |  X
|
  EPP <greeting> on open            |  X  |  X  |  X  |  X  |  X  |  X
|
  EPP <logout> close                |  X  |  X  |  X  |  X  |  X  |  X
|
------------------------------------------------------------------------
-
3730bis (EPP Core)
  EPP XML namespace URI             |  X  |  X  |  X  |  X  |  X  |  X
|
  EPP XML schema URI                |  X  |  X  |  X  |  X  |  X  |  X
|
  <hello>                           |  X  |  X  |  X  |  X  |  X  |  X
|
  <greeting>                        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <svcExtension>         |  X  |  *  |  X  |  X  |  X  |  X
|
    <dcp>                           |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <expiry>             |  X  |  X  |  -  |  X  |  -  |  -
|
  <command>                         |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <extension>            |  *  |  -  |  X  |  X  |  X  |  X
|
    OPTIONAL <clTRID>               |  X  |  X  |  X  |  X  |  X  |  X
|
  <response>                        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <value>                |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <extValue>             |  -  |  -  |  X  |  -  |  -  |  -
|
    OPTIONAL <msgQ>                 |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <qDate>              |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <msg>                |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <resData>              |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <extension>            |  -  |  X  |  -  |  X  |  X  |  X
|
  <login>                           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <newPW>                |  X  |  X  |  X  |  X  |  X  |  X
|
  <logout>                          |  X  |  X  |  X  |  X  |  X  |  X
|
  <check>                           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <reason>               |  -  |  -  |  X  |  -  |  X  |  -
|
  <info>                            |  X  |  X  |  X  |  X  |  X  |  X
|
  <poll op="req">                   |  X  |  X  |  X  |  X  |  X  |  X
|
  <poll op="ack">                   |  X  |  X  |  X  |  X  |  X  |  X
|
  <transfer> query                  |  X  |  X  |  X  |  -  |  -  |  -
|
  <create>                          |  X  |  X  |  X  |  X  |  X  |  X
|
  <delete>                          |  X  |  X  |  X  |  X  |  X  |  X
|
  <renew>                           |  X  |  X  |  X  |  X  |  X  |  X
|
  <transfer>                        |  X  |  X  |  X  |  X  |  X  |  X
|
  <update>                          |  X  |  X  |  X  |  X  |  X  |  X
|
 
------------------------------------------------------------------------
-
3731bis (EPP Domain)
  Status values                     |  X  |  X  |  X  |  X  |  X  |  X
|
  <check>                           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:reason>        |  X  |  -  |  -  |  -  |  X  |  -
|
  <info>                            |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL "hosts" attribute      |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <domain:authInfo>      |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:registrant>    |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:contact>       |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:ns>            |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:host>          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:crID>          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:crDate>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:exDate>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:upID>          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:upDate>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:trDate>        |  X  |  X  |  X  |  X  |  X  |  X
|
  <transfer> query                  |  X  |  X  |  X  |  -  |  -  |  -
|
    OPTIONAL <domain:authInfo>      |  X  |  X  |  X  |  *  |  -  |  -
|
    OPTIONAL <domain:exDate>        |  X  |  X  |  X  |  -  |  -  |  -
|
  <create>                          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:period>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:ns>            |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:registrant>    |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:contact>       |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:exDate>        |  X  |  X  |  X  |  X  |  X  |  X
|
  <delete>                          |  X  |  X  |  X  |  X  |  X  |  X
|
  <renew>                           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:period>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:exDate>        |  X  |  X  |  X  |  X  |  X  |  X
|
  <transfer>                        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:period>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL "roid" attribute       |  -  |  -  |  -  |  -  |  -  |  -
|
  <update>                          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:add>           |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <domain:ns>          |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <domain:contact>     |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <domain:status>      |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:rem>           |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <domain:ns>          |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <domain:contact>     |  X  |  X  |  -  |  X  |  X  |  X
|
      OPTIONAL <domain:status>      |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <domain:chg>           |  X  |  X  |  X  |  X  |  X  |  X
|
  Offline review                    |  -  |  -  |  X  |  -  |  X  |  X
|
------------------------------------------------------------------------
-
3732bis (EPP Host)
  Status values                     |  X  |  X  |  X  |  X  |  X  |  *
|
  <check>                           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <host:reason>          |  -  |  -  |  -  |  -  |  X  |  X
|
  <info>                            |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <host:addr>            |  X  |  X  |  X  |  X  |  X  |  X
|
  <create>                          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <host:addr>            |  X  |  X  |  X  |  X  |  X  |  X
|
  <delete>                          |  X  |  X  |  X  |  X  |  X  |  X
|
  <update>                          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <host:add>             |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <host:addr>          |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <host:status>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <host:rem>             |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <host:addr>          |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <host:status>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <host:chg>             |  X  |  X  |  X  |  X  |  X  |  X
|
  Offline review                    |  -  |  -  |  X  |  -  |  X  |  X
|
------------------------------------------------------------------------
-
3733bis (EPP Contact)
  Status values                     |  X  |  X  |  X  |  -  |  -  |  -
|
  <check>                           |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <contact:reason>       |  -  |  -  |  -  |  -  |  X  |  X
|
  <info>                            |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:authInfo>     |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <contact:org>          |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <contact:sp>           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:pc>           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:voice>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:fax>          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:disclose>     |  X  |  *  |  -  |  X  |  X  |  X
|
  <transfer> query                  |  X  |  X  |  -  |  -  |  -  |  -
|
    OPTIONAL <contact:authInfo>     |  X  |  X  |  -  |  *  |  -  |  -
|
  <create>                          |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <contact:org>          |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <contact:sp>           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:pc>           |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:voice>        |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:fax>          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:disclose>     |  X  |  X  |  -  |  X  |  X  |  X
|
  <delete>                          |  X  |  X  |  X  |  X  |  X  |  X
|
  <transfer>                        |  X  |  X  |  -  |  X  |  X  |  X
|
  <update>                          |  X  |  X  |  X  |  X  |  X  |  X
|
    OPTIONAL <contact:add>          |  X  |  X  |  -  |  X  |  X  |  X
|
      OPTIONAL <contact:status>     |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <contact:rem>          |  X  |  X  |  -  |  X  |  X  |  X
|
      OPTIONAL <contact:status>     |  X  |  X  |  -  |  X  |  X  |  X
|
    OPTIONAL <contact:chg>          |  X  |  X  |  -  |  X  |  X  |  X
|
      OPTIONAL <contact:postalInfo> |  X  |  X  |  X  |  X  |  X  |  X
|
        OPTIONAL <contact:street>   |  X  |  X  |  X  |  X  |  X  |  X
|
        OPTIONAL <contact:sp>       |  X  |  X  |  X  |  X  |  X  |  X
|
        OPTIONAL <contact:pc>       |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <contact:voice>      |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <contact:fax>        |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <contact:email>      |  X  |  X  |  X  |  X  |  X  |  X
|
      OPTIONAL <contact:authInfo>   |  X  |  X  |  -  |  X  |  X  |  X
|
      OPTIONAL <contact:disclose>   |  -  |  -  |  -  |  X  |  X  |  X
|
  Offline review                    |  *  |  -  |  X  |  *  |  -  |  -
|
------------------------------------------------------------------------
-

---

From: Klaus Malorny <[email-masked]>
Date: Thu, 06 Jul 2006 18:54:51 +0200

> Please clue me in if I've missed anything.

Hi Scott,

I am not sure whether I understand why you send this to this list. We can't 

>     OPTIONAL <value>                |  X  |  X  |  X  |  X  |  X  |  X

How can I verify that? I don't know what DotRegistrar and Key Systems get from 
Afilias and Neulevel, but I know what we get, and because of this, I wouldn't 
put an 'X' here. Your draft (draft-hollenbeck-epp-rfc3730bis-01, the latest I 
could find) says:

          Zero or more OPTIONAL <value> elements that identify a client-
          provided element (including XML tag and value) that caused a
          server error condition.

Well, Afilias and Neulevel put a lot of stuff into the value element, like 
additional error codes, comments and so on, but nothing that identifies a 
client-provided element. If, for example, a domain:info command fails because 
the domain does not exist, I would expect the <value> element to contain 
"<domain:name>example.com</domain:name>" as the content, but this does not 
happen at the two registries.

This is not a special attack against Afilias and Neulevel in favour of Verisign. 
As I am not involved in our transition to EPP at Verisign, I simply don't know 
whether Verisign is any better and eats its own dog food.

Howsoever, I would be surprised if you would do anything but to ignore my 
objections -- as usual.

Regards,

Klaus

___________________________________________________________________________
      |       |
      | knipp |                   Knipp  Medien und Kommunikation GmbH
       -------                           Technologiepark
                                         Martin-Schmeißer-Weg 9
      Dipl. Inf. Klaus Malorny           44227 Dortmund
      [email-masked]             Tel. +49 231 9703 0