on invalid proceed method in call to editSave, warn and recover rather than run time error

This commit is contained in:
Scott Walters 2012-10-27 01:59:18 -04:00
parent 59ce3b3fd6
commit 9a45ff4b91
3 changed files with 37 additions and 3 deletions

View file

@ -13,6 +13,8 @@
- fixed #12386: Story Manager - Carousel rendering broken in Story
- fixed #12386: Story Manager - Carousel rendering broken in Story
- fixed #12384: Click and drag reordering does not work in IE9
- fixed: MessageBoard tolerates Collaboration children not yet having a value for lastPostId
- on invalid proceed method in call to editSave, warn and recover rather than run time error
7.10.26
- fixed: Template diagnostics when called without a session asset.

View file

@ -3162,9 +3162,14 @@ sub www_editSave {
elsif ($proceed ne "") {
my $method = "www_".$session->form->process("proceed");
$session->asset($object);
if( $session->asset->can($method) ) {
return $session->asset->$method();
}
else {
$session->log->warn("proceed method of $method specified but that method doesn't exist in " . ref($session->asset));
# else fall through to the default handling below
}
}
$session->asset($object->getContainer);
return $session->asset->www_view;
}

View file

@ -1,4 +1,5 @@
#-------------------------------------------------------------------
warn "warning = $warning";
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
@ -172,7 +173,7 @@ sub definition {
package main;
plan tests => 138
plan tests => 140
+ scalar(@fixIdTests)
+ scalar(@fixTitleTests)
+ 2*scalar(@getTitleTests) #same tests used for getTitle and getMenuTitle
@ -309,6 +310,23 @@ cmp_deeply(
[ "two", "three" ],
"serialized property returns deserialized ref",
);
do {
sleep 2; # so that we don't collide revisionDates
my $fatal_error;
my $warning;
local *WebGUI::Session::ErrorHandler::fatal = sub { my $self = shift; $fatal_error = shift; };
local *WebGUI::Session::ErrorHandler::warn = sub { my $self = shift; $warning = shift; };
local *WebGUI::Session::Form::validToken = sub { 1 };
my $html = WebGUI::Test->getPage($ta, "www_editSave", {
userId => 3,
formParams => { synopsis => '[ "two", "three" ]', proceed => 'asfd' },
});
ok ! $fatal_error, "no fatal error on invalid &proceed argument to www_editSave";
like $warning, qr/proceed method of www_asfd specified/, "warning about invalid proceed method generated";
};
$ta->purge;
################################################################
@ -1235,3 +1253,12 @@ subtest 'canAdd tolerates being called as an object method', sub {
ok !$class->canAdd($session), 'Cannot add when called as a class method';
ok !$snip->canAdd($session), '...or an object method';
};
################################################################
#
# www_editSave proceed parameter
#
################################################################
{
}