use temp config file for testing

This commit is contained in:
Graham Knop 2010-06-10 09:48:18 -05:00
parent e10f4d0aec
commit 9b725c6d42
18 changed files with 47 additions and 93 deletions

View file

@ -14,6 +14,7 @@ use lib "$FindBin::Bin/lib";
use WebGUI::Test;
use WebGUI::Session;
use WebGUI::AdSpace::Ad;
use WebGUI::AdSpace;
use Test::More;
use Test::Deep;
@ -30,20 +31,13 @@ my $newAdSpaceSettings = {
my $numTests = 35; # increment this value for each test you create
$numTests += 2 * scalar keys %{ $newAdSpaceSettings };
++$numTests; ##For conditional testing on module load
plan tests => $numTests;
my $loaded = use_ok('WebGUI::AdSpace');
my $session = WebGUI::Test->session;
my ($adSpace, $alfred, $alfred2, $bruce, $catWoman, $villianClone, $defaultAdSpace );
my ($jokerAd, $penguinAd, $twoFaceAd);
SKIP: {
skip "Unable to load WebGUI::AdSpace", $numTests-1 unless $loaded;
local $ENV{REMOTE_ADDR} = '10.0.0.1';
local $ENV{HTTP_USER_AGENT} = 'Mozilla/5.0';
@ -223,7 +217,6 @@ SKIP: {
$bruce->displayImpression();
($jokerActive) = $session->db->quickArray('select isActive from advertisement where adId=?',[$jokerAd->getId]);
is($jokerActive, 0, 'displayImpression deactivated jokerAd after two impressions');
}
END {
foreach my $ad_space ($adSpace, $bruce, $alfred, $alfred2, $catWoman, $defaultAdSpace ) {

View file

@ -372,10 +372,6 @@ is($importNode->fixUrl('1234'.'_'x235 . 'abcdefghij'), '1234'.'_'x235 . 'abcdefg
is($importNode->fixUrl('1234'.'_'x250 . 'abcdefghij'), '1234'.'_'x216, 'fixUrl truncates long URLs over 250 characters to 220 characters');
is $importNode->fixUrl('---'), '-', '... 3 dashes are collapsed down to a single dash';
WebGUI::Test->originalConfig('extrasURL');
WebGUI::Test->originalConfig('uploadsURL');
WebGUI::Test->originalConfig('assets');
$session->config->set('extrasURL', '/extras');
$session->config->set('uploadsURL', '/uploads');

View file

@ -17,7 +17,6 @@ use strict;
use lib "$FindBin::Bin/../lib";
use Test::More;
use WebGUI::Test; # Must use this before any other WebGUI modules
use WebGUI::PseudoRequest;
use WebGUI::Session;
use WebGUI::Asset;
@ -37,8 +36,6 @@ my $session = WebGUI::Test->session;
#----------------------------------------------------------------------------
# Tests
WebGUI::Test->originalConfig('exportPath');
my $testRan = 1;
plan tests => 126; # Increment this number for each test you create

View file

@ -79,7 +79,6 @@ $snippet->update({
snippet => q|^SQL(select value from settings where name="<tmpl_var title>");|
});
WebGUI::Test->originalConfig('macros');
$session->config->addToHash('macros', 'SQL', 'SQL');
is($snippet->view(), 'WebGUI', 'Interpolating macros in works with template in the correct order');

View file

@ -27,7 +27,6 @@ plan tests => 2 + $num_tests;
my $session = WebGUI::Test->session;
# put your tests here
WebGUI::Test->originalConfig('templateParsers');
my $module = use_ok('HTML::Template::Expr');
my $plugin = use_ok('WebGUI::Asset::Template::HTMLTemplateExpr');

View file

@ -36,7 +36,6 @@ SKIP: {
my $e = "WebGUI::Asset::Wobject::Survey::ExpressionEngine";
WebGUI::Test->originalConfig('enableSurveyExpressionEngine');
$session->config->set( 'enableSurveyExpressionEngine', 0 );
is( $e->run( $session, 'jump { 1 } target' ),
undef, "Nothing happens unless we turn on enableSurveyExpressionEngine in config" );

View file

@ -336,7 +336,6 @@ cmp_deeply($rJSON->responseScores(indexBy => 'variable'), { s1q0 => 100, s1q1 =>
#
####################################################
# Turn on the survey Expression Engine
WebGUI::Test->originalConfig('enableSurveyExpressionEngine');
$session->config->set('enableSurveyExpressionEngine', 1);
$rJSON->survey->section([0])->{variable} = 's0';
$rJSON->survey->question([0,0])->{variable} = 's0q0'; # surveyOrder index = 0

View file

@ -40,7 +40,6 @@ my $user = WebGUI::User->new( $session, 'new' );
WebGUI::Test->addToCleanup($user);
my $import_node = WebGUI::Asset->getImportNode($session);
WebGUI::Test->originalConfig('enableSurveyExpressionEngine');
$session->config->set('enableSurveyExpressionEngine', 1);
# Create a Survey

View file

@ -31,8 +31,6 @@ use WebGUI::Asset::RssAspectDummy;
# Init
my $session = WebGUI::Test->session;
WebGUI::Test->originalConfig('exportPath');
#----------------------------------------------------------------------------
# Tests

View file

@ -34,8 +34,6 @@ plan tests => 3; # Increment this number for each test you create
# put your tests here
use_ok( 'WebGUI::Cache::CHI' );
WebGUI::Test->originalConfig('cacheType');
WebGUI::Test->originalConfig('cache');
$session->config->set('cacheType', 'WebGUI::Cache::CHI');
$session->config->set('cache', { driver => 'FastMmap', });

View file

@ -91,7 +91,6 @@ my $workflow = WebGUI::Workflow->create($session,
);
WebGUI::Test->addToCleanup($workflow);
WebGUI::Test->originalConfig('workflowActivities');
$session->config->addToArray('workflowActivities/User', 'WebGUI::Workflow::Activity::AddUserToGroup');
my $userActivity = $workflow->addActivity('WebGUI::Workflow::Activity::AddUserToGroup');

View file

@ -34,7 +34,6 @@ $registeredUser->username('TimBob');
WebGUI::Test->addToCleanup($registeredUser);
$session->user({user => $registeredUser});
WebGUI::Test->originalConfig('macros');
##Overwrite any local configuration so that we know how to call it.
foreach my $macro (qw/
GroupText LoginToggle PageTitle MacroStart MacroEnd MacroNest

View file

@ -29,7 +29,6 @@ use Data::Dumper;
#----------------------------------------------------------------------------
# Init
my $session = WebGUI::Test->session;
WebGUI::Test->originalConfig( "serviceSubnets" );
$session->config->delete('serviceSubnets');
my ( $response, $responseObj, $auth, $userAndy, $userRed );

View file

@ -85,7 +85,6 @@ is( $url2, $url.'?a=b;c=d', 'append second pair');
#
#######################################
WebGUI::Test->originalConfig('gateway');
$session->config->set('gateway', '/');
is( $session->config->get('gateway'), '/', 'Set gateway for downstream tests');
@ -131,7 +130,6 @@ my $setting_hostToUse = $session->setting->get('hostToUse');
$session->setting->set('hostToUse', 'HTTP_HOST');
my $sitename = $session->config->get('sitename')->[0];
is( $session->url->getSiteURL, 'http://'.$sitename, 'getSiteURL from config as http_host');
WebGUI::Test->originalConfig('webServerPort');
$session->url->setSiteURL('http://webgui.org');
is( $session->url->getSiteURL, 'http://webgui.org', 'override config setting with setSiteURL');
@ -151,7 +149,6 @@ $mockEnv{HTTP_HOST} = "devsite.com";
$session->url->setSiteURL(undef);
is( $session->url->getSiteURL, 'http://'.$sitename, 'getSiteURL where requested host is not a configured site');
WebGUI::Test->originalConfig('sitename');
$session->config->addToArray('sitename', 'devsite.com');
$session->url->setSiteURL(undef);
is( $session->url->getSiteURL, 'http://devsite.com', 'getSiteURL where requested host is not the first configured site');
@ -271,9 +268,8 @@ is($session->url->makeAbsolute('page1'), '/page1', 'makeAbsolute: default baseUr
#
#######################################
my $extras = WebGUI::Test->originalConfig('extrasURL');
my $extras = $session->config->get('extrasURL');
WebGUI::Test->originalConfig('cdn');
$session->config->delete('cdn');
is($session->url->extras, $extras.'/', 'extras method returns URL to extras with a trailing slash');
@ -430,8 +426,6 @@ is(
#
#######################################
WebGUI::Test->originalConfig('sslEnabled');
##Test all the false cases, first
$session->config->set('sslEnabled', 0);

View file

@ -91,7 +91,6 @@ is($guidStorage->getDirectoryId, $newGuid, '... getDirectoryId');
#
####################################################
WebGUI::Test->originalConfig('cdn');
$session->config->delete('cdn');
# Note: the CDN configuration will be reverted after CDN tests below

View file

@ -483,7 +483,6 @@ $dude->deleteFromGroups([12]);
my $origEnvHash = $session->env->{_env};
my %newEnv = ( REMOTE_ADDR => '194.168.0.2' );
$session->env->{_env} = \%newEnv;
WebGUI::Test->originalConfig('adminModeSubnets');
$session->config->set('adminModeSubnets', ['194.168.0.0/24']);
ok(!$dude->isInGroup(12), 'user is not in group 12');
@ -835,7 +834,6 @@ isa_ok( $newCreateUser, 'WebGUI::User', 'create() returns a WebGUI::User' );
################################################################
$session->setting->set('preventProxyCache', 0);
WebGUI::Test->originalConfig('profileModuleIdentifier');
my $profileModuleId = $session->config->get('profileModuleIdentifier');
is(
$newFish->getProfileUrl('cellblock'),

View file

@ -31,7 +31,6 @@ my $session = WebGUI::Test->session;
my $lib = WebGUI::Test->lib;
## Remove all macros but International, and set them to call WebGUI::Macro::Callback
WebGUI::Test->originalConfig('macros');
my $originalMacros = $session->config->get('macros');
my $configFileMacros = {};
for my $macro (keys %$originalMacros) {

View file

@ -30,23 +30,24 @@ use Test::MockObject;
use Test::MockObject::Extends;
use Log::Log4perl; # load early to ensure proper order of END blocks
use Clone qw(clone);
use IO::Handle ();
use File::Spec ();
use File::Basename qw(dirname);
use File::Spec::Functions qw(abs2rel rel2abs catdir catfile updir);
use IO::Select ();
use Cwd ();
use Scalar::Util qw( blessed );
use List::MoreUtils qw( any );
use Carp qw( carp croak );
use JSON qw( from_json to_json );
use File::Copy ();
use File::Temp ();
use Scope::Guard;
our ($WEBGUI_TEST_ROOT, $WEBGUI_TEST_COLLATERAL, $WEBGUI_ROOT, $WEBGUI_LIB);
BEGIN {
our $WEBGUI_TEST_ROOT = File::Spec->catdir(
File::Spec->catpath((File::Spec->splitpath(__FILE__))[0,1], ''),
(File::Spec->updir) x 2
);
our $WEBGUI_TEST_COLLATERAL = File::Spec->catdir(
our $WEBGUI_TEST_ROOT = rel2abs( catdir( dirname( __FILE__ ), (updir) x 2 ) );
our $WEBGUI_TEST_COLLATERAL = catdir(
$WEBGUI_TEST_ROOT,
'supporting_collateral'
);
@ -85,20 +86,30 @@ our @EXPORT_OK = qw(session config collateral);
my $CLASS = __PACKAGE__;
my $original_config_file;
sub import {
our $CONFIG_FILE = $ENV{ WEBGUI_CONFIG };
if ( ! $original_config_file ) {
my $config = $ENV{WEBGUI_CONFIG};
die "Enviroment variable WEBGUI_CONFIG must be set to the full path to a WebGUI config file.\n"
unless $config;
die "Enviroment variable WEBGUI_CONFIG must be set to the full path to a WebGUI config file.\n"
unless $CONFIG_FILE;
die "WEBGUI_CONFIG path '$CONFIG_FILE' does not exist.\n"
unless -e $CONFIG_FILE;
die "WEBGUI_CONFIG path '$CONFIG_FILE' is not a file.\n"
unless -f _;
die "WEBGUI_CONFIG path '$CONFIG_FILE' is not readable by effective uid '$>'.\n"
unless -r _;
$CONFIG_FILE = File::Spec->abs2rel($CONFIG_FILE, File::Spec->catdir($CLASS->root, 'etc'));
for my $tryPath (
rel2abs( $config ),
rel2abs( $config, $CLASS->root, 'etc' )
) {
if ( -e $tryPath ) {
$config = $tryPath;
}
}
die "WEBGUI_CONFIG path '$config' does not exist.\n"
unless -e $config;
die "WEBGUI_CONFIG path '$config' is not a file.\n"
unless -f _;
die "WEBGUI_CONFIG path '$config' is not readable by effective uid '$>'.\n"
unless -r _;
$original_config_file = abs2rel( $config, catdir( $CLASS->root, 'etc') );
}
goto &{ $_[0]->can('SUPER::import') };
}
@ -347,7 +358,7 @@ sub config {
return $config
if $config;
require WebGUI::Config;
$config = WebGUI::Config->new(our $CONFIG_FILE);
$config = WebGUI::Config->new($CLASS->file, 1);
return $config;
}
@ -359,8 +370,20 @@ Returns the name of the WebGUI config file used for this test.
=cut
my $config_copy;
sub file {
return our $CONFIG_FILE;
return $config_copy
if $config_copy;
my $config_base = $original_config_file;
$config_base =~ s/\.conf$//;
(undef, $config_copy) = File::Temp::tempfile("$config_base-XXXX", SUFFIX => '.conf', UNLINK => 0, OPEN => 0);
File::Copy::copy($original_config_file, $config_copy);
$CLASS->addToCleanup(sub {
unlink $config_copy;
undef $config_copy;
undef $config;
});
return $config_copy;
}
#----------------------------------------------------------------------------
@ -449,7 +472,7 @@ Optionally adds a filename to the end.
sub getTestCollateralPath {
my $class = shift;
my @path = @_;
return File::Spec->catfile(our $WEBGUI_TEST_COLLATERAL, @path);
return catfile(our $WEBGUI_TEST_COLLATERAL, @path);
}
sub collateral {
@ -567,7 +590,6 @@ sub prepareMailServer {
$CLASS->session->setting->set( 'smtpServer', $SMTP_HOST . ':' . $SMTP_PORT );
$CLASS->originalConfig('emailToLog');
$CLASS->session->config->set( 'emailToLog', 0 );
# Let it start up yo
@ -590,38 +612,6 @@ sub prepareMailServer {
#----------------------------------------------------------------------------
=head2 originalConfig ( $param )
Stores the original data from the config file, to be restored
automatically at the end of the test. This is a class method.
=cut
my %originalConfig;
sub originalConfig {
my ($class, $param) = @_;
my $safeValue = my $value = $CLASS->session->config->get($param);
if (ref $value) {
$safeValue = clone $value;
}
# add cleanup handler if this is the first time we were run
if (! keys %originalConfig) {
$class->addToCleanup(sub {
while (my ($key, $value) = each %originalConfig) {
if (defined $value) {
$CLASS->session->config->set($key, $value);
}
else {
$CLASS->session->config->delete($key);
}
}
});
}
$originalConfig{$param} = $safeValue;
}
#----------------------------------------------------------------------------
=head2 getMail ( )
Read a sent mail from the prepared mail server (L<prepareMailServer>)