The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

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

# change 'tests => 1' to 'tests => last_test_to_print';

use Apache::Test qw(plan ok have_lwp);
use Apache::TestRequest qw(GET);
use Apache::TestUtil qw(t_cmp);

plan tests => 8, have_lwp;

# Basic request
for(1..2)
{
	my $response = GET '/test/module/';
	if(!$response->is_success) {
		ok(0);
		print STDERR "Received failure code: " . $response->code . "\n";
	}
	else {
		ok(1);
	}
}

# Test ##UNPACKDIR##
for(1..2)
{
	my $response = GET '/test/module/';
	if(!$response->is_success) {
		ok(0);
		print STDERR "Received failure code: " . $response->code . "\n";
	}
	else {
		my $content = $response->content;
		ok t_cmp(qr/FILE: GOT FILE/, $content);
	}
}

# Test extra_path_info
for (1..2)
{
	$response = GET '/test/path/JAPH';
	if(!$response->is_success) {
		ok(0);
		print STDERR "Received failure code: " . $response->code . "\n";
	}
	else {
		my $content = $response->content;
		ok t_cmp('/JAPH', $content);
	}
}

use Archive::Zip;
my $module_zip = Archive::Zip->new('par/module.par');
my $lib_member = $module_zip->removeMember('lib/TestMod.pm');
my $contents = $lib_member->contents();
my $contents_save = $contents;
$contents =~ s/Perl\sModule/TEST CHANGES/;
$lib_member->contents($contents);
$module_zip->addMember($lib_member);
$module_zip->overwrite();
undef $lib_member;
undef $module_zip;
sleep 2;

for(1..2)
{
	my $response = GET '/test/module/';
	if(!$response->is_success) {
		ok(0);
		print STDERR "Received failure code: " . $response->code . "\n";
	}
	else {
		my $contents_check = $response->content;
        if( $contents_check =~ /TEST\sCHANGES/ ) {
        	ok(1);
       	}
       	else {
       		ok(0);
       	}
	}
}

my $newmodule_zip = Archive::Zip->new('par/module.par');
$lib_member = $newmodule_zip->removeMember('lib/TestMod.pm');
my $contents_new = $lib_member->contents();
$lib_member->contents($contents_save);
$newmodule_zip->addMember($lib_member);
$newmodule_zip->overwrite();
undef $newmodule_zip;