The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with  -*-perl-*-
# `make test'. After `make install' it should work as `perl 1.t'


# This is exactly the same test config as t/1.t except that it uses
# the new config file format.

#########################

use Data::Dumper;


use Test::More tests => 23;
BEGIN { use_ok('Net::DNS::TestNS') };



ok ($server=Net::DNS::TestNS->new("t/testconf4.xml",{
	Verbose => 1,
  }	),
	"Server object created");



ok (my $res=Net::DNS::Resolver->new(nameservers => ['127.0.0.1'],
				    port => 5354,
				    recurse => 0
				    ),

"Resolver object created");

$res->print;




ok ($server->verbose, "Verbose is being set");
$server->verbose(0);
ok  (!$server->verbose, "Verbose is toggled off");
$server->verbose(1);
ok  ($server->verbose, "Verbose is toggled on");
$server->verbose(0); # Otherwise the test script will be confused

$server->run;

my $packet=$res->send("bla.foo","ANY");
ok ($packet->header->aa, "aa bit set on the answer");
ok (! $packet->header->ad, "ad bit not set on the answer");

ok (! $packet->header->ra, "ra bit not set on the answer");
ok ($packet->header->rcode eq "FORMERR", "FORMERR");
ok ($packet->answer == 0, "Empty answer section");
ok ($packet->authority == 0, "Empty  authority section");
ok ($packet->additional == 0, "Empty additional section");


undef $packet;

my $packet2=$res->send("bla.foo","TXT");


my $check=[
	   Net::DNS::RR->new('bla.foo. 3600	IN	TXT	"TEXT"'),
	   Net::DNS::RR->new('bla.foo.		3600	IN	TXT	"Other text" ')
	   ];




is ($check->[0]->string,($packet2->answer)[0]->string,"First Answer RR equals");
is ($check->[1]->string,($packet2->answer)[1]->string,"Second Answer RR equals");


#NXDOMAIN but two answers...

$res->debug(1);
$res->port(5355);

my $packet3=$res->send("bla.foo","TXT");

ok (!$packet3->header->aa, "aa bit not set on the answer");
ok ( $packet3->header->ad, "ad bit set on the answer");
ok ( $packet3->header->ra, "ra bit set on the answer");



$check=[
	 Net::DNS::RR->new('bla.foo. 3600	IN	TXT	"TEXT"'),
Net::DNS::RR->new('bla.foo.		3600	IN	TXT	"From port 5355" ')
	   ];


is ($packet3->header->rcode,"NXDOMAIN", "RCODE set to NXDOMAIN");
is ($check->[0]->string,($packet3->answer)[0]->string,"First Answer RR equals");
is ($check->[1]->string,($packet3->answer)[1]->string,"Second Answer RR equals");



$server->medea;

is ( Net::DNS::TestNS->new("t/testconf3.xml",{
	Verbose => 1,
 }	), 0,"Broken config file failed object creation");
		
is ( $Net::DNS::TestNS::errorcondition, "Could not open t/broken during preporcessing", "Errorcondition set appropriatly");