NAME

IO::EPP::Test::Server

SYNOPSIS

use IO::EPP::Test::Server;

my $s = new IO::EPP::Test::Server( $obj->{sock} ); # $obj->{sock} eq 'epp.example.com:700'

# contacts
my $conts = $s->data->{conts}
# nameservers
my $nss = $s->data->{nss};
# domains
my $doms = $s->data->{doms};

DESCRIPTION

For testing IO::EPP::Xxxx, Provides storage of pseudo registries

AUTHORS

Vadim Likhota <vadiml@cpan.org>

Data storage format

Server is cache of data:

  • first level -- server as url:port

  • second level -- object type: contact, ns, domain, poll

  • third level -- object data

Examples of data:

Dump of contact

'conts' => {
        'TEST-b123' => {
                         'statuses' => {
                                         'ok' => '+',
                                         'linked' => 2
                                       },
                         'int' => {
                                    'addr' => {
                                                'pc' => '83000',
                                                'cc' => 'UA',
                                                'city' => 'Donetsk',
                                                'street' => [
                                                              'Vagnera 11-22-33'
                                                            ],
                                                'sp' => 'Donetskaya'
                                              },
                                    'name' => 'Test Testov'
                                  },
                         'updater' => 'test',
                         'creater' => 'test',
                         'id' => 'TEST-b123',
                         'authInfo' => 'Q2+qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq',
                         'email' => [
                                      'test0101@ya.ru'
                                    ],
                         'fax' => [],
                         'cre_date' => '2019-09-23T22:38:56.0Z',
                         'roid' => '0BC370A917642D744F69514FD4838029-TEST',
                         'owner' => 'test',
                         'reason' => 'in use',
                         'voice' => [
                                      '+380.987654321'
                                    ],
                         'upd_date' => '2019-09-23T22:38:56.0Z'
                       },
        },

Dump of nameserver

'nss' => {
        'ns1.my.com' => {
                          'addr_v4' => [
                                         '11.22.33.44',
                                         '11.22.44.88'
                                       ],
                          'roid' => '873CAEF521E887055DC202BE0AC271F0-TEST',
                          'addr_v6' => [],
                          'avail' => 0,
                          'reason' => 'in use',
                          'creater' => 'test',
                          'statuses' => {
                                          'ok' => '+',
                                          'linked' => 1
                                        },
                          'owner' => 'test',
                          'cre_date' => '2019-09-23T22:46:33.0Z'
                        }
        },

Dump of domain

'doms' => {
        'nssdom.best' => {
                           'upd_date' => '2019-09-23T22:54:12.0Z',
                           'create' => 'test',
                           'nss' => {
                                      'ns1.reg.com' => '+',
                                      'ns2.reg.com' => '+'
                                    },
                           'hosts' => {},
                           'exp_date' => '2020-09-23T22:54:12.0Z',
                           'cre_date' => '2019-09-23T22:54:12.0Z',
                           'trans_date' => '2019-09-23T22:54:12.0Z',
                           'billing' => [
                                          'TEST-b123'
                                        ],
                           'statuses' => {
                                           'ok' => '+'
                                         },
                           'tech' => [
                                       'TEST-t123'
                                     ],
                           'authInfo' => 'bfhRem884mfmf,FMd:fnnfe',
                           'avail' => 0,
                           'reason' => 'in use',
                           'owner' => 'test',
                           'registrant' => 'TEST-r123',
                           'admin' => [
                                        'TEST-a123'
                                      ],
                           'roid' => 'C3163119E2B3E038F41A60248A2B4214-TEST'
                         },
       },

DIRECT ACCESS TO DATA

An Example:

my $srv_url = "$socket_data->{PeerHost}:$socket_data->{PeerPort}";
# or $srv_url = $obj->{sock};
my $s = new IO::EPP::Test::Server( $srv_url );
my $doms  = $s->data->{doms};

# Set reg_id as admin_id
$doms->{'nssdom.best'}{reg_id} = $doms->{admin_id}[0];

# Add new ns
push @{$doms->{'nssdom.best'}{nss}}, 'ns9.reg.com';

$doms->{'new_busy_domain.com'} = { avail => 0, reason => 'in use' };

See IO::EPP::Test::Base also.