104 lines
3 KiB
Perl
104 lines
3 KiB
Perl
#-------------------------------------------------------------------
|
|
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
|
|
#-------------------------------------------------------------------
|
|
# Please read the legal notices (docs/legal.txt) and the license
|
|
# (docs/license.txt) that came with this distribution before using
|
|
# this software.
|
|
#-------------------------------------------------------------------
|
|
# http://www.plainblack.com info@plainblack.com
|
|
#-------------------------------------------------------------------
|
|
|
|
use FindBin;
|
|
use strict;
|
|
use lib "$FindBin::Bin/../lib";
|
|
|
|
use WebGUI::Test;
|
|
use WebGUI::Session;
|
|
use WebGUI::Storage;
|
|
use WebGUI::Macro::Include;
|
|
|
|
use Test::More; # increment this value for each test you create
|
|
|
|
my $session = WebGUI::Test->session;
|
|
|
|
my $i18n = WebGUI::International->new($session, 'Macro_Include');
|
|
|
|
my $configFile = WebGUI::Test->root .'/etc/'. WebGUI::Test->file;
|
|
my $spectreConf = WebGUI::Test->root . '/etc/spectre.conf';
|
|
|
|
my $goodFile = 'The contents of this file are accessible';
|
|
my $twoLines = "This file contains two lines of text\nThis is the second line";
|
|
my $storage = WebGUI::Storage->createTemp($session);
|
|
WebGUI::Test->addToCleanup($storage);
|
|
$storage->addFileFromScalar('goodFile', $goodFile);
|
|
$storage->addFileFromScalar('twoLines', $twoLines);
|
|
$storage->addFileFromScalar('unreadableFile', 'The contents of this file are not readable');
|
|
my $unreadable = $storage->getPath('unreadableFile');
|
|
chmod(0111, $unreadable);
|
|
|
|
my @testSets = (
|
|
{
|
|
file => '/etc/passwd',
|
|
output => $i18n->get('security'),
|
|
comment => q|passwd file|,
|
|
},
|
|
{
|
|
file => '/passwd/foo.txt',
|
|
output => $i18n->get('security'),
|
|
comment => q|passwd path|,
|
|
},
|
|
{
|
|
file => '/etc/shadow',
|
|
output => $i18n->get('security'),
|
|
comment => q|shadow file|,
|
|
},
|
|
{
|
|
file => '/shadow/foo.txt',
|
|
output => $i18n->get('security'),
|
|
comment => q|shadow path|,
|
|
},
|
|
{
|
|
file => $configFile,
|
|
output => $i18n->get('security'),
|
|
comment => q|WebGUI config file|,
|
|
},
|
|
{
|
|
file => $spectreConf,
|
|
output => $i18n->get('security'),
|
|
comment => q|spectre config file|,
|
|
},
|
|
{
|
|
file => $storage->getPath('non-existantFile'),
|
|
output => $i18n->get('not found'),
|
|
comment => q|Non-existant file returns NOT FOUND|,
|
|
},
|
|
{
|
|
file => $storage->getPath('goodFile'),
|
|
output => $goodFile,
|
|
comment => q|Included a good file|,
|
|
},
|
|
{
|
|
file => $storage->getPath('twoLines'),
|
|
output => $twoLines,
|
|
comment => q|Included a file with two lines|,
|
|
},
|
|
);
|
|
|
|
my $numTests = scalar @testSets;
|
|
|
|
$numTests += 1; #For the unreadable file test
|
|
|
|
plan tests => $numTests;
|
|
|
|
foreach my $testSet (@testSets) {
|
|
my $output = WebGUI::Macro::Include::process($session, $testSet->{file});
|
|
is($output, $testSet->{output}, $testSet->{comment} . ":" .$testSet->{file});
|
|
}
|
|
|
|
SKIP: {
|
|
skip "Root will cause this test to fail since it does not obey file permissions", 1
|
|
if $< == 0;
|
|
my $file = $storage->getPath('unreadableFile');
|
|
my $output = WebGUI::Macro::Include::process($session, $file);
|
|
is($output, $i18n->get('not found'), q|Unreadable file returns NOT FOUND|. ":" .$file);
|
|
}
|