- added: Inbox is now pruned after 1 year

- Added about a hundred tests for Collaboration system, Post, and Thread 
permissions
- Cleaned up code tested by the aforementioned tests
- Fixed all Test::WWW::Mechanize tests and updated the skeleton. Should be 
usable now.
This commit is contained in:
Doug Bell 2008-04-26 02:23:10 +00:00
parent ea1dac4064
commit 98992b8920
16 changed files with 742 additions and 120 deletions

View file

@ -0,0 +1,115 @@
# vim:syntax=perl
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2008 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 WebGUI::Test; # Must use this before any other WebGUI modules
use WebGUI::Session;
use WebGUI::Test::Maker::Permission;
#----------------------------------------------------------------------------
# Init
my $session = WebGUI::Test->session;
$session->user( { userId => 3 } );
my $maker = WebGUI::Test::Maker::Permission->new;
my $node = WebGUI::Asset->getImportNode( $session );
my %user;
$user{"2"} = WebGUI::User->new( $session, "new" );
$user{"2"}->addToGroups( ['2'] ); # Registered user
my $versionTag = WebGUI::VersionTag->getWorking( $session );
$versionTag->set( { name => "Collaboration Test" } );
my @addArgs = ( undef, undef, { skipAutoCommitWorkflows => 1 } );
my $collab
= $node->addChild({
className => "WebGUI::Asset::Wobject::Collaboration",
groupIdView => 7, # Everyone
groupIdEdit => 3, # Admins
ownerUserId => 3, # Admin
postGroupId => 2, # Registered Users
canStartThreadGroupId => 3, # Admin
}, @addArgs );
$versionTag->commit( { timeout => 1_000_000 } );
# Re-load the collab to get the newly committed properties
$collab = WebGUI::Asset->newByDynamicClass( $session, $collab->getId );
#----------------------------------------------------------------------------
# Tests
plan tests => 36;
#----------------------------------------------------------------------------
# Permissions for collaboration systems
# View
$maker->prepare( {
object => $collab,
method => 'canView',
pass => [ '1', $user{"2"}, '3', ],
} )->run;
# Edit
$maker->prepare( {
object => $collab,
method => 'canEdit',
pass => [ '3', ],
fail => [ '1', $user{"2"}, ],
} )->run;
# Post
$maker->prepare( {
object => $collab,
method => 'canPost',
pass => [ $user{"2"}, '3', ],
fail => [ '1', ],
} )->run;
# Post Thread
$maker->prepare( {
object => $collab,
method => 'canStartThread',
pass => [ '3', ],
fail => [ '1', $user{"2"}, ],
} )->run;
# Subscribe
$maker->prepare( {
object => $collab,
method => 'canSubscribe',
pass => [ $user{"2"}, '3', ],
fail => [ '1', ],
} )->run;
# Moderate
$maker->prepare( {
object => $collab,
method => 'canModerate',
pass => [ '3', ],
fail => [ '1', $user{"2"}, ],
} )->run;
#----------------------------------------------------------------------------
# Cleanup
END {
for my $user ( values %user ) {
$user->delete;
}
$versionTag->rollback;
}

View file

@ -33,6 +33,9 @@ my %oldSettings;
# userFunctionStyleId
$oldSettings{ userFunctionStyleId } = $session->setting->get( 'userFunctionStyleId' );
$session->setting->set( 'userFunctionStyleId', 'PBtmpl0000000000000132' );
# specialState
$oldSettings{ specialState } = $session->setting->get( 'specialState' );
$session->setting->set( 'specialState', '' );
# Create a user for testing purposes
my $user = WebGUI::User->new( $session, "new" );
@ -62,6 +65,15 @@ $versionTags[-1]->commit;
#----------------------------------------------------------------------------
# Tests
if ( !eval { require Test::WWW::Mechanize; 1; } ) {
plan skip_all => 'Cannot load Test::WWW::Mechanize. Will not test.';
}
$mech = Test::WWW::Mechanize->new;
$mech->get( $baseUrl );
if ( !$mech->success ) {
plan skip_all => "Cannot load URL '$baseUrl'. Will not test.";
}
plan tests => 6; # Increment this number for each test you create
#----------------------------------------------------------------------------