summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xperl/t/schema.t2
-rwxr-xr-xperl/t/verifier.t20
-rwxr-xr-xtests/server/backend-t18
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) {