Net-DRI

 view release on metacpan or  search on metacpan

t/633norid_epp.t  view on Meta::CPAN

#!/usr/bin/perl -w

use DateTime::Duration;
use Net::DRI;
use Net::DRI::Data::Raw;

use Test::More tests => 287;

our $E1='<?xml version="1.0" encoding="UTF-8" standalone="no"?><epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">';
our $E2='</epp>';
our $TRID='<trID><clTRID>ABC-12345</clTRID><svTRID>54322-XYZ</svTRID></trID>';

our $R1;
sub mysend
{
 my ($transport,$count,$msg)=@_;
 $R1=$msg->as_string();
 return 1;
}

our $R2;
sub myrecv
{
 return Net::DRI::Data::Raw->new_from_string($R2? $R2 : $E1.'<response>'.r().$TRID.'</response>'.$E2);
}

my $dri=Net::DRI::TrapExceptions->new(10);
$dri->{trid_factory}=sub { return 'ABC-12345'; };
$dri->add_registry('NO');
$dri->target('NO')->add_current_profile('p1','test=Net::DRI::Protocol::EPP::Extensions::NO',{f_send=>\&mysend,f_recv=>\&myrecv});

my $rc;
my $s;
my $d;
my ($dh,@c);

## Domain commands
my %facetsh = (
    'skip-manual-review'    =>1,
    'impersonate-registrar' => 'reg9094');

my $no_facet = { facets => \%facetsh };

my $NO_FACET=
'<extension><no-ext-epp:extended xmlns:no-ext-epp="http://www.norid.no/xsd/no-ext-epp-1.0" xsi:schemaLocation="http://www.norid.no/xsd/no-ext-epp-1.0 no-ext-epp-1.0.xsd"><no-ext-epp:facet name="skip-manual-review">1</no-ext-epp:facet><no-ext-epp:face...

my $ddomain = "example3.no";
my $fdomain = "facet-$ddomain";

######################
# Domain commands
#

#--- domain_check

