The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use Net::DRI;
use Test::More;

unless ($ENV{TEST_GANDI_WS_LIVE_CLIENTID} && $ENV{TEST_GANDI_WS_LIVE_CLIENTPASS})
{
 plan skip_all => 'Set $ENV{TEST_GANDI_WS_LIVE_CLIENTID} and $ENV{TEST_GANDI_WS_LIVE_CLIENTPASS} if you want (normally harmless) *live* tests for Gandi';
} else
{
 plan tests => 4;
}

my $dri=Net::DRI->new({cache_ttl => 10});
$dri->add_registry('Gandi');
$dri->target('Gandi')->add_current_profile('p1','ws',{client_login=>$ENV{TEST_GANDI_WS_LIVE_CLIENTID},client_password=>$ENV{TEST_GANDI_WS_LIVE_CLIENTPASS}});

my $ok=eval 
{
 my $rc=$dri->account_list_domains();
 diag('Got session ID '.$dri->transport()->session_data()->{id});
 is($rc->is_success(),1,'account_list_domains() is_success') or diag(sprintf('Code=%s Native_Code=%d Message=%s',$rc->code(),$rc->native_code(),$rc->message()));
 my $rd=$dri->get_info('list','account','domains');
 is(ref($rd),'ARRAY','get_info(list,account,domains)');
 diag('Successfully retrieved list of '.scalar(@$rd).' domain names: '.join(' ',@$rd));
 my $rd2=$dri->get_info('list');
 is_deeply($rd2,$rd,'get_info(list,account,domains) and get_info(list) give the same results');

 $rc=$dri->domain_info($rd->[0]);
 is($rc->is_success(),1,'domain_info() is_success') or diag(sprintf('Code=%s Native_Code=%d Message=%s',$rc->code(),$rc->native_code(),$rc->message()));
 my @i=$dri->get_info_keys();
 diag('Successfully got information about: '.join(' ',@i));

 $dri->end();
};

diag('Caught unexpected exception: '.(ref($@)? $@->as_string() : $@)) if ! $ok;

exit 0;