lots of test fixes

This commit is contained in:
Graham Knop 2010-06-13 06:19:41 -05:00
parent 0d311117e2
commit 30657d61f7
21 changed files with 75 additions and 87 deletions

View file

@ -38,8 +38,8 @@ my $session = WebGUI::Test->session;
my ($adSpace, $alfred, $alfred2, $bruce, $catWoman, $villianClone, $defaultAdSpace );
my ($jokerAd, $penguinAd, $twoFaceAd);
local $ENV{REMOTE_ADDR} = '10.0.0.1';
local $ENV{HTTP_USER_AGENT} = 'Mozilla/5.0';
$session->request->env->{REMOTE_ADDR} = '10.0.0.1';
$session->request->env->{HTTP_USER_AGENT} = 'Mozilla/5.0';
$adSpace = WebGUI::AdSpace->create($session, {name=>"Alfred"});

View file

@ -50,8 +50,8 @@ my $imageStorage = WebGUI::Storage->create($session);
WebGUI::Test->addToCleanup($imageStorage);
$imageStorage->addFileFromScalar('foo.bmp', 'This is not really an image');
local $ENV{REMOTE_ADDR} = '10.0.0.1';
local $ENV{HTTP_USER_AGENT} = 'Mozilla/5.0';
$session->request->env->{REMOTE_ADDR} = '10.0.0.1';
$session->request->env->{HTTP_USER_AGENT} = 'Mozilla/5.0';
$adSpace = WebGUI::AdSpace->create($session, {name=>"Tim Robbins"});
$ad=WebGUI::AdSpace::Ad->create($session, $adSpace->getId, {"type" => "text"});

View file

