# 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 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 WebGUI::Test->addToCleanup($user{'2'}); my $versionTag = WebGUI::VersionTag->getWorking( $session ); $versionTag->set( { name => "Collaboration Test" } ); WebGUI::Test->addToCleanup($versionTag); 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; #vim:ft=perl