CGI-FileManager

 view release on metacpan or  search on metacpan

t/003-main.t  view on Meta::CPAN

#!/usr/bin/perl -w
use strict;


use Test::More "no_plan";
use Test::Warn;

use lib ("blib/lib", "t/lib");
use CGI::FileManager;

use CGI::FileManager::Test;

my $t = CGI::FileManager::Test->new({
	module => "CGI::FileManager",
	cookie => "cgi-filemanager",
});

my $cookie;
my $parent = "\Q..\E";   # the regex for matching the text shown on parent directory

# access main page and login screen
{
	my $result = $t->cgiapp("/");
	like ($result, qr{\QLocation: http://test-host/?rm=login}, "Redirected");
	my $cookie = $t->extract_cookie($result);
	is($cookie, "", "no cookie, when redirecting");
}

# get a new cookie
{
	my $result = $t->cgiapp("/", "", {rm => "login"});  # try also  /?rm=login
	like($result, qr{Login form});
	$cookie = $t->extract_cookie($result);
	like($cookie, qr{^\w+$}, "nice cookie, eh ?");
	unlike($result, qr{gabor});
	unlike($result, qr{Login failed});
	unlike($result, qr{badpw});
	like($result,  qr{text/css});
}

# failed logins:
{
	my $result = $t->cgiapp("/", $cookie, {rm => "login_process"});
	my $newcookie = $t->extract_cookie($result);
	is($newcookie, $cookie, "Cookie did not change");
	like($result, qr{Login form});
	unlike($result, qr{gabor});
	like($result, qr{Login failed});
	unlike($result, qr{badpw});
}

{
	my $result = $t->cgiapp("/", $cookie, {rm => "login_process", username => "gabor", password=> "badpw"});
	like($result, qr{Login form});
	like($result, qr{gabor});
	like($result, qr{Login failed});
	unlike($result, qr{badpw});
	like($result,  qr{text/css});
}

# successful login:
{
	my $result = $t->cgiapp("/", $cookie, {rm => "login_process", username => "gabor", password=> "nincs"});
	like ($result, qr{\QLocation: http://test-host/}, "Redirected to home page");
}

# accessing home page after login
{
	my $result = $t->cgiapp("/", $cookie);
	unlike($result, qr{Login form});
	like($result, qr{gabor\@pti.co.il});
	unlike($result, qr{Login failed});
	unlike($result, qr{badpw});
	like($result, qr{Directory Listing});
	like($result,  qr{text/css});

	like($result,  qr{data\.txt});
	unlike($result,  qr{<a href="\?rm=change_dir;workdir=;dir=\.\.">\s*$parent\s*</a>});
	like($result,  qr{<a href="\?rm=change_dir;workdir=;dir=subdir">\s*subdir\s*</a>});
}

# changing to a subdir
{
	my $result = $t->cgiapp("/", $cookie, {rm => "change_dir", dir => "subdir"});
	like($result, qr{Location: http://test-host/\?rm=list_dir;workdir=/subdir});
}
{
	my $result = $t->cgiapp("/", $cookie, {rm => "list_dir", workdir => "/subdir"});
	like($result, qr{Directory Listing});
	unlike($result,  qr{data\.txt});
	unlike($result,  qr{<a href="\?rm=change_dir;workdir=/subdir;dir=subdir">\s*subdir\s*</a>});
	like($result,  qr{<a href="\?rm=change_dir;workdir=/subdir;dir=\.\.">\s*$parent\s*</a>});
	like($result,  qr{somefile\.txt});
}	

# listing the home directory again
{
	my $result = $t->cgiapp("/", $cookie, {rm => "list_dir", workdir => "" });
	like($result, qr{Directory Listing});
	like($result,  qr{data\.txt});
	like($result,  qr{<a href="\?rm=change_dir;workdir=;dir=subdir">\s*subdir\s*</a>});
	unlike($result,  qr{<a href="\?rm=change_dir;workdir=;dir=\.\.">\s*$parent\s*</a>});
	unlike($result,  qr{somefile\.txt});
}	



( run in 1.014 second using v1.01-cache-2.11-cpan-804bf51f3ce )