@ -145,7 +145,7 @@ while ( $entryIdx >= 0 ) {
'record.entryId' => $entries[$entryIdx]->getId,
'record.userId' => $session->user->userId,
'record.username' => $session->user->username,
'record.ipAddress' => undef,
'record.ipAddress' => $session->request->address,
'record.delete.icon' => ignore(),
'record.delete.url' => ignore(),
'record.edit.icon' => ignore(),

View file

@ -18,6 +18,7 @@ use JSON;
use WebGUI::Test;
use WebGUI::Session;
use Test::More;
use WebGUI::Asset::Wobject::GalleryAlbum;
#----------------------------------------------------------------------------
# Init
@ -87,11 +88,7 @@ my $result;
#----------------------------------------------------------------------------
# Tests
plan tests => 19;
#----------------------------------------------------------------------------
# Test module compiles okay
use_ok("WebGUI::Asset::Wobject::GalleryAlbum");
plan tests => 18;
#----------------------------------------------------------------------------
# Test calling without arguments
@ -251,7 +248,7 @@ sub callAjaxService {
my $args = shift;
# Setup the mock request object
$session->request->method('POST');
$session->request->env->{'REQUEST_METHOD'} = 'POST';
$session->request->setup_body({ args => encode_json($args) });
# Call ajax service function and decode reply

View file

@ -28,7 +28,7 @@ my $session = WebGUI::Test->session;
my $output = WebGUI::Content::SiteIndex::handler($session);
is $output, undef, 'no content returned unless sitemap.xml is requested';
$session->request->uri('/sitemap.xml');
$session->request->env->{PATH_INFO} = '/sitemap.xml';
$output = WebGUI::Content::SiteIndex::handler($session);
my $xmlData = XMLin($output,
KeepRoot => 1,

View file

@ -1,15 +1,16 @@
# Test what happens when the WebGUI PSGI app throws exceptions
use strict;
use FindBin;
use lib "$FindBin::Bin/../../lib";
use lib "$FindBin::Bin/../lib";
use WebGUI;
use WebGUI::Test;
use Plack::Test;
use Plack::Builder;
use HTTP::Request::Common;
use Test::More tests => 9;
use HTTP::Exception;
my $wg = WebGUI->new;
my $wg = WebGUI->new(site => WebGUI::Test->file);
my $regular_app = builder {
enable '+WebGUI::Middleware::Session', config => $wg->config;

View file

@ -580,12 +580,13 @@ cmp_bag(
my @tcps = ();
foreach my $idx (0..$#ipTests) {
##Set the ip to be used by the session for this user
my $ip = $ipTests[$idx]->{ip};
$ENV{REMOTE_ADDR} = $ip;
##Create a new session
$sessionBank[$idx] = WebGUI::Session->open(WebGUI::Test->file);
$sessionBank[$idx] = WebGUI::Test->newSession;
##Set the ip to be used by the session for this user
$sessionBank[$idx]->request->env->{REMOTE_ADDR} = $ip;
##Create a new user and make this session's default user that user
$tcps[$idx] = WebGUI::User->new($sessionBank[$idx], "new");
@ -598,7 +599,6 @@ foreach my $idx (0..$#ipTests) {
$ipTests[$idx]->{user} = $tcps[$idx];
}
WebGUI::Test->addToCleanup(@tcps);
WebGUI::Test->addToCleanup(@sessionBank);
my $gI = WebGUI::Group->new($session, "new");
WebGUI::Test->addToCleanup($gI);

View file

@ -25,7 +25,7 @@ my $session = WebGUI::Test->session;
##can be retrieved via the macro. There are also tests for null, undef,
##and non-existant keys.
my %env = %{ $session->env->{_env} };
my %env = %{ $session->request->env };
my @keys = keys %env;
my $numTests = 3 + scalar keys %env;

View file

@ -29,12 +29,9 @@ $session->user({userId=>1});
##Replace the original ENV hash with one that will return a
##known user agent. Since it usually contains a reference to %ENV,
##you can't just modify that hash since it's protected
my $origEnv = $session->{_env};
my %newEnvHash = (
'HTTP_USER_AGENT' => 'mozilla',
'QUERY_STRING' => 'func=search',
);
$session->{_env}->{_env} = \%newEnvHash;
my $env = $session->request->env;
$env->{'HTTP_USER_AGENT'} = 'mozilla';
$env->{'QUERY_STRING'} = 'func=search';
my $i18n = WebGUI::International->new($session,'Macro_L_loginBox');
@ -122,7 +119,7 @@ like($vars{'username.form'}, qr/size="16"/, 'boxSize set in username.form');
like($vars{'password.form'}, qr/size="16"/, 'boxSize set in password.form');
##Change browser to be MSIE like and watch boxSize change
$newEnvHash{'HTTP_USER_AGENT'} = "msie";
$env->{'HTTP_USER_AGENT'} = 'msie';
$output = WebGUI::Macro::L_loginBox::process($session,24,'Log In',$template->getId);
%vars = simpleTextParser($output);

View file

@ -56,7 +56,7 @@ cmp_deeply(
);
# - serviceSubnets
$ENV{REMOTE_ADDR} = '2.2.2.2';
$session->request->env->{REMOTE_ADDR} = '2.2.2.2';
$session->config->set('serviceSubnets',['1.1.1.1/32']);
$session->user({ userId => 3 });
$session->request->setup_body({
@ -196,7 +196,7 @@ cmp_deeply(
);
# - serviceSubnets
$ENV{REMOTE_ADDR} = '2.2.2.2';
$session->request->env->{REMOTE_ADDR} = '2.2.2.2';
$session->config->set('serviceSubnets',['1.1.1.1/32']);
$session->user({ userId => 3 });
$session->request->setup_body({
@ -336,7 +336,7 @@ cmp_deeply(
);
# - serviceSubnets
$ENV{REMOTE_ADDR} = '2.2.2.2';
$session->request->env->{REMOTE_ADDR} = '2.2.2.2';
$session->config->set('serviceSubnets',['1.1.1.1/32']);
$session->user({ userId => 3 });
$session->request->setup_body({

View file

@ -184,17 +184,10 @@ sub testCount {
plan tests => testCount() ;
my $output;
foreach my $testSet (@testArray) {
$output = FAKE_ENV->new( $testSet->{agent},
$testSet->{address} || '69.42.78.32')
->requestNotViewed();
$session->request->env->{HTTP_USER_AGENT} = $testSet->{agent};
$session->request->env->{REMOTE_ADDR} = $testSet->{address} || '69.42.78.32';
my $output = $session->env->requestNotViewed;
is($output, $testSet->{output}, $testSet->{comment});
}
{ # this is a local fake of the session, used for testing only
package FAKE_ENV;
use base 'WebGUI::Session::Env';
sub new { shift; return bless { _env => { HTTP_USER_AGENT => $_[0], REMOTE_ADDR => $_[1] } }, __PACKAGE__; }
}

View file

@ -15,26 +15,14 @@ use lib "$FindBin::Bin/../lib";
use WebGUI::Test;
use WebGUI::Session;
use Test::More tests => 3; # increment this value for each test you create
use Test::MockObject::Extends;
use Test::More tests => 2; # increment this value for each test you create
my $session = WebGUI::Test->session;
cmp_ok($session->env->get("PATH"), 'ne', "", "get() one valid entry");
#Replace the ENV hash so that we can test getIp.
cmp_ok($session->env->get("REMOTE_ADDR"), 'ne', "", "get() one valid entry");
my $env = $session->env;
$env = Test::MockObject::Extends->new($env);
$session->request->env->{REMOTE_ADDR} = '192.168.0.2';
is ($env->getIp, '192.168.0.2', 'getIp');
my %mockEnv = (
REMOTE_ADDR => '192.168.0.2',
);
$env->mock('get', sub { return $mockEnv{$_[1]}});
is ($env->getIp(), $mockEnv{'REMOTE_ADDR'}, 'getIp');
$mockEnv{HTTP_X_FORWARDED_FOR} = '10.0.2.5',
is ($env->getIp(), $mockEnv{'HTTP_X_FORWARDED_FOR'}, 'getIp with HTTP forwarding');

View file

@ -25,10 +25,10 @@ plan tests => $numTests;
my $session = WebGUI::Test->session;
##Setup for security method test
my %newEnv = ( REMOTE_ADDR => '192.168.0.6' );
$session->env->{_env} = \%newEnv;
my $env = $session->request->env;
$env->{REMOTE_ADDR} = '192.168.0.6';
my ($eh) = $session->quick('errorHandler');
my $eh = $session->errorHandler;
####################################################
#
@ -165,13 +165,13 @@ delete $eh->{_canShowDebug};
ok($eh->canShowDebug, 'canShowDebug: returns 1 if debugIp is empty string');
$session->setting->set('debugIp', '10.0.0.5/32, 192.168.0.4/30');
$newEnv{REMOTE_ADDR} = '172.17.0.5';
$env->{REMOTE_ADDR} ='172.17.0.5';
delete $eh->{_canShowDebug};
ok(! $eh->canShowDebug, 'canShowDebug: returns 0 if debugIp is set and IP address is out of filter');
$newEnv{REMOTE_ADDR} = '10.0.0.5';
$env->{REMOTE_ADDR} = '10.0.0.5';
delete $eh->{_canShowDebug};
ok($eh->canShowDebug, 'canShowDebug: returns 1 if debugIp is set and IP address matches filter');
$newEnv{REMOTE_ADDR} = '192.168.0.5';
$env->{REMOTE_ADDR} = '192.168.0.5';
delete $eh->{_canShowDebug};
ok($eh->canShowDebug, 'canShowDebug: returns 1 if debugIp is set and IP address matches filter');
@ -189,11 +189,11 @@ $session->setting->set('debugIp', '');
is($eh->canShowPerformanceIndicators, 1, 'canShowPerformanceIndicators: returns 1 if debugIp is blank');
$session->setting->set('debugIp', '10.0.0.5/32, 192.168.0.4/30');
$newEnv{REMOTE_ADDR} = '172.17.0.5';
$env->{REMOTE_ADDR} = '172.17.0.5';
is($eh->canShowPerformanceIndicators, 0, 'canShowPerformanceIndicators: returns 0 if debugIp is set and IP address does not match');
$newEnv{REMOTE_ADDR} = '10.0.0.5';
$env->{REMOTE_ADDR} = '10.0.0.5';
is($eh->canShowPerformanceIndicators, 1, 'canShowPerformanceIndicators: returns 0 if debugIp is set and IP address matches exactly');
$newEnv{REMOTE_ADDR} = '192.168.0.5';
$env->{REMOTE_ADDR} = '192.168.0.5';
is($eh->canShowPerformanceIndicators, 1, 'canShowPerformanceIndicators: returns 0 if debugIp is set and IP address matches subnet');
####################################################

View file

@ -22,16 +22,16 @@ plan tests => 4;
my $session = WebGUI::Test->session;
my $token = $session->scratch->get('webguiCsrfToken');
$session->request->method('POST');
$session->request->env->{'REQUEST_METHOD'} = 'POST';
$session->request->setup_param({ webguiCsrfToken => $token, });
ok($session->form->validToken, 'validToken: right method and form value');
$session->request->method('GET');
$session->request->env->{'REQUEST_METHOD'} = 'GET';
ok(! $session->form->validToken, '... wrong method, right form value');
$session->request->method('POST');
$session->request->env->{'REQUEST_METHOD'} = 'POST';
$session->request->setup_param({ webguiCsrfToken => 'bad token', });
ok(! $session->form->validToken, 'validToken: right method and wrong form value');
$session->request->method('GET');
$session->request->env->{'REQUEST_METHOD'} = 'GET';
ok(! $session->form->validToken, 'validToken: wrong method and form value');

View file

@ -54,7 +54,7 @@ for (my $count = 1; $count <= $maxCount; $count++){
}
##Creating a new session with the previous session's Id should clone the scratch data
my $newSession = WebGUI::Session->open(WebGUI::Test->file, undef, undef, $session->getId);
my $newSession = WebGUI::Session->open(WebGUI::Test->file, undef, $session->getId);
is($newSession->getId, $session->getId, "Successful session duplication");

View file

@ -37,9 +37,8 @@ my $id = $session->var->getId;
my ($count) = $session->db->quickArray("select count(*) from userSession where sessionId=?",[$id]);
is($count, 1, "created an user session entry in the database");
my %newEnvHash = ( REMOTE_ADDR => '192.168.0.34');
my $origEnv = $session->env->{_env};
$session->env->{_env} = \%newEnvHash;
my $env = $session->request->env;
$env->{REMOTE_ADDR} = '192.168.0.34';
my $var = WebGUI::Session::Var->new($session);
my $varTime = time();
@ -66,7 +65,7 @@ isa_ok($var->session, 'WebGUI::Session', 'session method returns a Session objec
is($var->session->getId, $session->getId, 'session method returns our Session object');
sleep(2);
$newEnvHash{REMOTE_ADDR} = '10.0.5.5';
$env->{REMOTE_ADDR} = '10.0.5.5';
#Grab a more recent version of our user session object
$varTime = time();
@ -157,7 +156,7 @@ $varExpiring->{_var}{expires} = $varExpiring->get('lastPageView')-1;
sleep 1;
$newEnvHash{REMOTE_ADDR} = '127.0.0.1';
$env->{REMOTE_ADDR} = '127.0.0.1';
##Test a valid fetch
my $varTest = WebGUI::Session::Var->new($session, $var4->getId, 1);
@ -210,8 +209,6 @@ is($varTest->get('userId'), 1, 'calling start with null userId returns default u
END {
$session->env->{_env} = $origEnv;
foreach my $varObj ($var, $var2, $var3, $var4, $varExpiring, $varTest) {
if (defined $varObj and ref $varObj eq 'WebGUI::Session::Var') {
$varObj->end();

View file

@ -68,7 +68,7 @@ is($session->getId, $taxer->session->getId, 'session method returns OUR session
my $taxIterator = $taxer->getItems;
isa_ok($taxIterator, 'WebGUI::SQL::ResultSet');
isa_ok($taxIterator, 'WebGUI::SQL::st');
is($taxIterator->rows, 0, 'WebGUI ships with no predefined tax data');

View file

@ -608,7 +608,7 @@ is ($cdnStorage->getUrl, $locUrl, 'CDN: getUrl: URL for directory');
my $fileUrl = $locUrl . '/' . 'cdn-file';
is ($cdnStorage->getUrl('cdn-file'), $fileUrl, 'CDN: getUrl: URL for file');
# SSL
my %mockEnv = %ENV;
my %mockEnv = %{ $session->request->env };
my $env = Test::MockObject::Extends->new($session->env);
$env->mock('get', sub { return $mockEnv{$_[1]} } );
$mockEnv{HTTPS} = 'on';

View file

@ -478,9 +478,8 @@ ok($dude->canUseAdminMode, 'canUseAdminMode: with no subnets set, user canUseAdm
$dude->deleteFromGroups([12]);
##Spoof the IP address to test subnet level access control to adminMode
my $origEnvHash = $session->env->{_env};
my %newEnv = ( REMOTE_ADDR => '194.168.0.2' );
$session->env->{_env} = \%newEnv;
my $env = $session->request->env;
$env->{REMOTE_ADDR} = '194.168.0.2';
$session->config->set('adminModeSubnets', ['194.168.0.0/24']);
ok(!$dude->isInGroup(12), 'user is not in group 12');
@ -490,7 +489,7 @@ $dude->addToGroups([12]);
ok($dude->canUseAdminMode, 'canUseAdminMode: with no subnets set, user canUseAdminMode');
$newEnv{REMOTE_ADDR} = '10.0.0.2';
$env->{REMOTE_ADDR} = '10.0.0.2';
ok(!$dude->canUseAdminMode, 'canUseAdminMode: even with the right group permission, user must be in subnet if subnet is set');
@ -498,11 +497,10 @@ ok(!$dude->canUseAdminMode, 'canUseAdminMode: even with the right group permissi
$session->config->set('adminModeSubnets', ['10.0.0.0/24', '192.168.0.0/24', ]);
ok($dude->canUseAdminMode, 'canUseAdminMode: multiple IP settings, first IP range');
$newEnv{REMOTE_ADDR} = '192.168.0.127';
$env->{REMOTE_ADDR} = '192.168.0.127';
ok($dude->canUseAdminMode, 'canUseAdminMode: multiple IP settings, second IP range');
##restore the original session variables
$session->env->{_env} = $origEnvHash;
$session->config->delete('adminModeSubnets');
################################################################

View file

@ -208,7 +208,7 @@ $tag->clearWorking();
my $gotTag = ok(defined ($userTag = getWorking(1)), 'versionTagMode singlePerUser: reclaim version tag after clearWorking');
SKIP: {
skip 1, 'userTag not set' unless $gotTag;
skip 'userTag not set', 1 unless $gotTag;
is ($userTag->getId(), $userTagId, q{versionTagMode singlePerUser: reclaimed version tag has same id});
$userTag->clearWorking();
}

View file

@ -154,9 +154,26 @@ sub newSession {
shift
if eval { $_[0]->isa($CLASS) };
my $noCleanup = shift;
my $request = shift;
my $http_request = shift;
require WebGUI::Session;
my $session = WebGUI::Session->open( $CLASS->config, newEnv( $request ) );
my $session = WebGUI::Session->open( $CLASS->config, newEnv( $http_request ) );
my $request = Test::MockObject::Extends->new( $session->request );
$request->mock('setup_body', sub {
my $self = shift;
my $params = shift;
delete $self->env->{$_} for grep { /^plack\./ } keys %{ $self->env };
my $body_params = $self->body_parameters;
$body_params->clear;
$body_params->add( $_ => $params->{$_} ) for keys %$params;
});
$request->mock('setup_param', sub {
my $self = shift;
my $params = shift;
delete $self->env->{$_} for grep { /^plack\./ } keys %{ $self->env };
my $query_params = $self->query_parameters;
$query_params->clear;
$query_params->add( $_ => $params->{$_} ) for keys %$params;
});
if ( ! $noCleanup ) {
$CLASS->addToCleanup($session);
}