diff options
author | Russ Allbery <eagle@eyrie.org> | 2014-07-16 16:32:03 -0700 |
---|---|---|
committer | Russ Allbery <eagle@eyrie.org> | 2014-07-16 16:32:03 -0700 |
commit | 27f4e81ddb42440345e6dd01a4943cb57ee5da39 (patch) | |
tree | 3a4e9adfb0e1039c8297fbf7687acb8acd1494df | |
parent | 6409733ee3b7b1910dc1c166a392cc628834146c (diff) | |
parent | 3e913fa65e9e5c1d687372b89b5467edb3e77973 (diff) |
Imported Upstream version 1.1
-rw-r--r-- | Makefile.in | 8 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | perl/lib/Wallet/Admin.pm | 18 | ||||
-rw-r--r-- | perl/lib/Wallet/Object/Duo.pm | 4 | ||||
-rwxr-xr-x | perl/t/general/admin.t | 1 | ||||
-rwxr-xr-x | perl/t/general/server.t | 18 | ||||
-rwxr-xr-x | perl/t/object/duo.t | 2 |
7 files changed, 25 insertions, 31 deletions
diff --git a/Makefile.in b/Makefile.in index c2357f9..0633f5e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -104,13 +104,13 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/tests/client/full-t.in \ $(top_srcdir)/tests/client/prompt-t.in \ $(top_srcdir)/tests/client/rekey-t.in \ - $(top_srcdir)/portable/reallocarray.c \ - $(top_srcdir)/portable/asprintf.c \ $(top_srcdir)/portable/snprintf.c \ - $(top_srcdir)/portable/setenv.c \ $(top_srcdir)/portable/strlcpy.c \ + $(top_srcdir)/portable/asprintf.c \ + $(top_srcdir)/portable/strlcat.c \ + $(top_srcdir)/portable/reallocarray.c \ $(top_srcdir)/portable/mkstemp.c \ - $(top_srcdir)/portable/strlcat.c $(dist_sbin_SCRIPTS) \ + $(top_srcdir)/portable/setenv.c $(dist_sbin_SCRIPTS) \ $(top_srcdir)/build-aux/depcomp $(dist_man_MANS) \ $(dist_pkgdata_DATA) NEWS README TODO build-aux/ar-lib \ build-aux/compile build-aux/depcomp build-aux/install-sh \ @@ -67,11 +67,6 @@ wallet 1.1 (2014-07-16) are referencing. Should fix destroy in MySQL and other database engines that enforce referential integrity. - The initial creation and membership of the ADMIN ACL during database - initialization or reinitialization is no longer recorded in the - acl_history table. (This is fallout from making a specific type of - upgrade testable, and may be fixed in the future.) - The wallet server now requires Perl 5.8 or later (instead of 5.006 in previous versions) and is now built with Module::Build instead of ExtUtils::MakeMaker. This should be transparent to anyone not working diff --git a/perl/lib/Wallet/Admin.pm b/perl/lib/Wallet/Admin.pm index 8481979..33e2a7d 100644 --- a/perl/lib/Wallet/Admin.pm +++ b/perl/lib/Wallet/Admin.pm @@ -98,20 +98,10 @@ sub initialize { $self->default_data; # Create a default admin ACL. - eval { - my $guard = $self->{schema}->txn_scope_guard; - $self->{schema}->resultset ('Acl')->populate ([ - [ qw/ac_id ac_name/ ], - [ 1, 'ADMIN' ], - ]); - $self->{schema}->resultset ('AclEntry')->populate ([ - [ qw/ae_id ae_scheme ae_identifier/ ], - [ 1, 'krb5', $user ], - ]); - $guard->commit; - }; - if ($@) { - $self->error ("cannot add ADMIN ACL: $@"); + my $schema = $self->{schema}; + my $acl = Wallet::ACL->create ('ADMIN', $schema, $user, 'localhost'); + unless ($acl->add ('krb5', $user, $user, 'localhost')) { + $self->error ($acl->error); return; } return 1; diff --git a/perl/lib/Wallet/Object/Duo.pm b/perl/lib/Wallet/Object/Duo.pm index e3fe2da..6edc4fa 100644 --- a/perl/lib/Wallet/Object/Duo.pm +++ b/perl/lib/Wallet/Object/Duo.pm @@ -105,7 +105,7 @@ sub create { # Create the object in Duo. require Net::Duo::Admin::Integration; my %data = ( - name => $name, + name => "$name ($Wallet::Config::DUO_TYPE)", notes => 'Managed by wallet', type => $Wallet::Config::DUO_TYPE, ); @@ -190,7 +190,7 @@ sub get { # We also need the admin server name, which we can get from the Duo object # configuration with a bit of JSON decoding. - my $json = JSON->new->utf8 (1); + my $json = JSON->new->utf8 (1)->relaxed (1); my $config = $json->decode (scalar slurp $Wallet::Config::DUO_KEY_FILE); # Construct the returned file. diff --git a/perl/t/general/admin.t b/perl/t/general/admin.t index 7c62932..47396c6 100755 --- a/perl/t/general/admin.t +++ b/perl/t/general/admin.t @@ -61,7 +61,6 @@ is ($server->acl_add ('ADMIN', 'base', 'foo'), 1, ' and adding a base ACL now works'); # Test re-initialization of the database. -$Wallet::Schema::VERSION = '0.07'; is ($admin->reinitialize ('admin@EXAMPLE.COM'), 1, ' and re-initialization succeeds'); diff --git a/perl/t/general/server.t b/perl/t/general/server.t index b270733..0a527a5 100755 --- a/perl/t/general/server.t +++ b/perl/t/general/server.t @@ -54,8 +54,18 @@ is ($server->acl_show ('ADMIN'), is ($server->acl_show (1), "Members of ACL ADMIN (id: 1) are:\n krb5 $admin\n", ' including by number'); -is ($server->acl_history ('ADMIN'), '', ' and initial history is empty'); -is ($server->acl_history (1), '', ' including by number'); +my $history = <<"EOO"; +DATE create + by $admin from $host +DATE add krb5 $admin + by $admin from $host +EOO +my $result = $server->acl_history ('ADMIN'); +$result =~ s/^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d/DATE/gm; +is ($result, $history, ' and displaying history works'); +$result = $server->acl_history (1); +$result =~ s/^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d/DATE/gm; +is ($result, $history, ' including by number'); is ($server->acl_create (3), undef, 'Cannot create ACL with a numeric name'); is ($server->error, 'ACL name may not be all numbers', ' and returns the right error'); @@ -107,7 +117,7 @@ is ($server->acl_add ('both', 'krb5', $user2), 1, is ($server->acl_show ('both'), "Members of ACL both (id: 4) are:\n krb5 $user1\n krb5 $user2\n", ' and show returns the correct result'); -my $history = <<"EOO"; +$history = <<"EOO"; DATE create by $admin from $host DATE add krb5 $user1 @@ -115,7 +125,7 @@ DATE add krb5 $user1 DATE add krb5 $user2 by $admin from $host EOO -my $result = $server->acl_history ('both'); +$result = $server->acl_history ('both'); $result =~ s/^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d/DATE/gm; is ($result, $history, ' as does history'); is ($server->acl_add ('empty', 'krb5', $user1), 1, ' and another to empty'); diff --git a/perl/t/object/duo.t b/perl/t/object/duo.t index 4229afe..f73fe7e 100755 --- a/perl/t/object/duo.t +++ b/perl/t/object/duo.t @@ -70,7 +70,7 @@ $Wallet::Config::DUO_KEY_FILE = 't/data/duo/keys.json'; # Test creating an integration. note ('Test creating an integration'); my $expected = { - name => 'test', + name => 'test (unix)', notes => 'Managed by wallet', type => 'unix', }; |