diff options
| -rwxr-xr-x | perl/t/schema.t | 2 | ||||
| -rwxr-xr-x | perl/t/verifier.t | 20 | ||||
| -rwxr-xr-x | tests/server/backend-t | 18 | 
3 files changed, 32 insertions, 8 deletions
| diff --git a/perl/t/schema.t b/perl/t/schema.t index 7f0aea4..40759db 100755 --- a/perl/t/schema.t +++ b/perl/t/schema.t @@ -21,7 +21,7 @@ ok (defined $schema, 'Wallet::Schema creation');  ok ($schema->isa ('Wallet::Schema'), ' and class verification');  my @sql = $schema->sql;  ok (@sql > 0, 'sql() returns something'); -is (scalar (@sql), 28, ' and returns the right number of statements'); +is (scalar (@sql), 29, ' and returns the right number of statements');  # Connect to a database and test create.  db_setup; diff --git a/perl/t/verifier.t b/perl/t/verifier.t index 74d7ba8..f56f5fa 100755 --- a/perl/t/verifier.t +++ b/perl/t/verifier.t @@ -3,14 +3,15 @@  # Tests for the basic wallet ACL verifiers.  #  # Written by Russ Allbery <rra@stanford.edu> -# Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University +# Copyright 2007, 2008, 2010 Board of Trustees, Leland Stanford Jr. University  #  # See LICENSE for licensing terms. -use Test::More tests => 47; +use Test::More tests => 57;  use Wallet::ACL::Base;  use Wallet::ACL::Krb5; +use Wallet::ACL::Krb5::Regex;  use Wallet::ACL::NetDB;  use Wallet::ACL::NetDB::Root;  use Wallet::Config; @@ -39,6 +40,21 @@ is ($verifier->error, 'no principal specified', ' and right error');  is ($verifier->check ('rra@stanford.edu', ''), undef, 'Empty ACL');  is ($verifier->error, 'malformed krb5 ACL', ' and right error'); +$verifier = Wallet::ACL::Krb5::Regex->new; +isa_ok ($verifier, 'Wallet::ACL::Krb5::Regex', 'krb5-regex verifier'); +is ($verifier->check ('rra@stanford.edu', '.*@stanford\.edu\z'), 1, +    'Simple check'); +is ($verifier->check ('rra@stanford.edu', '^a.*@stanford\.edu'), 0, +    'Simple failure'); +is ($verifier->error, undef, 'No error set'); +is ($verifier->check (undef, '^rra@stanford\.edu\z'), undef, +    'Undefined principal'); +is ($verifier->error, 'no principal specified', ' and right error'); +is ($verifier->check ('rra@stanford.edu', ''), undef, 'Empty ACL'); +is ($verifier->error, 'no ACL specified', ' and right error'); +is ($verifier->check ('rra@stanford.edu', '(rra'), undef, 'Malformed regex'); +is ($verifier->error, 'malformed krb5-regex ACL', ' and right error'); +  # Tests for the NetDB verifiers.  Skip these if we don't have a keytab or if  # we can't find remctld.  SKIP: { diff --git a/tests/server/backend-t b/tests/server/backend-t index b58d02c..a618391 100755 --- a/tests/server/backend-t +++ b/tests/server/backend-t @@ -289,11 +289,19 @@ for my $command (sort keys %acl_commands) {          my @args = @base;          $args[$arg] = 'foo;bar';          ($out, $err) = run_backend ('acl', $command, @args); -        is ($err, "invalid characters in argument: foo;bar\n", -            "Invalid arguments for acl $command $arg"); -        is ($OUTPUT, "error for admin (1.2.3.4): invalid characters in" -            . " argument: foo;bar\n", ' and syslog correct'); -        is ($out, "$new\n", ' and nothing ran'); +        if (($command eq 'add' or $command eq 'remove') and $arg == 2) { +            is ($err, '', 'Add/remove allows any characters'); +            is ($OUTPUT, "command acl $command @args[0..2] from admin" +                . " (1.2.3.4) succeeded\n", ' and success logged'); +            is ($out, "$new\nacl_$command @args[0..2]\n", +                ' and calls the right method'); +        } else { +            is ($err, "invalid characters in argument: foo;bar\n", +                "Invalid arguments for acl $command $arg"); +            is ($OUTPUT, "error for admin (1.2.3.4): invalid characters in" +                . " argument: foo;bar\n", ' and syslog correct'); +            is ($out, "$new\n", ' and nothing ran'); +        }      }  }  for my $command (sort keys %flag_commands) { | 
