Skip to content

Commit

Permalink
Role prefix tests pass
Browse files Browse the repository at this point in the history
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@2472 4979c152-3d1c-0410-bac9-87ea11338e46
  • Loading branch information
einhverfr committed Mar 4, 2009
1 parent 2cc99c9 commit c0da2bd
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
7 changes: 6 additions & 1 deletion LedgerSMB.pm
Expand Up @@ -609,7 +609,7 @@ sub is_allowed_role {
my ($self, $args) = @_;
my @roles = @{$args->{allowed_roles}};
for my $role (@roles){
my @roleset = grep m/^$role$/, @{$self->{_roles}};
my @roleset = grep m/^$self->{_role_prefix}$role$/, @{$self->{_roles}};
if (scalar @roleset){
return 1;
}
Expand Down Expand Up @@ -742,6 +742,11 @@ sub _db_init {
WHERE setting_key = 'version'");
$sth->execute;
my ($dbversion) = $sth->fetchrow_array;
$sth = $dbh->prepare("
SELECT value FROM defaults
WHERE setting_key = 'role_prefix'");
$sth->execute;
($self->{_role_prefix}) = $sth->fetchrow_array;
if ($dbversion ne $self->{dbversion}){
$self->error("Database is not the expected version. Was $dbversion, expected $self->{dbversion}");
}
Expand Down
12 changes: 10 additions & 2 deletions t/11-ledgersmb.t
Expand Up @@ -5,7 +5,7 @@ use warnings;

$ENV{TMPDIR} = 't/var';

use Test::More 'no_plan';
use Test::More tests => 92;
use Test::Exception;
use Test::Trap qw(trap $trap);
use Math::BigFloat;
Expand Down Expand Up @@ -246,7 +246,7 @@ is($lsmb->{pear_1}, 2, 'merge: Index 1, added pear as pear_1');
is($lsmb->{peach_1}, 3, 'merge: Index 1, added peach as peach_1');
like($lsmb->{path}, qr#bin/(lynx|mozilla)#, 'merge: Index 1, left existing key');

# $lsmb->is_allowed_role checks
# $lsmb->is_allowed_role checks, no prefix
$lsmb = LedgerSMB->new();
$lsmb->{_roles} = ['apple', 'pear'];
is($lsmb->is_allowed_role({allowed_roles => ['pear']}), 1,
Expand All @@ -260,3 +260,11 @@ is($lsmb->is_allowed_role({'allowed_roles' => []}), 0,
delete $lsmb->{_roles};
is($lsmb->is_allowed_role({'allowed_roles' => ['apple']}), 0,
'is_allowed_role: no roles for user');

# $lsmb->is_allowed_role checks, prefix
$lsmb = LedgerSMB->new();
$lsmb->{_role_prefix} = 'test__';

$lsmb->{_roles} = ['test__apple', 'test__pear'];
is($lsmb->is_allowed_role({allowed_roles => ['pear']}), 1,
'is_allowed_role: allowed role with prefix');

0 comments on commit c0da2bd

Please sign in to comment.