From a3a5d44a7b0a38f6be914b828b3876b9e2fc8f76 Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Thu, 10 Feb 2011 18:49:34 -0600 Subject: [PATCH] migrate Settings operation to FormBuilder --- lib/WebGUI/Auth/Facebook.pm | 12 +- lib/WebGUI/Auth/LDAP.pm | 20 +- lib/WebGUI/Auth/Twitter.pm | 12 +- lib/WebGUI/Auth/WebGUI.pm | 302 +++++++++++++++---------------- lib/WebGUI/Operation/Settings.pm | 37 ++-- t/Operation/Settings.t | 75 ++++++++ 6 files changed, 261 insertions(+), 197 deletions(-) create mode 100644 t/Operation/Settings.t diff --git a/lib/WebGUI/Auth/Facebook.pm b/lib/WebGUI/Auth/Facebook.pm index d1307cf49..427411225 100644 --- a/lib/WebGUI/Auth/Facebook.pm +++ b/lib/WebGUI/Auth/Facebook.pm @@ -69,16 +69,16 @@ sub editUserSettingsForm { my ( $setting ) = $session->quick(qw( setting )); my $i18n = WebGUI::International->new( $session, 'Auth_Facebook' ); - my $f = WebGUI::HTMLForm->new( $session ); + my $f = WebGUI::FormBuilder->new( $session ); - $f->yesNo( + $f->addField( "yesNo", name => 'facebookAuthEnabled', value => $setting->get( 'facebookAuthEnabled' ), label => $i18n->get('enabled'), hoverHelp => $i18n->get('enabled help'), ); - $f->text( + $f->addField( "text", name => 'facebookAuthAppId', value => $setting->get( 'facebookAuthAppId' ), label => $i18n->get('app id'), @@ -86,14 +86,14 @@ sub editUserSettingsForm { subtext => $i18n->get('get app id'), ); - $f->text( + $f->addField( "text", name => 'facebookAuthSecret', value => $setting->get( 'facebookAuthSecret' ), label => $i18n->get('secret'), hoverHelp => $i18n->get('secret help'), ); - $f->template( + $f->addField( "template", name => 'facebookAuthTemplateIdChooseUsername', value => $setting->get( 'facebookAuthTemplateIdChooseUsername' ), label => $i18n->get('choose username template'), @@ -101,7 +101,7 @@ sub editUserSettingsForm { namespace => 'Auth/Facebook/ChooseUsername', ); - return $f->printRowsOnly; + return $f; } #---------------------------------------------------------------------------- diff --git a/lib/WebGUI/Auth/LDAP.pm b/lib/WebGUI/Auth/LDAP.pm index 9d9fc1cef..68e189e38 100644 --- a/lib/WebGUI/Auth/LDAP.pm +++ b/lib/WebGUI/Auth/LDAP.pm @@ -12,7 +12,7 @@ package WebGUI::Auth::LDAP; use strict; use WebGUI::Auth; -use WebGUI::HTMLForm; +use WebGUI::FormBuilder; use WebGUI::Form; use WebGUI::LDAPLink; use WebGUI::Workflow; @@ -327,21 +327,9 @@ sub editUserFormSave { sub editUserSettingsForm { my $self = shift; - my $f = WebGUI::HTMLForm->new($self->session); - my $ldapConnection = WebGUI::Form::selectBox($self->session, { - name=>"ldapConnection", - options=>WebGUI::LDAPLink->getList($self->session,), - value=>[$self->session->setting->get("ldapConnection")] - }); - my $i18n = WebGUI::International->new($self->session,'AuthLDAP'); - my $ldapConnectionLabel = $i18n->get("ldapConnection"); - my $buttons = ""; - if($self->session->setting->get("ldapConnection")) { - $buttons = $self->session->icon->edit("op=editLDAPLink;returnUrl=".$self->session->url->escape($self->session->url->page("op=editSettings")).";llid=".$self->session->setting->get("ldapConnection")); - } - $buttons .= $self->session->icon->manage("op=listLDAPLinks;returnUrl=".$self->session->url->escape($self->session->url->page("op=editSettings"))); - $f->raw(qq|$ldapConnectionLabel$ldapConnection $buttons|); - return $f->printRowsOnly; + my $f = WebGUI::FormBuilder->new($self->session); + $f->addField( "LdapLink", name => "ldapConnection" ); + return $f; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Auth/Twitter.pm b/lib/WebGUI/Auth/Twitter.pm index d8df7e63f..dec1a7e9f 100644 --- a/lib/WebGUI/Auth/Twitter.pm +++ b/lib/WebGUI/Auth/Twitter.pm @@ -69,16 +69,16 @@ sub editUserSettingsForm { my $keyUrl = 'http://dev.twitter.com/apps/new'; - my $f = WebGUI::HTMLForm->new( $session ); + my $f = WebGUI::FormBuilder->new( $session ); - $f->yesNo( + $f->addField( "yesNo", name => 'twitterEnabled', value => $setting->get( 'twitterEnabled' ), label => $i18n->get('enabled'), hoverHelp => $i18n->get('enabled help'), ); - $f->text( + $f->addField( "text", name => 'twitterConsumerKey', value => $setting->get( 'twitterConsumerKey' ), label => $i18n->get('consumer key'), @@ -86,14 +86,14 @@ sub editUserSettingsForm { subtext => sprintf( $i18n->get('get key'), ($keyUrl) x 2 ), ); - $f->text( + $f->addField( "text", name => 'twitterConsumerSecret', value => $setting->get( 'twitterConsumerSecret' ), label => $i18n->get('consumer secret'), hoverHelp => $i18n->get('consumer secret help'), ); - $f->template( + $f->addField( "template", name => 'twitterTemplateIdChooseUsername', value => $setting->get( 'twitterTemplateIdChooseUsername' ), label => $i18n->get('choose username template'), @@ -101,7 +101,7 @@ sub editUserSettingsForm { namespace => 'Auth/Twitter/ChooseUsername', ); - return $f->printRowsOnly; + return $f; } #---------------------------------------------------------------------------- diff --git a/lib/WebGUI/Auth/WebGUI.pm b/lib/WebGUI/Auth/WebGUI.pm index b704f1f18..fb5dedf19 100644 --- a/lib/WebGUI/Auth/WebGUI.pm +++ b/lib/WebGUI/Auth/WebGUI.pm @@ -15,7 +15,7 @@ use strict; use URI; use WebGUI::Asset::Template; use WebGUI::Auth; -use WebGUI::HTMLForm; +use WebGUI::FormBuilder; use WebGUI::Macro; use WebGUI::Mail::Send; use WebGUI::Storage; @@ -154,39 +154,39 @@ or an empty string if the check was successful. sub editUserForm { my $self = shift; my $userData = $self->get; - my $f = WebGUI::HTMLForm->new($self->session); + my $f = WebGUI::FormBuilder->new($self->session); my $i18n = WebGUI::International->new($self->session); - $f->password( + $f->addField( "password", name=>"authWebGUI.identifier", label=>$i18n->get(51), value=>"password", extras=>'autocomplete="off"', ); - $f->interval( - -name=>"authWebGUI.passwordTimeout", - -label=>$i18n->get(16,'AuthWebGUI'), - -value=>$userData->{passwordTimeout}, - -defaultValue=>$self->session->setting->get("webguiPasswordTimeout") + $f->addField( "interval", + name=>"authWebGUI.passwordTimeout", + label=>$i18n->get(16,'AuthWebGUI'), + value=>$userData->{passwordTimeout}, + defaultValue=>$self->session->setting->get("webguiPasswordTimeout") ); my $userChange = $self->session->setting->get("webguiChangeUsername"); if($userChange || $userChange eq "0"){ $userChange = $userData->{changeUsername}; } - $f->yesNo( - -name=>"authWebGUI.changeUsername", - -value=>$userChange, - -label=>$i18n->get(21,'AuthWebGUI') + $f->addField( "yesNo", + name=>"authWebGUI.changeUsername", + value=>$userChange, + label=>$i18n->get(21,'AuthWebGUI') ); my $passwordChange = $self->session->setting->get("webguiChangePassword"); if($passwordChange || $passwordChange eq "0"){ $passwordChange = $userData->{changePassword}; } - $f->yesNo( - -name=>"authWebGUI.changePassword", - -value=>$passwordChange, - -label=>$i18n->get(20,'AuthWebGUI') + $f->addField( "yesNo", + name=>"authWebGUI.changePassword", + value=>$passwordChange, + label=>$i18n->get(20,'AuthWebGUI') ); - return $f->printRowsOnly; + return $f; } #------------------------------------------------------------------- @@ -233,165 +233,165 @@ sub editUserFormSave { sub editUserSettingsForm { my $self = shift; my $i18n = WebGUI::International->new($self->session,'AuthWebGUI'); - my $f = WebGUI::HTMLForm->new($self->session); + my $f = WebGUI::FormBuilder->new($self->session); - $f->integer( - -name => "webguiPasswordLength", - -value => $self->session->setting->get("webguiPasswordLength"), - -label => $i18n->get(15), - -hoverHelp => $i18n->get('15 help'), + $f->addField( "integer", + name => "webguiPasswordLength", + value => $self->session->setting->get("webguiPasswordLength"), + label => $i18n->get(15), + hoverHelp => $i18n->get('15 help'), ); - $f->integer( - -name => "webguiRequiredDigits", - -label => $i18n->get('setting webguiRequiredDigits'), - -value => $self->session->setting->get("webguiRequiredDigits"), - -hoverHelp => $i18n->get('setting webguiRequiredDigits help'), + $f->addField( "integer", + name => "webguiRequiredDigits", + label => $i18n->get('setting webguiRequiredDigits'), + value => $self->session->setting->get("webguiRequiredDigits"), + hoverHelp => $i18n->get('setting webguiRequiredDigits help'), ); - $f->integer( - -name => "webguiNonWordCharacters", - -label => $i18n->get('setting webguiNonWordCharacters'), - -value => $self->session->setting->get("webguiNonWordCharacters"), - -hoverHelp => $i18n->get('setting webguiNonWordCharacters help'), + $f->addField( "integer", + name => "webguiNonWordCharacters", + label => $i18n->get('setting webguiNonWordCharacters'), + value => $self->session->setting->get("webguiNonWordCharacters"), + hoverHelp => $i18n->get('setting webguiNonWordCharacters help'), ); - $f->integer( - -name => "webguiRequiredMixedCase", - -label => $i18n->get('setting webguiRequiredMixedCase'), - -value => $self->session->setting->get("webguiRequiredMixedCase"), - -hoverHelp => $i18n->get('setting webguiRequiredMixedCase help'), + $f->addField( "integer", + name => "webguiRequiredMixedCase", + label => $i18n->get('setting webguiRequiredMixedCase'), + value => $self->session->setting->get("webguiRequiredMixedCase"), + hoverHelp => $i18n->get('setting webguiRequiredMixedCase help'), ); - $f->interval( - -name => "webguiPasswordTimeout", - -label => $i18n->get(16), - -value => $self->session->setting->get("webguiPasswordTimeout"), - -hoverHelp => $i18n->get('16 help'), + $f->addField( "interval", + name => "webguiPasswordTimeout", + label => $i18n->get(16), + value => $self->session->setting->get("webguiPasswordTimeout"), + hoverHelp => $i18n->get('16 help'), ); - $f->yesNo( - -name => "webguiExpirePasswordOnCreation", - -value => $self->session->setting->get("webguiExpirePasswordOnCreation"), - -label => $i18n->get(9), - -hoverHelp => $i18n->get('9 help') + $f->addField( "yesNo", + name => "webguiExpirePasswordOnCreation", + value => $self->session->setting->get("webguiExpirePasswordOnCreation"), + label => $i18n->get(9), + hoverHelp => $i18n->get('9 help') ); - $f->yesNo( - -name => "webguiSendWelcomeMessage", - -value => $self->session->setting->get("webguiSendWelcomeMessage"), - -label => $i18n->get(868,'WebGUI'), - -hoverHelp => $i18n->get('868 help','WebGUI'), + $f->addField( "yesNo", + name => "webguiSendWelcomeMessage", + value => $self->session->setting->get("webguiSendWelcomeMessage"), + label => $i18n->get(868,'WebGUI'), + hoverHelp => $i18n->get('868 help','WebGUI'), ); - $f->HTMLArea( - -name => "webguiWelcomeMessage", - -value => $self->session->setting->get("webguiWelcomeMessage"), - -label => $i18n->get(869,'WebGUI'), - -hoverHelp => $i18n->get('869 help','WebGUI'), + $f->addField( "HTMLArea", + name => "webguiWelcomeMessage", + value => $self->session->setting->get("webguiWelcomeMessage"), + label => $i18n->get(869,'WebGUI'), + hoverHelp => $i18n->get('869 help','WebGUI'), ); - $f->yesNo( - -name => "webguiUseEmailAsUsername", - -value => $self->session->setting->get("webguiUseEmailAsUsername"), - -label => $i18n->get('use email as username label'), - -hoverHelp => $i18n->get('use email as username description'), + $f->addField( "yesNo", + name => "webguiUseEmailAsUsername", + value => $self->session->setting->get("webguiUseEmailAsUsername"), + label => $i18n->get('use email as username label'), + hoverHelp => $i18n->get('use email as username description'), ); - $f->yesNo( - -name => "webguiChangeUsername", - -value => $self->session->setting->get("webguiChangeUsername"), - -label => $i18n->get(19), - -hoverHelp => $i18n->get('19 help'), + $f->addField( "yesNo", + name => "webguiChangeUsername", + value => $self->session->setting->get("webguiChangeUsername"), + label => $i18n->get(19), + hoverHelp => $i18n->get('19 help'), ); - $f->yesNo( - -name => "webguiChangePassword", - -value => $self->session->setting->get("webguiChangePassword"), - -label => $i18n->get(18), - -hoverHelp => $i18n->get('18 help'), + $f->addField( "yesNo", + name => "webguiChangePassword", + value => $self->session->setting->get("webguiChangePassword"), + label => $i18n->get(18), + hoverHelp => $i18n->get('18 help'), ); - $f->selectList( - -name => "webguiPasswordRecovery", - -value => $self->session->setting->get("webguiPasswordRecovery"), - -label => $i18n->get(6), - -hoverHelp => $i18n->get('webguiPasswordRecovery hoverHelp'), - -options => $self->getPasswordRecoveryTypesAvailable, - -size => 1, - -multiple => 0, + $f->addField( "selectList", + name => "webguiPasswordRecovery", + value => $self->session->setting->get("webguiPasswordRecovery"), + label => $i18n->get(6), + hoverHelp => $i18n->get('webguiPasswordRecovery hoverHelp'), + options => $self->getPasswordRecoveryTypesAvailable, + size => 1, + multiple => 0, ); - $f->yesNo( - -name => "webguiPasswordRecoveryRequireUsername", - -value => $self->session->setting->get("webguiPasswordRecoveryRequireUsername"), - -label => $i18n->get('require username for password recovery'), - -hoverHelp => $i18n->get('webguiPasswordRecoveryRequireUsername hoverHelp'), + $f->addField( "yesNo", + name => "webguiPasswordRecoveryRequireUsername", + value => $self->session->setting->get("webguiPasswordRecoveryRequireUsername"), + label => $i18n->get('require username for password recovery'), + hoverHelp => $i18n->get('webguiPasswordRecoveryRequireUsername hoverHelp'), ); - $f->yesNo( - -name => "webguiValidateEmail", - -value => $self->session->setting->get("webguiValidateEmail"), - -label => $i18n->get('validate email'), - -hoverHelp => $i18n->get('validate email help'), + $f->addField( "yesNo", + name => "webguiValidateEmail", + value => $self->session->setting->get("webguiValidateEmail"), + label => $i18n->get('validate email'), + hoverHelp => $i18n->get('validate email help'), ); - $f->yesNo( - -name => "webguiUseCaptcha", - -value => $self->session->setting->get("webguiUseCaptcha"), - -label => $i18n->get('use captcha'), - -hoverHelp => $i18n->get('use captcha help'), + $f->addField( "yesNo", + name => "webguiUseCaptcha", + value => $self->session->setting->get("webguiUseCaptcha"), + label => $i18n->get('use captcha'), + hoverHelp => $i18n->get('use captcha help'), ); - $f->template( - -name => "webguiAccountTemplate", - -value => $self->session->setting->get("webguiAccountTemplate"), - -namespace => "Auth/WebGUI/Account", - -label => $i18n->get("account template"), - -hoverHelp => $i18n->get("account template help"), + $f->addField( "template", + name => "webguiAccountTemplate", + value => $self->session->setting->get("webguiAccountTemplate"), + namespace => "Auth/WebGUI/Account", + label => $i18n->get("account template"), + hoverHelp => $i18n->get("account template help"), ); - $f->template( - -name => "webguiCreateAccountTemplate", - -value => $self->session->setting->get("webguiCreateAccountTemplate"), - -namespace => "Auth/WebGUI/Create", - -label => $i18n->get("create account template"), - -hoverHelp => $i18n->get("create account template help"), + $f->addField( "template", + name => "webguiCreateAccountTemplate", + value => $self->session->setting->get("webguiCreateAccountTemplate"), + namespace => "Auth/WebGUI/Create", + label => $i18n->get("create account template"), + hoverHelp => $i18n->get("create account template help"), ); - $f->template( - -name => "webguiDeactivateAccountTemplate", - -value => $self->session->setting->get("webguiDeactivateAccountTemplate"), - -namespace => "Auth/WebGUI/Deactivate", - -label => $i18n->get("deactivate account template"), - -hoverHelp => $i18n->get("deactivate account template help"), + $f->addField( "template", + name => "webguiDeactivateAccountTemplate", + value => $self->session->setting->get("webguiDeactivateAccountTemplate"), + namespace => "Auth/WebGUI/Deactivate", + label => $i18n->get("deactivate account template"), + hoverHelp => $i18n->get("deactivate account template help"), ); - $f->template( - -name => "webguiExpiredPasswordTemplate", - -value => $self->session->setting->get("webguiExpiredPasswordTemplate"), - -namespace => "Auth/WebGUI/Expired", - -label => $i18n->get("expired password template"), - -hoverHelp => $i18n->get("expired password template"), + $f->addField( "template", + name => "webguiExpiredPasswordTemplate", + value => $self->session->setting->get("webguiExpiredPasswordTemplate"), + namespace => "Auth/WebGUI/Expired", + label => $i18n->get("expired password template"), + hoverHelp => $i18n->get("expired password template"), ); - $f->template( - -name => "webguiLoginTemplate", - -value => $self->session->setting->get("webguiLoginTemplate"), - -namespace => "Auth/WebGUI/Login", - -label => $i18n->get("login template"), - -hoverHelp => $i18n->get("login template help"), + $f->addField( "template", + name => "webguiLoginTemplate", + value => $self->session->setting->get("webguiLoginTemplate"), + namespace => "Auth/WebGUI/Login", + label => $i18n->get("login template"), + hoverHelp => $i18n->get("login template help"), ); - $f->template( - -name => "webguiPasswordRecoveryTemplate", - -value => $self->session->setting->get("webguiPasswordRecoveryTemplate"), - -namespace => "Auth/WebGUI/Recovery2", - -label => $i18n->get("password recovery template"), - -hoverHelp => $i18n->get("password recovery template help") + $f->addField( "template", + name => "webguiPasswordRecoveryTemplate", + value => $self->session->setting->get("webguiPasswordRecoveryTemplate"), + namespace => "Auth/WebGUI/Recovery2", + label => $i18n->get("password recovery template"), + hoverHelp => $i18n->get("password recovery template help") ); - $f->template( - -name => "webguiPasswordRecoveryEmailTemplate", - -value => $self->session->setting->get('webguiPasswordRecoveryEmailTemplate'), - -label => $i18n->get('Password Recovery Email Template'), - -hoverHelp => $i18n->get("password recovery email template help"), - -namespace => "Auth/WebGUI/RecoveryEmail", + $f->addField( "template", + name => "webguiPasswordRecoveryEmailTemplate", + value => $self->session->setting->get('webguiPasswordRecoveryEmailTemplate'), + label => $i18n->get('Password Recovery Email Template'), + hoverHelp => $i18n->get("password recovery email template help"), + namespace => "Auth/WebGUI/RecoveryEmail", ); - $f->template( - -name => "webguiWelcomeMessageTemplate", - -value => $self->session->setting->get("webguiWelcomeMessageTemplate"), - -namespace => "Auth/WebGUI/Welcome", - -label => $i18n->get("welcome message template"), - -hoverHelp => $i18n->get("welcome message template help") + $f->addField( "template", + name => "webguiWelcomeMessageTemplate", + value => $self->session->setting->get("webguiWelcomeMessageTemplate"), + namespace => "Auth/WebGUI/Welcome", + label => $i18n->get("welcome message template"), + hoverHelp => $i18n->get("welcome message template help") ); - $f->template( - -name => "webguiAccountActivationTemplate", - -value => $self->session->setting->get("webguiAccountActivationTemplate"), - -namespace => "Auth/WebGUI/Activation", - -label => $i18n->get("account activation template"), - -hoverHelp => $i18n->get("account activation template help") + $f->addField( "template", + name => "webguiAccountActivationTemplate", + value => $self->session->setting->get("webguiAccountActivationTemplate"), + namespace => "Auth/WebGUI/Activation", + label => $i18n->get("account activation template"), + hoverHelp => $i18n->get("account activation template help") ); - return $f->printRowsOnly; + return $f; } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index 41b998227..9a419ada0 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -606,6 +606,14 @@ sub www_editSettings { $output .= ''; } + # Start the form + my $tabform = WebGUI::FormBuilder->new($session, action => '?op=saveSettings' ); + $tabform->addField( 'csrfToken', name => 'csrfToken' ); + $tabform->addField( "hidden", + name => "op", + value => "saveSettings" + ); + # Available tabs # TODO: Build this from the definition instead. tie my %tabs, 'Tie::IxHash', ( @@ -619,25 +627,19 @@ sub www_editSettings { auth => { label => $i18n->get("authentication") }, perms => { label => $i18n->get("permissions") }, ); - - # Start the form - my $tabform = WebGUI::TabForm->new($session,\%tabs); - $tabform->hidden({ - name => "op", - value => "saveSettings" - }); + for my $tabName ( keys %tabs ) { + $tabform->addTab( name => $tabName, %{$tabs{$tabName}} ); + } my $definitions = definition($session, $i18n); foreach my $definition (@{$definitions}) { - $tabform->getTab($definition->{tab})->dynamicField(%{$definition}); + $tabform->getTab($definition->{tab})->addField( $definition->{fieldType}, %$definition ); } # Get fieldsets for avaiable auth methods - foreach (@{$session->config->get("authMethods")}) { - $tabform->getTab("auth")->fieldSetStart($_); + foreach my $authName (@{$session->config->get("authMethods")}) { my $authInstance = WebGUI::Operation::Auth::getInstance($session,$_,1); - $tabform->getTab("auth")->raw($authInstance->editUserSettingsForm); - $tabform->getTab("auth")->fieldSetEnd; + $tabform->getTab( "auth" )->addFieldset( $authInstance->editUserSettingsForm, name => $authName, label => $authName ); } # Get fieldsets for avaiable account methods @@ -660,20 +662,18 @@ sub www_editSettings { } #If editUserSettingsForm is empty, skip it - next if $settingsForm eq ""; + next unless $settingsForm; #Set the title of the fieldset my $title = $account->{title}; WebGUI::Macro::process($title); #Print the settings form for this account pluggin - $tabform->getTab("account")->fieldSetStart($title); - $tabform->getTab("account")->raw($settingsForm); - $tabform->getTab("account")->fieldSetEnd; + $tabform->getTab("account")->addFieldset( $settingsForm, name => $account->{identifier}, label => $title ); } - $tabform->submit(); - $output .= $tabform->print; + $tabform->addField( "submit", name => "submit" ); + $output .= $tabform->toHtml; my $ac = WebGUI::AdminConsole->new($session,"settings"); return $ac->render($output); @@ -707,6 +707,7 @@ sub www_saveSettings { my $authErrors = $authInstance->editUserSettingsFormSave; if ($authErrors) { + $session->log->warn( "Problem saving settings: " . $authErrors ); push @errors, @{ $authErrors }; } } diff --git a/t/Operation/Settings.t b/t/Operation/Settings.t new file mode 100644 index 000000000..70732afa1 --- /dev/null +++ b/t/Operation/Settings.t @@ -0,0 +1,75 @@ +# vim:syntax=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 +#------------------------------------------------------------------ + +# Write a little about what this script tests. +# +# + +use FindBin; +use strict; +use lib "$FindBin::Bin/lib"; +use Test::More; +use Test::Deep; +use WebGUI::Test; # Must use this before any other WebGUI modules +use WebGUI::Test::Mechanize; +use WebGUI::Session; + +#---------------------------------------------------------------------------- +# Init +my $session = WebGUI::Test->session; + + +#---------------------------------------------------------------------------- +# Tests + +#---------------------------------------------------------------------------- +# Edit some settings up in here + +my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file ); +$mech->get_ok( '/' ); +$mech->session->user({ userId => 3 }); + +my %newSettings = ( + # Test some normal settings + companyName => 'Shawshank Penetentiary', + companyEmail => 'warden@shawshank.justice.gov', + + # Test some Auth settings + facebookAuthEnabled => 1, + ldapConnection => 'SOME_RANDOM_ID', + twitterEnabled => 1, + webguiPasswordLength => 9_001, + + # Test some Account settings + overrideAbleToBeFriend => 1, + inboxInviteUserSubject => 'Your incarceration adventure begins here!', +); + +$mech->get_ok( '/?op=editSettings' ); +$mech->submit_form_ok({ + fields => \%newSettings, + }, + "Settings edited" +); + +my $testSettings = $session->db->buildHashRef("select * from settings", [], {noOrder => 1}); +cmp_deeply( + $testSettings, + superhashof( \%newSettings ), + "Settings are set", +); + +diag $mech->content; +diag explain $testSettings; + +done_testing; + +#vim:ft=perl