#!/usr/bin/perl # Unit tests for various things that have identifiers use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 18; use Data::UUID (); use PITA::XML (); my $md5sum = '0123456789abcdef0123456789abcdef'; sub dies_like { my $code = shift; my $regexp = shift; eval { &$code() }; like( $@, $regexp, $_[0] || 'Code dies like expected' ); } my $uuid = Data::UUID->new; isa_ok( $uuid, 'Data::UUID' ); ##################################################################### # Basic tests # Create a normal request my $dist = PITA::XML::Request->new( scheme => 'perl5', distname => 'Foo-Bar', file => PITA::XML::File->new( filename => 'Foo-Bar-0.01.tar.gz', digest => 'MD5.' . $md5sum, ), ); isa_ok( $dist, 'PITA::XML::Request' ); is( $dist->distname, 'Foo-Bar', '->distname matches expected' ); is( $dist->file->filename, 'Foo-Bar-0.01.tar.gz', '->filename matches expected' ); is( $dist->file->digest->digest, lc($md5sum), '->md5sum is normalised as expected' ); is( $dist->authority, '', '->authority returns "" as expected' ); is( $dist->authpath, '', '->authpath returns "" as expected' ); # Create a request with an id my $id = $uuid->to_string( $uuid->create ); my $distid = PITA::XML::Request->new( id => $id, scheme => 'perl5', distname => 'Foo-Bar', file => PITA::XML::File->new( filename => 'Foo-Bar-0.01.tar.gz', digest => 'MD5.' . $md5sum, ), ); isa_ok( $distid, 'PITA::XML::Request' ); is( $distid->id, $id, '->id returns as expected' ); is( $distid->distname, 'Foo-Bar', '->distname matches expected' ); is( $distid->file->filename, 'Foo-Bar-0.01.tar.gz', '->filename matches expected' ); is( $distid->file->digest->digest, lc($md5sum), '->md5sum is normalised as expected' ); is( $distid->authority, '', '->authority returns "" as expected' ); is( $distid->authpath, '', '->authpath returns "" as expected' ); # Write out to XML my $output = ''; ok( $distid->write( \$output ), '->write returns ok' ); my $expected = <<"END_XML"; perl5 Foo-Bar Foo-Bar-0.01.tar.gz MD5.0123456789abcdef0123456789abcdef END_XML chomp $expected; $expected =~ s/\n//g; is( $output, $expected, 'Wrote XML with id in it ok' ); # Parse it back in my $distid2 = PITA::XML::Request->read( \$output ); isa_ok( $distid2, 'PITA::XML::Request' ); is_deeply( $distid2, $distid, 'Request with id roundtrips ok' );