foreach my $OP ( "", $NO_FACET) {
    my $facet;
    my $domain = $ddomain;
    if ($OP) {
       $facet = $no_facet;
       $domain = $fdomain;
    }
    $R2=$E1.'<response>'.r().'<resData><domain:chkData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:cd><domain:name avail="1">'.$domain.'</domain:name></domain:cd></dom...
    $rc=$dri->domain_check($domain, $facet);
    is($R1,$E1.'<command><check><domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:name>'.$domain.'</domain:name></domain:check></check>'.$OP. '<clTRID>ABC-1234...
    is($rc->is_success(),1,'domain_check is_success');
    is($dri->get_info('action'),'check','domain_check get_info(action)');
    is($dri->get_info('exist'),0,'domain_check get_info(exist)');
    is($dri->get_info('exist','domain',$domain),0,"domain_check $domain get_info(exist) from cache");
}


#---- domain_check_multi

$R2=$E1.'<response>'.r().'<resData><domain:chkData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:cd><domain:name avail="1">example22.no</domain:name></domain:cd><domain:...
$rc=$dri->domain_check_multi('example22.no','example2.no');
is($R1,$E1.'<command><check><domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:name>example22.no</domain:name><domain:name>example2.no</domain:name></domain:che...
is($rc->is_success(),1,'domain_check_multi is_success');
is($dri->get_info('exist','domain','example22.no'),0,'domain_check_multi get_info(exist) 1/2');
is($dri->get_info('exist','domain','example2.no'),1,'domain_check_multi get_info(exist) 2/2');
is($dri->get_info('exist_reason','domain','example2.no'),'In use','domain_check_multi get_info(exist_reason)');


#---- domain_info
foreach my $OP ( "", $NO_FACET) {
    my $facet;
    my $domain = $ddomain;
    if ($OP) {
       $facet =  \%facetsh;
       $domain = $fdomain;
    }
    $R2=$E1.'<response>'.r().'<resData><domain:infData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:name>'.$domain.'</domain:name><domain:roid>EXAMPLE1-REP</domain:roid...

     $rc=$dri->domain_info($domain,  { auth => {pw=>'2fooBAR'}, facets => $facet });

    is($R1,$E1.'<command><info><domain:info xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:name hosts="all">'.$domain.'</domain:name><domain:authInfo><domain:pw>2fooBAR</...

    is($dri->get_info('action'),'info','domain_info get_info(action)');

    is($dri->get_info('exist'),1,'domain_info get_info(exist)');
    is($dri->get_info('roid'),'EXAMPLE1-REP','domain_info get_info(roid)');
    $s=$dri->get_info('status');
    isa_ok($s,'Net::DRI::Data::StatusList','domain_info get_info(status)');
    is_deeply([$s->list_status()],['ok'],'domain_info get_info(status) list');
    is($s->is_active(),1,'domain_info get_info(status) is_active');
    $s=$dri->get_info('contact');
    isa_ok($s,'Net::DRI::Data::ContactSet','domain_info get_info(contact)');
    is_deeply([$s->types()],['admin','registrant','tech'],'domain_info get_info(contact) types');
    is($s->get('registrant')->srid(),'jd1234','domain_info get_info(contact) registrant srid');
    is($s->get('admin')->srid(),'sh8013','domain_info get_info(contact) admin srid');
    is($s->get('tech')->srid(),'sh8013','domain_info get_info(contact) tech srid');
    $dh=$dri->get_info('host');
    isa_ok($dh,'Net::DRI::Data::Hosts','domain_info get_info(host)');
    @c=$dh->get_names();
    is_deeply(\@c,['ns1.example.no','ns2.example.no'],'domain_info get_info(host) get_names');
    $dh=$dri->get_info('ns');
    isa_ok($dh,'Net::DRI::Data::Hosts','domain_info get_info(ns)');
    @c=$dh->get_names();
    is_deeply(\@c,['ns1.example.no','ns2.example.no'],'domain_info get_info(ns) get_names');
    is($dri->get_info('clID'),'ClientX','domain_info get_info(clID)');
    is($dri->get_info('crID'),'ClientY','domain_info get_info(crID)');
    $d=$dri->get_info('crDate');
    isa_ok($d,'DateTime','domain_info get_info(crDate)');
    is("".$d,'1999-04-03T22:00:00','domain_info get_info(crDate) value');
    is($dri->get_info('upID'),'ClientX','domain_info get_info(upID)');
    $d=$dri->get_info('upDate');
    isa_ok($d,'DateTime','domain_info get_info(upDate)');
    is("".$d,'1999-12-03T09:00:00','domain_info get_info(upDate) value');
    $d=$dri->get_info('exDate');
    isa_ok($d,'DateTime','domain_info get_info(exDate)');
    is("".$d,'2005-04-03T22:00:00','domain_info get_info(exDate) value');
    $d=$dri->get_info('trDate');
    isa_ok($d,'DateTime','domain_info get_info(trDate)');
    is("".$d,'2000-04-08T09:00:00','domain_info get_info(trDate) value');
    is_deeply($dri->get_info('auth'),{pw=>'2fooBAR'},'domain_info get_info(auth)');
}

#---  domain_info without auth

$R2=$E1.'<response>'.r().'<resData><domain:infData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:name>example200.no</domain:name><domain:roid>EXAMPLE1-REP</domain:roid><...
$rc=$dri->domain_info('example200.no');
is($R1,$E1.'<command><info><domain:info xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd"><domain:name hosts="all">example200.no</domain:name></domain:info></info><clTRID>ABC-12345<...
is($dri->get_info('exist'),1,'domain_info get_info(exist)');
is($dri->get_info('roid'),'EXAMPLE1-REP','domain_info get_info(roid)');
is($dri->get_info('clID'),'ClientX','domain_info get_info(clID)');



( run in 0.778 second using v1.01-cache-2.11-cpan-e1769b4cff6 )